FIBPlus [trial] с родными компонентами Delphi

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
QuAzI
Сообщения: 11
Зарегистрирован: 17 апр 2008, 02:36

FIBPlus [trial] с родными компонентами Delphi

Сообщение QuAzI » 17 апр 2008, 02:45

Скачал FIBPlus 6.8 для Delphi 2005.
Чтобы использовать DBGrid и прочие с вкладки Data Controls, нужно юзать DataSource. Из всех компонентин FIB он увидел только DataSet. Ну я прикрутил всё через DataSet, в DBGrid получаю инфу, а менять я её там не могу. Точно так же DBNavigator не может удалить, изменить и добавить.
Короче я могу только позырить на готовую базу и всё. А изменять и дополнять как?

Ещё. Если база в момент запуска моей проги не существует, как её создать (запросом из самой проги, а не через isql). ИМХО для работы с FB нужно чтобы компоненты были активны, а если попытаться их включить они матюкаются что базы нет и не включаются - так и плутаю в трёх берёзах, пока с консоли не создам.

И ещё. Нужно будет в проге выводить рисунки приаттаченные к конкретной записи. А в саму базу их запихать нельзя? Если да, то как это скажется на размерах, производительности и какие форматы можно хранить? Я пока планирую хранить в базе ссылки на эти файлы и их отдельно отрывать.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 17 апр 2008, 10:01

А изменять и дополнять как?
как её создать
читайте статьи по FIBPlus на www.devrace.com.
А в саму базу их запихать нельзя?
можно. читайте статьи на www.devrace.com по работе с blob.
Если да, то как это скажется на размерах, производительности и какие форматы можно хранить?
Вы вообще хоть что-нибудь по IB/FB читали? форматов никаких нет, хранить можно все что угодно. На размерах скажется, в зависимости от того, какие размеры хранить. На производительности - как будете обрабатывать.

короче. Идите и читайте, читайте, читайте.

QuAzI
Сообщения: 11
Зарегистрирован: 17 апр 2008, 02:36

Сообщение QuAzI » 19 апр 2008, 01:07

Ладно.. Нашёл, разобрался, прописал.
Только есть пара нестыковочек:
DBMemo, DBLabel, DBGrid нормально заполняются, а вот всё что записи ложит в TList - DBList и DBComboBox - остаются пустыми.
И второе:
Добавляю новую запись. Первое поле получаю из генератора (типа уникальный идентификатор):

Код: Выделить всё

INSERT INTO TPUTEVKI(
 PNUM,
 PNAME,
 PCOST,
 PTIME
)
VALUES(
 GEN_ID(num_putevki,1),
 :PNAME,
 :PCOST,
 :PTIME
)
Всё ок, запись создаётся, но этот самый pNum виден в DBGrid только после того, как я закрою и снова открою форму. Refresh не помогает. Остаётся пустое место в этом поле пока не перезайдёшь.
Спасайте чайника :( , бо до среды надо софтину дописать

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 19 апр 2008, 11:44

QuAzI писал(а): DBMemo, DBLabel, DBGrid нормально заполняются, а вот всё что записи ложит в TList - DBList и DBComboBox - остаются пустыми.
так и должно быть. они заполняются руками.
QuAzI писал(а): Всё ок, запись создаётся, но этот самый pNum виден в DBGrid только после того, как я закрою и снова открою форму. Refresh не помогает. Остаётся пустое место в этом поле пока не перезайдёшь.
Спасайте чайника :( , бо до среды надо софтину дописать
тоже должно быть, читай про транзакции, рефрешь вообще обновляет только одну активную запись.

найми самовар.

QuAzI
Сообщения: 11
Зарегистрирован: 17 апр 2008, 02:36

Сообщение QuAzI » 19 апр 2008, 16:24

А в экземпл кто-нить тыкнуть может, где они руками заполняются? А то у той же Хелен Борри нету нифига про это... только описание самого FB, без связки с конкретной средой разработки.

У меня вообще только одна транзакция - всё что я делаю, сразу же видно для моего приложения (транзакции в контексте которой я делаю выборку). И AutoCommit при заполнении справочников в True.
Рефрешь обновляет активную запись - ту, которую я только что создал и на которой стоит курсор. Так почему ж DBGrid это поле не показывает?

QuAzI
Сообщения: 11
Зарегистрирован: 17 апр 2008, 02:36

Сообщение QuAzI » 19 апр 2008, 17:20

На многих форумах предлагают юзать DBLookupComboBox и DBLookupListBox, а у меня с ними вообще не запускается:
Circular datalinks are not allowed

QuAzI
Сообщения: 11
Зарегистрирован: 17 апр 2008, 02:36

Сообщение QuAzI » 19 апр 2008, 19:26

Нормальненько так это...
Заполнил DBComboBox

Код: Выделить всё

with comboPutevki.Items do begin
BeginUpdate;
Clear;
datasetPutevki.First;
while not datasetPutevki.Eof do
   begin
Add(datasetPutevki.Fields.FieldByName('pName').AsString);
datasetPutevki.Next;
   end;
EndUpdate;
end;
Когда выберу в нём какое-нить значение и щёлкаю на любой другой компонент формы, получаю
Dataset not in Edit mode - чё ему не нравится? Если пометить ComboBox как ReadOnly, он вообще ничё выбирать не хочет :(
По всем этим эксепшенам и фишкам впору отдельную книгу писать...

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 21 апр 2008, 02:29

В твоем случае надо юзать DBLookupComboBox.
"Circular datalinks are not allowed" - говорит о том, что ты не разобрался, как оно работает и слинковал датасорц сам к себе. Читать, читать, читать...

Ответить