lazarus + Firebird embedded

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

Re: lazarus + Firebird embedded

Сообщение alexs » 13.12.2009 22:43:23

Вариант А работает правильно
а вобще синтаксис запроса целиком зависит от SQL сервера. И этот эе запрос должен работать правильно и через BDE.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: lazarus + Firebird embedded

Сообщение Ustas » 17.12.2009 17:01:46

Всем привет.

выполняю в запросе:
Код: Выделить всё
AND UPPER(Name) like ''' + UTF8Encode(WideUpperCase(UTF8Decode(st_Name_Str))) + '%'''


заметил глюк. Если у st_Name_Str не четная длина, выдает ошибку: malformed string. С четной длиной и другими комбинациями % работает нормально.

Как это исправить?
Ustas
постоялец
 
Сообщения: 146
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: lazarus + Firebird embedded

Сообщение dunin » 18.01.2010 14:57:34

TRSteep писал(а):Здравствуйте!

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

если подключать...

Поборол проблему следующим образом: заполнил свойства TIBConnection.Password и UserName
По какой-то непонятной причине коннект к Firebird НЕ embedded успешно происходил и БЕЗ заполнения этих свойств.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: lazarus + Firebird embedded

Сообщение Attid » 18.01.2010 15:44:22

dunin писал(а):По какой-то непонятной причине коннект к Firebird НЕ embedded успешно происходил и БЕЗ заполнения этих свойств.

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

Re: lazarus + Firebird embedded

Сообщение dunin » 18.01.2010 18:30:54

Attid писал(а):ну может под пабликом подключался, может на сервере переменные окружения с паролем есть.

Да вот действительно как-то так... Думал проблему поборол - хер там... На другом компе не работает. Тема такая: виндус, если firebird запущен, то в Лазаре все конектится, если firebird остановлен, то через embeded firebird подконектится в БД не возможно.

Господа, кто знает решение?
Чувствую оно где-то рядом и какая-то мелочь...

Кстати, уже поднималась тема, что Lazars + FireBird embeded = не все так гладко. Нужны дополнительные юниты, которые почему-то не компилятся. Где грабли?

зы. Только пожалуйста не пишем всякую чушь типа "сходи на айбэйс, почитай ридми, проверь куда библиотеки распаковал" и т.д. Проблема не в установке/настройках FB - 100%. Что-то не так с Lazarus
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: lazarus + Firebird embedded

Сообщение Brainenjii » 18.01.2010 20:00:03

у Firebird embedded нет security2.fdb, так что через неё можно кем хочешь коннектиться ^_^

UPD: с помощью транка UIB - соединение проходит совершенно прозрачно... Есть не embedded версия - соединяется через сервер, нет - через встраиваемый вариант. Ещё можно LibraryName указать
//пропустил, чем Вы пользуетесь
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: lazarus + Firebird embedded

Сообщение dunin » 19.01.2010 04:11:15

Brainenjii писал(а)://пропустил, чем Вы пользуетесь

tIBConnection

Добавлено спустя 32 минуты 30 секунд:
dunin писал(а):...
Чувствую оно где-то рядом и какая-то мелочь...
...

Вроде, тьфу-тьфу, победил проблему...

Выдержка из README_embedded.txt
Код: Выделить всё
3. USAGE

  Just copy fbembed.dll, icudt30.dll, icuin30.dll and
  icuuc30.dll into the directory with your application.
  Then rename fbembed.dll to either fbclient.dll or
  gds32.dll depending on your database connectivity software
  ...

Переименовывать надо ТОЛЬКО в fbclient.dll Я, по старой привычке, именовал gds32.dll В таком варианте tIBConnection НЕ работает с Firebird embedded.

WinXP
Lazarus 0.9.28.2
Firebird-2.1.3.18185-0_Win32_embed
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: lazarus + Firebird embedded

Сообщение Ustas » 26.01.2010 16:53:08

Изменяю базу из разных форм приложения, т.е. у меня несколько коннектов (IBConnection) к базе: один, как бы основной, в остальных я правлю справочную информацию, используемую в основном запросе. После изменения справочной информации, данные в основном коннекте не обновляются, если не сделать:
Код: Выделить всё
IBConnection.Close;
IBConnection.Open;

Как правильно в делать в подобных ситуациях?
Ustas
постоялец
 
Сообщения: 146
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: lazarus + Firebird embedded

Сообщение dunin » 26.01.2010 17:03:01

Ustas писал(а):Изменяю базу из разных форм приложения, т.е. у меня несколько коннектов (IBConnection) к базе: один, как бы основной...

Firebird embedded позволяет создавать несколько коннектов?
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: lazarus + Firebird embedded

Сообщение Ustas » 26.01.2010 18:42:50

Firebird embedded позволяет создавать несколько коннектов?


Ну, не embedded. И что, тему открывать?
Ustas
постоялец
 
Сообщения: 146
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: lazarus + Firebird embedded

Сообщение dunin » 26.01.2010 20:43:13

Ustas писал(а):Ну, не embedded. И что, тему открывать?

Ну тада расскажу что знаю... :)

Делается это примерно так:
- в БД создается тригер примерно такого содержания
Код: Выделить всё
CREATE OR ALTER trigger dialog_event for table
active after insert or update position 2
AS
BEGIN
    POST_EVENT "NEW_MESSAGE";
END

При срабатывании БД генерирует POST_EVENT с определенным именем. А вот это самое "почтовое событие" и должен подхватить тот самый "другой коннект". Дальше все сложнее. В Дельфи (IBX) есть компонент tIBEvents с помощью которого можно можно сообщение от БД отловить, ну и написать соответствующий обработчик (обновить данные). А вот как поймать POST_EVENT штатными средствами Лазаря пока ума не приложу (и даже не пробовал) - скорее всего или придется много всего дописывать или искать подходящие компоненты.

зы. За Лазарус недавно сел. Может как-то и можно...
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: lazarus + Firebird embedded

Сообщение Ustas » 26.01.2010 22:24:27

dunin писал(а):Делается это примерно так:

Меня, собственно. интересовал вопрос именно по базе, т.е. какие команды нужно выполнить "другому коннекту", что обновить данные. В программе (она же моя) я обхожусь собственными флагами. А насчет триггеров - я подумывал, что этим вопросом надо бы заняться. Но позже, когда придет время "облизывать" программу. Сейчас бы выстроить скелет...

Аналогичто, сражаюсь с Lasarus + Firebird недавно, переделываю все что было наработано Delphi + BDE... с переменным успехом. :D
Ustas
постоялец
 
Сообщения: 146
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: lazarus + Firebird embedded

Сообщение alexs » 28.01.2010 00:55:25

Ustas писал(а):Изменяю базу из разных форм приложения, т.е. у меня несколько коннектов (IBConnection) к базе: один, как бы основной, в остальных я правлю справочную информацию,

Вы что - для каждого запроса создаёте отдельное подключение ? :shock:
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: lazarus + Firebird embedded

Сообщение Ustas » 28.01.2010 10:12:33

alexs писал(а):
Ustas писал(а):Изменяю базу из разных форм приложения, т.е. у меня несколько коннектов (IBConnection) к базе: один, как бы основной, в остальных я правлю справочную информацию,

Вы что - для каждого запроса создаёте отдельное подключение ? :shock:


У меня из основной формы (TForm) вызываются другие диалоговые формы со своими данными той же базы. Я не знаю, как все вызываемые формы подключить к одному коннекту. Знаете - подскажите. В Delphi коннект (Session) к DBE виден из любой формы, чем я и пользовался. А здесь - я не знаю...

Добавлено спустя 32 минуты 59 секунд:
dunin писал(а):При срабатывании БД генерирует POST_EVENT с определенным именем....

А вообще, чем можно из Lazarus прочитать событие POST_EVENT, не отловить, а хотя бы тупо, взять и просто посмотреть: "А есть ли событие?". В интернете ничего не нашел, такое впечатление, что там открылся форум теоретиков, разговоров много, а примеров - ни одного.
Ustas
постоялец
 
Сообщения: 146
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: lazarus + Firebird embedded

Сообщение alexs » 28.01.2010 21:12:12

Обычно достаточно добавить форму в параметрах проекта в автосоздаваемые - и все будет видно.
И, как мен кажется, в последних версиях в транке, даже это ограничение снято.
И ещё - мне кажется что IBConnection для работы с птицей - не лучший вариант. В UIB оно как-то проще. И работа с событиями там хорошо сделана.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Пред.След.

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

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

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

Рейтинг@Mail.ru