lazarus + Firebird embedded

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

lazarus + Firebird embedded

Сообщение TRSteep » 02.06.2009 00:25:52

Здравствуйте!

Задача
Пытаюсь объединить lazarus и Firebird, причем Firebird embedded

если подключать lazarus к Firebird серверу на другом компе делаю это так:
DBGrid - таблица, указываю Datasource, как Datasource :)
в Datasource указываю SQLQuery, как DataSet
в SQLQuery указываю IBConnection, как Database
в IBConnection указываю:
HostName - ip сервера: 192.168.11.128
DatabaseName - путь к базе данных: C:\base\EMPLOYEE.FDB
Connected - true
все работает!

Но если пытаюсь запустить как embedded - копирую все файлы по инструкции (README_embedded)

ip не указываю
путь указываю (C:\base\EMPLOYEE.FDB)

пишет: unavaible database

если указать ip (localhost или 127.0.0.1) то выходит сообщение с крестиком (пустое)

что можно сделать?

PS: Firebird-2.5.0.23247-1_Win32_embed_Beta1.zip

Добавлено спустя 15 часов 31 минуту 44 секунды:
может есть у кого простенький пример использования firebird embedded (на Lazarus или Delphi)?
Последний раз редактировалось TRSteep 03.06.2009 11:23:52, всего редактировалось 1 раз.
TRSteep
незнакомец
 
Сообщения: 7
Зарегистрирован: 01.06.2009 13:01:45

Re: lazarus + Firebird embedded

Сообщение Attid » 02.06.2009 18:02:49

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

Re: lazarus + Firebird embedded

Сообщение TRSteep » 04.06.2009 23:03:28

пытался использовать UIB 2.1

скачал, поместил в папку components UIB исходники его
патаюсь по инструкции скомпилировать lpk файл

выдает ошибку:
C:\lazarus\components\my\UIB21\source\jvuiblib.pas(4467,27) Error: Can't determine which overloaded function to call

в строке:
SQL_TIMESTAMP : EncodeTimeStamp(Value, PISCTimeStamp(sqldata));

файл: jvuiblib

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

Затем попытался установить Fblib

выдает ошибку:
C:\lazarus\components\my\fblib 0.85\FBLDataset.pas(184,21) Error: No member is provided to access property

в строке:
IsUniDirectional := True;


а ZEOS вроде нормально поставились - попробую еще

PS почти все компоненты поддерживают максимум 2.0... - неужели не развиваются?

PPS попробовал Delphi + FIBlib - embedded работает :) теперь бы еще саму базу создать - но эта уже другая история - все таки хотелось бы с лазарем разобраться....
TRSteep
незнакомец
 
Сообщения: 7
Зарегистрирован: 01.06.2009 13:01:45

Re: lazarus + Firebird embedded

Сообщение alexs » 05.06.2009 22:08:49

TRSteep писал(а):файл: jvuiblib

Судя по этому имени модуля - у вас ОЧЕНЬ древняя версия uib
в своё время автор оказался от именования модулей библиотек в стили JVCL - сечас они идут без приставки jv.
А свежую версию - скачайте с сайта UIB - а ещё лучше из SVN
https://uib.svn.sourceforge.net/svnroot/uib/trunk
это адрес текущего репозитария
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: lazarus + Firebird embedded

Сообщение GN » 06.06.2009 09:22:32

lazarus + firebird embedded step by step project (`Hello World tutorial`) //Win32 - http://voicixs.com/archives/198
Аватара пользователя
GN
новенький
 
Сообщения: 67
Зарегистрирован: 29.07.2007 07:35:56
Откуда: Казахстан

lazarus + Firebird

Сообщение lexa_bear » 07.06.2009 07:29:58

Вчера скачал Lazarus, поставил - решил испытать. Firebird сервер, НЕ embedded.
Путь к базе содержит папки, именованные русскими буквами. Lazarus ругается такой же пустой ошибкой.
Что, TIBConnection не понимает русских символов в Databasename?
lexa_bear
незнакомец
 
Сообщения: 1
Зарегистрирован: 07.06.2009 07:24:35

Re: lazarus + Firebird embedded

Сообщение v-t-l » 07.06.2009 16:56:23

lexa_bear писал(а):Что, TIBConnection не понимает русских символов в Databasename?

Если версия Lazarus > 0.9.26, то в IDE русские буквы вводятся в кодировке UTF8, которую fbclient.dll не понимает.
Если очень надо, чтобы база лежала в путях с русскими буквами, воспользуйтесь файликом aliases.conf в папке firebird, и впишите туда что-то вроде
Код: Выделить всё
mybase1=C:\ПутьКМоейБазе\База.fdb

а в IBConnection.Databasename напишите mybase1
v-t-l
энтузиаст
 
Сообщения: 728
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: lazarus + Firebird embedded

Сообщение alexs » 07.06.2009 20:45:43

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

Re: lazarus + Firebird embedded

Сообщение TRSteep » 13.06.2009 02:29:11

Вобщем скачал последнюю версию ZEOS и подключал по мануалу(lazarus + firebird embedded step by step project (`Hello World tutorial`) //Win32)
вроде сработало...
нужно проверить на чистой машинке :)

Вот только вопрос возник как я понял в файрберд автоинкрементальных полей нет
и заменяют их генераторы и триггеры

приведу пример свой эксперементальной базы:

Код: Выделить всё
CREATE TABLE Category (
       ID_Category          INTEGER NOT NULL,
       Name_Category        VARCHAR(100) NOT NULL,
       Desc_Category        VARCHAR(255)
);


ALTER TABLE Category
       ADD PRIMARY KEY (ID_Category);


CREATE TABLE Program (
       ID_Program           INTEGER NOT NULL,
       Name_Program         VARCHAR(100) NOT NULL,
       Version              VARCHAR(50),
       PathToInstall        VARCHAR(255),
       PathToRun            VARCHAR(255),
       Description          VARCHAR(255),
       ID_Category          INTEGER NOT NULL
);


ALTER TABLE Program
       ADD PRIMARY KEY (ID_Program, ID_Category);


ALTER TABLE Program
       ADD FOREIGN KEY (ID_Category)
                             REFERENCES Category;


Используя IB_Expert создаю генераторы:
Код: Выделить всё
GEN_ID_PROGRAM
GEN_ID_CATEGORY


Создаю триггер на событие BEFORE INSERT для каждой таблицы
Код: Выделить всё
AS
begin
    if (NEW.ID_CATEGORY is NULL) then
    NEW.ID_CATEGORY = GEN_ID(GEN_ID_CATEGORY, 1);
end


Код: Выделить всё
AS
begin
  if (NEW.ID_PROGRAM is NULL) then
  NEW.ID_PROGRAM = GEN_ID(GEN_ID_PROGRAM, 1);
end


При добавлении данных во вкладке данные таблице в эксперте - все срабатывает ID даются нормально, НО
пытаюсь в программе добавление данных:

Код: Выделить всё
ZQuery.Close;
ZQuery.SQL.Clear;
ZQuery.SQL.Text := 'INSERT INTO category(NAME_CATEGORY) VALUES(:Category)';

ZQuery.FieldByName('Category').AsString := 'Internet';
ZQuery.Post;


выдает ошибку о том что добавление данных невозможно, тк идентификатор ID_CATEGORY не может быть NULL
PS точно не скажу пока что пишет пока. И еще попробую завтра на чистой машине...
TRSteep
незнакомец
 
Сообщения: 7
Зарегистрирован: 01.06.2009 13:01:45

Re: lazarus + Firebird embedded

Сообщение alexs » 13.06.2009 07:21:22

на сайте www.ibase.ru почитай про это. Там разжовано хорошо.
А вобще не знаю как Zeos - а FBDataSet умеет сам подвязывать генератор к первичному ключу.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: lazarus + Firebird embedded

Сообщение TRSteep » 27.06.2009 19:15:03

как оказалось насчет генератора сделал все правильно, только тригеры создавал с экспериментальной базой, а в программе подключал обычную :)

насчет embedded
в виртуалке запускаю программу(из сетевой папки) - выдает сообщение о нехватке dll
скопировал fbclientd.dll в папку с программой
опять запускаю - выдает сообщение:

SQL Error: Unable to complite network request to host "H". Failed to lacate host mashine.
The Specifed name was not found in the host file or Domain Name Services.
Error Code: -902 cann't format message 13:98 - message file
\\Soprano\firebird.msg not found


скопировал файл firebird.msg - не помогло

строка подключения:
Код: Выделить всё
BasePath := ExtractFilePath(Application.EXEName)+'SDSI.FDB';
//Подключение
ZConnection.HostName:=''; // Hostname must be blank for embedded server projects
ZConnection.Database := BasePath;
ZConnection.Connect;  // open connection

Сама программа на основном компе находится на диске H, но откуда он берет букву диска в ошибке не пойму...
Неужели текущая папка не определяется как сетевая?

запускаю программу из сетевой папки \\Soprano\TestNoBD (поэтому и не понимаю почему он пытается загрузить из \\Soprano\firebird.msg)
TRSteep
незнакомец
 
Сообщения: 7
Зарегистрирован: 01.06.2009 13:01:45

Re: lazarus + Firebird embedded

Сообщение Attid » 29.06.2009 23:28:44

TRSteep
это проблемы птички а не лазаруса.

читай справку по птичке и устанавливай переменую среду где искать msg файл

Добавлено спустя 2 минуты 42 секунды:
TRSteep писал(а):Сама программа на основном компе находится на диске H, но откуда он берет букву диска в ошибке не пойму...

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

Re: lazarus + Firebird embedded

Сообщение Ustas » 17.11.2009 15:09:09

Написал SELECT в котором используется CASE. В IBExpert SELECT работает, а в Lazarus - нет. Пользуюсь компонентом TSQLQuery из закладки SQLdb. В чем причина? В TSQLQuery язык ограничен? А чем пользоваться?
Ustas
постоялец
 
Сообщения: 146
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: lazarus + Firebird embedded

Сообщение Attid » 17.11.2009 17:59:55

Ustas писал(а):А чем пользоваться?

UIB + AlexDataset

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

Re: lazarus + Firebird embedded

Сообщение Ustas » 20.11.2009 16:46:29

Может я чего не догоняю... В базе таблицы Т1, Т2, Т3. На основе данных SELECT (TSQLQuery) по Т1 я изменяю (хочу только) Т2 и Т3. Но после первого же .ExecSQL по Т2, данные SELECT по Т1 не доступны. Что после изменения в базе все активные TSQLQuery закрываются?
Ustas
постоялец
 
Сообщения: 146
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

След.

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

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

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

Рейтинг@Mail.ru