FBDataSet (библиотека доступа к данным FireBird/Interbase.)

Модератор: Модераторы

Сообщение alexs » 15.02.2008 22:51:47

Не сталкивался
Насколько большие наборы?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Attid » 16.02.2008 20:30:06

извеняюсь это я ступил :oops:

Код: Выделить всё
  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 у нас соответсвено это кол-во отфеченых записей, а я обращался с ними как со всеми :oops:
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение alexs » 17.02.2008 17:39:48

FetchAll тебе поможет
или установи соответсвующий флажок в опциях
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение vital » 12.03.2008 14:54:13

alexs писал(а):А с художниками напряг - так что принимаю любые пожелания и предложения - сам нарисую плохо. я и для FBDataSet иконку - всеголиш перарботал от RxQuery


Честно говоря, иконка для FBDataSet - тихий ужас :lol: Привет из середины 90-х :lol:
Если не возражаете, то предлагаю для ознакомления результат моих экспериментов с IconFX. Иконка выдержана в стиле UIB, но без этих дурацких букв на лиловом фоне :) в правом нижнем углу и малопонятных геометрических фигур вроде шаров, пирамид и т.д. На палитре достаточно хорошо заметна - видно, что это датасет, а не что-то иное. От стандартного датасета(на основе которого и сделана) также отличается. Вобщем, принимайте на конкурс :) :
http://ifolder.ru/5703076
vital
новенький
 
Сообщения: 86
Зарегистрирован: 17.10.2007 14:52:59

Сообщение alexs » 12.03.2008 18:56:16

vital
В целом направление верное - но хотелось бы чтобы иконка подразумевала то что это не просто набор данных - а именно запрос, причём закпрос к FireBird/Interbase.
А то напоминает чистый TTable из Delphi.
Т.е. данный рисунок можно использовать как фон, и добавить на передный план что либо, удоавлетворяющее вышеперечисленному - напрмер логотип птички? или ещё что?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Attid » 12.03.2008 19:09:26

vital
под шум волны, если нравится и умешь рисовать приглашую принять участие в ДаблеКомандере нам как раз дизайнера не хватает , подробности соответствено или в асю\личку мне или алексу2000.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение ViTality » 16.04.2008 10:47:40

Сергей Смирнов писал(а):Префиксы не поддерживаются. Писать так:

Код: Выделить всё
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       

все нормально отрабатывает
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Сообщение Attid » 16.04.2008 12:40:39

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
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение ViTality » 16.04.2008 14:42:37

пошел оффтоп...
Attid
перечитайте мой пост. тот запрос который вы изменили и так работает. да и зачем в данном случае алиасы если я конкретно указываю
ORDERS.ORDER_ID=LINKS.ORDER_ID
...
LINKS.STUD_ID=:STUD_ID


по теме

как использовать редактор полей? в доке и статьях по FIBPlus ничего не нашел. обьясните пожалуйста как сделать lookup поле(мне выпадающий список не нужен. нужно чтоб вместо внешнего ключа отображалось соответствующее ему значение из таблици-справочника)
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Сообщение Attid » 16.04.2008 16:05:20

ViTality писал(а):тот запрос который вы изменили и так работает

ну я так для красоты добавил, вопроса в вашем посте не было

ViTality писал(а):да и зачем в данном случае алиасы если я конкретно указываю

меньше букв =) считается более правельным.

ViTality писал(а):по теме

как использовать редактор полей? в доке и статьях по FIBPlus ничего не нашел. обьясните пожалуйста как сделать lookup поле(мне выпадающий список не нужен. нужно чтоб вместо внешнего ключа отображалось соответствующее ему значение из таблици-справочника)

это не по теме, это тебе надо смотреть в Rx компоненты, бросаешь его на форму, прописываешь ему датасет откуда подстовлять и куда, также какое поле ИД а какое для отображения. в стандартном лазаре такой возможности нету, или используешь вариант ручками как я где-то на форуме описывал
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение ViTality » 16.04.2008 16:23:00

Attid ты меня помоему не совсем понял. Я говорю про "редактор полей" в FBDataSet, который вызываеться по клику правой кнопкой на FBDataSet или двойным кликом. и как потом мне это поле использовать в DBGrid.
сейчас приведу пример как я делаю...
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Сообщение Attid » 16.04.2008 16:51:40

а сорри я просто про
lookup
услышал ну и рассказал тем более
нужно чтоб вместо внешнего ключа отображалось соответствующее ему значение из таблици-справочника
по другому понять не возможно, чтобы где отображалось в гриде ? тогда надо джойнами таблицу добавлять. и редактор полей никак в этом не поможет, я им никогда не пользовался но чет думаю что это для создания колекции как в гриде можно сделать, я такое альясами полей создаю. алекс прийдет все раскажет =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение ViTality » 16.04.2008 16:55:57

имееться связка JvUIBDataBase1, JvUIBTransaction1, FBDataSet1, Datasource1 ну и DBGrid1:
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"

все это сейчас проделал с нуля создав новый проект
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Сообщение Attid » 16.04.2008 17:28:19

не правельный подход, вернее может с дбф он и верный но в СУБД нет.

тебе надо в FBDataSet1 уже сразу добавлять запрос с джойном к ORDER_TYPES
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение ViTality » 24.04.2008 16:43:43

Если в "редакторе полей" добавить вычисляемое поле то в dbgrid перестают отображаться данные из остальных обычных полей. И если в коде исполбзуеться обращение к обячным полям по имени(fbdataset1.filedbyname...) то fbdataset1 начинает ругаться, что не может найти это поле. Лечиться либо удалением этого вычисляемого поля, либо добавлением всех остальных полей в "редактор полей".
Это косяк FBDataSet? лазарусовского Dataset? или так и должно быть?

не правельный подход, вернее может с дбф он и верный но в СУБД нет.
а в чем разница? получаеться в СУБД этот вид поля бесполезен(неиспользуеться)?
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Пред.След.

Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru