Delphi2007 FireBird. Вопросы новичка

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

Модератор: kdv

Ответить
Kursist
Сообщения: 8
Зарегистрирован: 18 июн 2009, 21:11

Delphi2007 FireBird. Вопросы новичка

Сообщение Kursist » 18 июн 2009, 21:20

Подскажите последовательность действий. Хочу попрактиковаться в работе с базами данных - опыт нет.

1. Скачал и проинсталлировал Firebird 2.1.1 Release
(http://www.firebirdsql.org/index.php?op ... 12_release)
2. Скачал и проинсталлировал InterBase/Firebird Development Studio
(http://www.sqlly.com/index.RU.html)
3. В IB/FB Development Studio создал базу данных MyFirst. (user: SYSDBA password: masterkey)
Создал таблицу Table1 с 2 полями: ID и Name.

4. Запустил CodeGear Delphi2007.
Как мне подключиться к этой базе данных? Какие компоненты использовать? (прочитал, что надо использовать компонетны из вкладки dbGo или dbExpress - что лучше и правильнее?)

5. Читаю инструкцию:
http://www.ibprovider.com/rus/documenta ... elphi.html

* Создайте пустой файл с расширением .udl
* Откройте файл (Enter), появится связанный с данным расширением диалог для настройки подключения
* В списке OleDb провайдеров выберете IBProvider v3:

Создал пустой файл: myConnect.udl
Открыл файл. В списке OLE DB провайдеров такого провайдера нет (все от MicroSoft).
По дефолту выбрался MicroSoft OLE DB Provider for ODBC drivers

Как найти доступ из Дельфи к базе данных MyFirst?

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

Re: Delphi2007 FireBird. Вопросы новичка

Сообщение kdv » 19 июн 2009, 00:56

чего Вас понесло на IBProvider? Читайте тут
http://www.ibase.ru/devinfo/ibx.htm
В Дельфях провайдер вам не нужен. Это если вы на Visual C перескочите, Access, и т.п. - тогда да. А в дельфях через провайдер работать - это все равно что гланды через это самое.

Kursist
Сообщения: 8
Зарегистрирован: 18 июн 2009, 21:11

Re: Delphi2007 FireBird. Вопросы новичка

Сообщение Kursist » 19 июн 2009, 02:14

Вообщем, у меня получилось так:
1. Install FireBird 2.0 (http://www.firebirdsql.org/) (проверка: Conrtol Panel/Administrative Tools/Services - появился сервис FirebirdServer-DefaultInstance)
2. Install FireBird ODBC (Conrtol Panel/Administrative Tools/Data SOurces(ODBC) появился драйвер)
3. Install Flamerobin (database administration tool for Firebird) from http://www.flamerobin.org/
4. Install IBProvider_free_32_3.0.0.6941 (работает с FireBird 2.0)
5. Действовал по инструкции: http://www.ibprovider.com/rus/documenta ... elphi.html
6. Запускаем FlameRobin и создаем базу данных.
7 Запускаем Дельфи2007.
TADOConnection из свитка dbGo
ADOConnection1.ConnectionString выбираем файл .udl
ADOConnection1.Connected:=TRUE

Так как первоначально скачивал FireBird последней версии с http://www.ibprovider.com то и почерпнул оттуда инфу про IBProvider, также без него не смог бы выполнить шаг 5.
Не уверен, что поступил правильно, но, по-крайней мере, тренируюсь.

Задачу поставил перед собой такую.
Найти бесплатную СУБД, и создать базу данных, которые в дальнейшем будут находиться на удаленной машине.
Используя CodeGear2007 создать программу-клиент, в которой будут создаваться накладные.
Сначала я подумал про MySQL - скачал, проинсталлировал, но так и не смог разобраться. Наткнулся на совет про FireBird. Вспомнил, что кто-то из знакомых его уже использовал, и был очень доволен, правда использовал купленные комерческие компоненты. А мне для тренировки пока надо бесплатное всё.

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

Re: Delphi2007 FireBird. Вопросы новичка

Сообщение kdv » 19 июн 2009, 08:49

все это ахинея какая-то, достаточно было:
1. скачать Firebird с http://www.firebirdsql.org
2. поставить Delphi
3. скачать IBExpert

Никакие Flamerobin, IBProvider, ODBC и так далее Вам не нужны. Работа с Firebird через ADO неестественна, потому что это ограничивает Вас в функционале, да и вообще через ADO принято работать с MS SQL и ODBC. Если бы нужна была "совместимость" при разработке приложения, работающего как с MS SQL так и с FB, я бы еще понял. Но в данном случае - совершенно лишнее.
http://www.ibase.ru/devinfo/choosecomp.htm
А установка FB ODBC вообще не нужна была.

p.s. Если Вы дальше будете продолжать упорствовать и рекламировать тут IBProvider, то я начну подозревать в Вас засланного агента и просто забаню. Подробности работы с IBProvider изложены на их сайте, и здесь их дублировать не надо.

Kursist
Сообщения: 8
Зарегистрирован: 18 июн 2009, 21:11

Re: Delphi2007 FireBird. Вопросы новичка

Сообщение Kursist » 19 июн 2009, 10:35

p.s. Если Вы дальше будете продолжать упорствовать и рекламировать тут...,, то я начну подозревать в Вас засланного агента и просто забаню. Подробности работы с .... изложены на их сайте, и здесь их дублировать не надо.
Извините! Не упорствую я! А тупо тыкаюсь.. может я жертва рекламы - всё что написано, то и исполняю. :D :oops:
Я просто описал свои шаги (да и самому чтобы не забыть, что делал - награмоздил много чего, если бы не записал - уже не помнил, что делал :oops:
Я понимаю, что здесь спецы, поэтому им кажутся дикими мои действия.

Может быть вы посоветуете, что-то почитать?
У меня есть книга Архангельского "Программирование в Delphi7", что-то я почерпну оттуда, но хочется по Delphi2007. Вообщем, нужна информация, поэтому я и обратился на этот форум. Мне его порекомендовали.

Kursist
Сообщения: 8
Зарегистрирован: 18 июн 2009, 21:11

Re: Delphi2007 FireBird. Вопросы новичка

Сообщение Kursist » 19 июн 2009, 10:45

kdv
Большое спасибо за ссылку! Проясняет многое!

Kursist
Сообщения: 8
Зарегистрирован: 18 июн 2009, 21:11

Re: Delphi2007 FireBird. Вопросы новичка

Сообщение Kursist » 19 июн 2009, 11:42

Извините за еще один (их у меня, правда, много) ламерский вопрос:
IBX (InterBase Express) - входит в поставку Delphi
IBX 11.11 - в поставке Delphi 2007

Компоненты IBX - это компоненты из вкладки InterBase (Смутила приставка Express - ведь есть компоненты dbExpress)

Еще смущает момент:компонет TIBDataBase свойство DatabaseName... выбрать файл.. но если база будет не на клиентской машине, то как происходит подключение/нахождение файла базы?

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

Re: Delphi2007 FireBird. Вопросы новичка

Сообщение kdv » 19 июн 2009, 12:28

то как происходит подключение/нахождение файла базы?
я уж думал, что не вставлял картинки в http://www.ibase.ru/devinfo/ibx.htm#ibdatabase На картинку смотрите. c:\db\test.gdb - это база НА СЕРВЕРЕ.
Ну и FAQ читайте:
http://www.ibase.ru/ibfaq.htm#noconnect
но хочется по Delphi2007. Вообщем, нужна информация, поэтому я и обратился на этот форум. Мне его порекомендовали.
в отношении IBX никакой разницы между D7 и D2007 нет. По большому счету, идеология работы с датасетами неизменна начиная с Delphi 3, если не с 2. Исключение составляет TClientDataSet, появившийся или в Delphi 5, или раньше. Но после своего появления он тоже остается как и был.

p.s. IBX - это InterBase Express. Да, именно вкладка InterBase и InterBase Admin (см. http://www.ibase.ru/devinfo/ibx.htm#servapi). Да и картинка закладки компонент IBX-InterBase там тоже есть.

Kursist
Сообщения: 8
Зарегистрирован: 18 июн 2009, 21:11

Re: Delphi2007 FireBird. Вопросы новичка

Сообщение Kursist » 28 июн 2009, 13:36

Попытался создать демонстративные базы данных, что идут с инсталляцией IBExpert (в папке IBExpertDemoDB). Запускал SQL-скрипт для исполнения. Каждый скрипт обрывался из-за ошибок (вот лог из выполнения db1.sql) (Список длинный, я вырезал только заголовки):

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

 
=== Line: 11493 ===
 
********* Error:
This operation is not defined for system tables.
unsuccessful metadata update.
DEFINE TRIGGER failed.
Malformed string.
 
=== Line: 11598 ====
********* Error:
Invalid token.
invalid request BLR at offset 419.
function GETRANDOM is not defined.
module name or entrypoint could not be found.
Error while parsing procedure CREATE_CUSTOMER's BLR.
 
=== Line: 11702 ====
********* Error:
Invalid token.
invalid request BLR at offset 254.
function GETRANDOM is not defined.
module name or entrypoint could not be found.
Error while parsing procedure CREATE_MORE_ORDERS's BLR.
 
=== Line: 11777 ====
********* Error:
Invalid token.
invalid request BLR at offset 310.
function GETRANDOM is not defined.
module name or entrypoint could not be found.
Error while parsing procedure CREATE_ORDERS's BLR.
 
=== Line: 11854 ====
********* Error:
Invalid token.
invalid request BLR at offset 370.
function GETRANDOM is not defined.
module name or entrypoint could not be found.
Error while parsing procedure CREATE_PRODUCTS's BLR. 
То есть, демки не юзабельные?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: Delphi2007 FireBird. Вопросы новичка

Сообщение Dimitry Sibiryakov » 28 июн 2009, 14:33

Сначала прочти QuickStart из папочки doc. Потом - FAQ с http://ibase.ru. Потом - FAQ по работе с русскими буквами оттуда же. Когда всё прочтёшь - возвращайся. Но не раньше.

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

Re: Delphi2007 FireBird. Вопросы новичка

Сообщение kdv » 28 июн 2009, 23:46

я бы вообще не пытался создавать эти "демонстративные" базы данных. Не вижу смысла.
в поставке есть employee.fdb. Если надо создать свою базу и там экспериментировать - то создаешь и экспериментируешь.
Более того, в созданную самостоятельно базу можно что угодно напихать из любых скриптов (почти из любых).

Kursist
Сообщения: 8
Зарегистрирован: 18 июн 2009, 21:11

Re: Delphi2007 FireBird. Вопросы новичка

Сообщение Kursist » 29 июн 2009, 14:40

Снова вопрос:
Создал тестовую базу данных. В IBDataSet создал 2 lookup дополнительных поля. Таблицы заполнены данными, но в lookup только в некоторых ячейках отображаются данные, иногда они появляются только если повторно ввести тот же самый номер в ключевое поле (столбец). То есть, в основной таблице храню ID имени и профессии, а в других таблицах - сами имена и профессии, и оттуда пытаюсь брать данные.
Но уже на стадии проектирования видно, что большинство ячеек в lookup полях пустое. Это выглядит так:

ID | Name_ID|Prof_ID| Name | Prof |
1 |1 |1 |Александр| |
2 |1 |1 | | |
3 |2 |1 |Олег | Строитель|
4 |3 |4 |Татьяна | Дизайнер |


Использую Delphi2007, FireBird, IBExpert.
Создал базу данных. В ней 3 таблицы:
1 Таблица:
ID:Integer
Name_ID:Integer
Prof_ID:Integer

2 Таблица:
ID:Integer
Name:Char[20]

3 Таблица:
ID:Integer
Prof:Char[20]

В клиенте исползую 3 цепочки:
IBDatabase-IBTransaction-IBDataSet1-DataSource-DBGrid
+IBTransaction-IBDataSet-DataSource-DBGrid
+IBTransaction-IBDataSet-DataSource-DBGrid



kdv Ок. Спасибо.
Dimitry Sibiryakov Также спасибо за ссылки и совет, но, извините, буду всё-равно нарушителем - вернулся раньше, думаю, это моё право свободного человека (и, думаю, вы заметили, я на всякий случай извинился).

Kursist
Сообщения: 8
Зарегистрирован: 18 июн 2009, 21:11

Re: Delphi2007 FireBird. Вопросы новичка

Сообщение Kursist » 30 июн 2009, 11:52

Вот ссылка на файл - в нем база данных и клиент с исходниками.
http://files.wyw.ru/3744134

Может кто-нибудь прокоментировать, почему созданные в IBDataSet 2 lookup поля не отображаются (или частично отображаются)?

Ответить