FBDataSet (библиотека доступа к данным FireBird/Interbase.)
Модератор: Модераторы
- Attid
- долгожитель
- Сообщения: 2588
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
извеняюсь это я ступил
RecordCount у нас соответсвено это кол-во отфеченых записей, а я обращался с ними как со всеми
Код: Выделить всё
ds.Open;
while not ds.EOF do
begin
Memo1.Lines.Add('ds.RecordCount='+IntToStr(ds.RecordCount)+' ds.RecNo='+IntToStr(ds.RecNo));
ds.Next;
end;
ds.RecordCount=10 ds.RecNo=1
ds.RecordCount=10 ds.RecNo=2
ds.RecordCount=10 ds.RecNo=3
ds.RecordCount=10 ds.RecNo=4
ds.RecordCount=10 ds.RecNo=5
ds.RecordCount=10 ds.RecNo=6
ds.RecordCount=10 ds.RecNo=7
ds.RecordCount=10 ds.RecNo=8
ds.RecordCount=10 ds.RecNo=9
ds.RecordCount=10 ds.RecNo=10
ds.RecordCount=11 ds.RecNo=11
ds.RecordCount=12 ds.RecNo=12
ds.RecordCount=13 ds.RecNo=13
RecordCount у нас соответсвено это кол-во отфеченых записей, а я обращался с ними как со всеми
alexs писал(а):А с художниками напряг - так что принимаю любые пожелания и предложения - сам нарисую плохо. я и для FBDataSet иконку - всеголиш перарботал от RxQuery
Честно говоря, иконка для FBDataSet - тихий ужас
Если не возражаете, то предлагаю для ознакомления результат моих экспериментов с IconFX. Иконка выдержана в стиле UIB, но без этих дурацких букв на лиловом фоне
http://ifolder.ru/5703076
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
vital
В целом направление верное - но хотелось бы чтобы иконка подразумевала то что это не просто набор данных - а именно запрос, причём закпрос к FireBird/Interbase.
А то напоминает чистый TTable из Delphi.
Т.е. данный рисунок можно использовать как фон, и добавить на передный план что либо, удоавлетворяющее вышеперечисленному - напрмер логотип птички? или ещё что?
В целом направление верное - но хотелось бы чтобы иконка подразумевала то что это не просто набор данных - а именно запрос, причём закпрос к FireBird/Interbase.
А то напоминает чистый TTable из Delphi.
Т.е. данный рисунок можно использовать как фон, и добавить на передный план что либо, удоавлетворяющее вышеперечисленному - напрмер логотип птички? или ещё что?
Сергей Смирнов писал(а):Префиксы не поддерживаются. Писать так:Код: Выделить всё
SELECT ID AS DETAIL_ID, ... FROM ROUTE
WHERE ID_DIR = :ID
чтобы поля с именем ID не было. Тогда инсерт будет:Код: Выделить всё
INSERT INTO ROUTE(ID, ID_DIR, ROUTE_INDEX, TAR_ZONE )
VALUES(:DETAIL_ID, :ID, ROUTE_INDEX, TAR_ZONE)
Как другой вариант - переименовать ID в мастере.
Также надо установить свойство деталь-датасета poFillEmptyEPFromParams=True
у меня при запросе такого вида:
Код: Выделить всё
select ORDERS.ORDER_ID,
ORDERS.ORDER_NUMBER,
ORDERS.ORDER_DATE,
ORDERS.ORDER_TYPE,
ORDERS.COMMENT,
LINKS.STUD_ID as LINKS_STUD_ID,
LINKS.ORDER_ID
from LINKS
join ORDERS on (ORDERS.ORDER_ID=LINKS.ORDER_ID)
where
LINKS_STUD_ID=:STUD_ID ругается в строке
Код: Выделить всё
LINKS_STUD_ID=:STUD_IDчто
Dinamic SQL Error
SQL Error Code = -206
Column unknown
LINKS_STUD_ID
At line 11, clumn 1
Column does not belong to referenced table
Error code: 249.
а при таком
Код: Выделить всё
select ORDERS.ORDER_ID,
ORDERS.ORDER_NUMBER,
ORDERS.ORDER_DATE,
ORDERS.ORDER_TYPE,
ORDERS.COMMENT,
LINKS.STUD_ID,
LINKS.ORDER_ID
from LINKS
join ORDERS on (ORDERS.ORDER_ID=LINKS.ORDER_ID)
where
LINKS.STUD_ID=:STUD_ID все нормально отрабатывает
- Attid
- долгожитель
- Сообщения: 2588
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
ViTality
джойнам вас на ибейсе научили , надо еще альясы приучится использовать
а что ругается то правельно, откуда ему знать к какой таблице вы там условие ставите, а в примере у Сергей Смирнов одна таблица
джойнам вас на ибейсе научили , надо еще альясы приучится использовать
Код: Выделить всё
select o.ORDER_ID,
o.ORDER_NUMBER,
o.ORDER_DATE,
o.ORDER_TYPE,
o.COMMENT,
l.STUD_ID,
l.ORDER_ID
from LINKS l
join ORDERS o on (o.ORDER_ID=l.ORDER_ID)
where
L.STUD_ID=:STUD_ID а что ругается то правельно, откуда ему знать к какой таблице вы там условие ставите, а в примере у Сергей Смирнов одна таблица
пошел оффтоп...
Attid
перечитайте мой пост. тот запрос который вы изменили и так работает. да и зачем в данном случае алиасы если я конкретно указываю
по теме
как использовать редактор полей? в доке и статьях по FIBPlus ничего не нашел. обьясните пожалуйста как сделать lookup поле(мне выпадающий список не нужен. нужно чтоб вместо внешнего ключа отображалось соответствующее ему значение из таблици-справочника)
Attid
перечитайте мой пост. тот запрос который вы изменили и так работает. да и зачем в данном случае алиасы если я конкретно указываю
ORDERS.ORDER_ID=LINKS.ORDER_ID
...
LINKS.STUD_ID=:STUD_ID
по теме
как использовать редактор полей? в доке и статьях по FIBPlus ничего не нашел. обьясните пожалуйста как сделать lookup поле(мне выпадающий список не нужен. нужно чтоб вместо внешнего ключа отображалось соответствующее ему значение из таблици-справочника)
- Attid
- долгожитель
- Сообщения: 2588
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
ViTality писал(а):тот запрос который вы изменили и так работает
ну я так для красоты добавил, вопроса в вашем посте не было
ViTality писал(а):да и зачем в данном случае алиасы если я конкретно указываю
меньше букв =) считается более правельным.
ViTality писал(а):по теме
как использовать редактор полей? в доке и статьях по FIBPlus ничего не нашел. обьясните пожалуйста как сделать lookup поле(мне выпадающий список не нужен. нужно чтоб вместо внешнего ключа отображалось соответствующее ему значение из таблици-справочника)
это не по теме, это тебе надо смотреть в Rx компоненты, бросаешь его на форму, прописываешь ему датасет откуда подстовлять и куда, также какое поле ИД а какое для отображения. в стандартном лазаре такой возможности нету, или используешь вариант ручками как я где-то на форуме описывал
- Attid
- долгожитель
- Сообщения: 2588
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
а сорри я просто про
услышал ну и рассказал тем болееlookup
по другому понять не возможно, чтобы где отображалось в гриде ? тогда надо джойнами таблицу добавлять. и редактор полей никак в этом не поможет, я им никогда не пользовался но чет думаю что это для создания колекции как в гриде можно сделать, я такое альясами полей создаю. алекс прийдет все раскажет =)нужно чтоб вместо внешнего ключа отображалось соответствующее ему значение из таблици-справочника
имееться связка JvUIBDataBase1, JvUIBTransaction1, FBDataSet1, Datasource1 ну и DBGrid1:
SQLSelect у FBDataSet1
ORDER_TYPE внешний ключ из таблицы-справочника ORDER_TYPES
Создаю FBDataSet2, задаю JvUIBDataBase1, JvUIBTransaction1,
SQLSelect
Далее Двойным щелчком по FBDataSet1 вызываю "редактор полей"
в нем New
Field Type - Lookup
Key fields - ORDER_TYPE
DataSet - FBDataSet2
Lookup keys - TYPE_ID
Result fields - ORDER_VALUE
Ok
Теперь идем в DBGrid1.Columns
добавляем столбец и в FieldName выбираем ORDER_VALUE
а при запуске получаю ошибку
все это сейчас проделал с нуля создав новый проект
SQLSelect у FBDataSet1
Код: Выделить всё
select
ORDERS.ORDER_ID,
ORDERS.ORDER_NUMBER,
ORDERS.ORDER_DATE,
ORDERS.ORDER_TYPE,
ORDERS.COMMENT
from
ORDERS
ORDER_TYPE внешний ключ из таблицы-справочника ORDER_TYPES
Создаю FBDataSet2, задаю JvUIBDataBase1, JvUIBTransaction1,
SQLSelect
Код: Выделить всё
select
ORDER_TYPES.TYPE_ID,
ORDER_TYPES.ORDER_VALUE
from
ORDER_TYPES
Далее Двойным щелчком по FBDataSet1 вызываю "редактор полей"
в нем New
Field Type - Lookup
Key fields - ORDER_TYPE
DataSet - FBDataSet2
Lookup keys - TYPE_ID
Result fields - ORDER_VALUE
Ok
Теперь идем в DBGrid1.Columns
добавляем столбец и в FieldName выбираем ORDER_VALUE
а при запуске получаю ошибку
FBDataSet1: field not found "ORDER_TYPE"
все это сейчас проделал с нуля создав новый проект
Если в "редакторе полей" добавить вычисляемое поле то в dbgrid перестают отображаться данные из остальных обычных полей. И если в коде исполбзуеться обращение к обячным полям по имени(fbdataset1.filedbyname...) то fbdataset1 начинает ругаться, что не может найти это поле. Лечиться либо удалением этого вычисляемого поля, либо добавлением всех остальных полей в "редактор полей".
Это косяк FBDataSet? лазарусовского Dataset? или так и должно быть?
Это косяк FBDataSet? лазарусовского Dataset? или так и должно быть?
а в чем разница? получаеться в СУБД этот вид поля бесполезен(неиспользуеться)?не правельный подход, вернее может с дбф он и верный но в СУБД нет.
