Страница 1 из 1

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

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

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

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

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

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

Добавлено: 19 апр 2008, 01:07
QuAzI
Ладно.. Нашёл, разобрался, прописал.
Только есть пара нестыковочек:
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 не помогает. Остаётся пустое место в этом поле пока не перезайдёшь.
Спасайте чайника :( , бо до среды надо софтину дописать

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

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

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

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

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

Добавлено: 19 апр 2008, 19:26
QuAzI
Нормальненько так это...
Заполнил 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, он вообще ничё выбирать не хочет :(
По всем этим эксепшенам и фишкам впору отдельную книгу писать...

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