powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus + IBX
25 сообщений из 203, страница 4 из 9
Lazarus + IBX
    #40084916
dedRasta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обнаружил в программе, написанной с использованием IBX от http://www.visual-t.ru следующую проблему.
Есть "пустой" запрос, который используется в разных местах программы.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
object Qw: TIBQuery
    Database = dbIDK
    Transaction = trWrite
    AutoStartTransaction = True
    AutoCommit = True
    AutoTrim = True
    BufferChunks = 1000
    CachedUpdates = False
    GeneratorField.ApplyOnEvent = gaeOnNewRecord
    Params = <>
    Left = 240
    Top = 16
end


В программе выполняются две однотипные операции добавления записи в подчиненные таблицы с записью ID вставленной строки в главную таблицу путем вызова хранимых процедур:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create or alter procedure SP_UPD_PHYSEX (
    PID integer,
    PHYSEX_DATE date)
returns (
    PHYSEX_ID integer)
as
begin
  update or insert  into t_physex
  (personnel_id, physex_date)
  values (:pid,  :physex_date)
  matching (personnel_id, physex_date)
  returning physex_id into :physex_id;
end


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
if qw.Active then qw.Close;
qw.AutoCommit := false;
qw.Transaction := fdsTr;
qw.SQL.Clear;
qw.SQL.Add('EXECUTE PROCEDURE SP_UPD_PHYSEX (:PID, :PHYSEX_DATE)');
qw.Prepare;
qw.ParamByName('PID').AsInteger := P_ID;
qw.ParamByName('PHYSEX_DATE').AsDate := dtpMEx.Date;
qw.ExecSQL;
fdsPersonalPHYSEX_ID.AsInteger := qw.OutParamByName('PHYSEX_ID').AsInteger;
fdsPersonal.Post;
fdsTr.Commit;


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create or alter procedure SP_UPD_RBEV (
    PID integer,
    RBEV_DATE date)
returns (
    RBEV_ID integer)
as
begin
  update or insert  into t_rbev
  (personnel_id, rbev_date)
  values (:pid,  :rbev_date)
  matching (personnel_id, rbev_date)
  returning rbev_id into :rbev_id;
end


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
if qw.Active then qw.Close;
qw.AutoCommit := false;
qw.Transaction := fdsTr;
qw.SQL.Clear;
qw.SQL.Add('EXECUTE PROCEDURE SP_UPD_RBEV (:PID, :RBEV_DATE)');
qw.Prepare;
qw.ParamByName('PID').AsInteger := P_ID;
qw.ParamByName('RBEV_DATE').AsDate := dtpRbEx.Date;
qw.ExecSQL;
fdsPersonalRBEV_ID.AsInteger := qw.OutParamByName('RBEV_ID').AsInteger;
fdsPersonal.Post;
fdsTr.Commit;


Обычно эти операции выполняются отдельно и в разное время.
Но сейчас попробовал выполнить их подряд и при выполнении второй операции в строке
Код: pascal
1.
fdsPersonalRBEV_ID.AsInteger := qw.OutParamByName('RBEV_ID').AsInteger;


получил сообщение об ошибке:
Код: pascal
1.
Qw: Parameter Physex_id not Found


Т.е., несмотря на выполнение Prepare ищется параметр из предыдущей операции.
Сообщение об ошибке указывает на процедуру модуля IBQuery:
Код: pascal
1.
2.
3.
4.
function TIBQuery.OutParamByName(const Value: string): TParam;
begin
  Result := OutParams.ParamByName(Value);
end;


В Delphi с FibPlus аналогичный код выполняется без проблем:
Код: pascal
1.
2.
qw.ExecProcedure('SP_UPD_RBEV', [P_ID, dtpRbEx.Date]);
fdsPersonalRBEV_ID.AsInteger := qw.FieldByName('RBEV_ID').AsInteger;
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40084918
dedRasta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-Rik-, авторЯ уж подумывал ещё раз форкнуть - это было бы здорово!
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40084923
-Rik-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий

20.07.2021 13:30, -Rik- пишет:
>
> Ааа.. Либа, всё понял..

ты кстати, как решил вопрос с динамической подгрузкой/перезагрузкой клиентской либы?
переопределяешь заново точки входа, или как в поздних версиях у Джефа - на интерфейсах всё?

Там нет интерфейсов, всё проще, библиотека просто подгружается в момент установки соединения, соответственно поиск происходит по указанному пути.
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40084985
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кошмар... то есть в наличии версия от Эмбы, две версии от сторонних контор и неизвестное количество форков. Напоминает ситуацию с семейством наследников VirtualDub
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085011
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21.07.2021 10:20, Fr0sT-Brutal пишет:
> Кошмар... то есть в наличии версия от Эмбы,

оно заточено исключительно под IB.
потому его никто и не юзает.

зы: и код там - говно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085012
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-Rik-

Я уж подумывал ещё раз форкнуть, т.к. новый апи добавлять времени не хватит.

Давай, Юр. С нетерпением ждем твой форк. Две транзакции на один IBDatabase может не так актуально, как динамическая подгрузка клиента. Это самый основной затык :)
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085082
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий

21.07.2021 10:20, Fr0sT-Brutal пишет:
> Кошмар... то есть в наличии версия от Эмбы,

оно заточено исключительно под IB.
потому его никто и не юзает.

зы: и код там - говно.

Хз, взял из ХЕ2, чуток подточил для ФБ и юзаю в проде. Код говно, да, но снаружи это не проявляется
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085087
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21.07.2021 14:06, Fr0sT-Brutal пишет:
>
> Хз, взял из ХЕ2, чуток подточил для ФБ и юзаю в проде.

и ты ещё упрекал РИКа в форке
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085151
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий

21.07.2021 14:06, Fr0sT-Brutal пишет:
>
> Хз, взял из ХЕ2, чуток подточил для ФБ и юзаю в проде.

и ты ещё упрекал РИКа в форке

Я упрекал? о_О ни в коем разе, просто в них уже черт ногу сломит. Ну а что подточил - без этого они не юзабельны, одна захардкоженная либа чего стоит.
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085155
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21.07.2021 16:30, Fr0sT-Brutal пишет:
>
> Я упрекал? о_О ни в коем разе, просто в них уже черт ногу сломит.
> Ну а что подточил - без этого они не юзабельны, одна захардкоженная либа чего стоит.

у Джефа были попытки отойти от "генеральной линии Партии".
для этого он перевёл все функции клиентской либы на интерфейсы,
дабы оная подгружалась по мере надобности, а не в секции Initialization .
но довести до ума (с заданием имени библиотеки) так и не смог.
возможно ему просто указали на "недопустимость оппортунизма".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085179
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий
у Джефа были попытки отойти от "генеральной линии Партии".
для этого он перевёл все функции клиентской либы на интерфейсы,
дабы оная подгружалась по мере надобности, а не в секции Initialization .
но довести до ума (с заданием имени библиотеки) так и не смог.
возможно ему просто указали на "недопустимость оппортунизма".
Posted via ActualForum NNTP Server 1.5

Переинженерил... простого LoadClientLib(LibPath) хватило бы без всяких извращений с интерфейсами
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085340
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21.07.2021 18:40, Fr0sT-Brutal пишет:
> Переинженерил... простого LoadClientLib(LibPath) хватило бы без всяких извращений с интерфейсами

это не модно!
он и работу с Events пытался на интерфейсы перевести.
один хрен не работало...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085664
-Rik-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал ставить ibx от MWA на Lazarus под Linux.

При первой попытке на машине отсутствовал FireBird. После установки IBX от MWA, Lazarus не запустился.
Удалил папку. Запустил Lazrus, удалил пустые ссылки на IBX.

При второй попытке был установлен FB4. Lazarus c IBX запустился. Набросал тестовое приложение, но подключиться к базе из него не удалось. IBExpert к базе подключается, свой IBX тоже подключается. IBX(MWA) так и не подключился у меня. Пробовал экспериментировать с опциями AuthClient, AuthServer, UserManager в firebird.conf, не помогло.

В связке Win + Lazarus + Ibx(mwa) + FB4 работает.

IBX(mwa) под Linux работает у кого-нибудь?


ps. Можно попробовать ещё добавить новые типы в текущий ibx, но не понятно как это всё использовать. Попробовал INT128 привязать, он читается, приходит в формате FB_I128 = array [1..2] of Int64, но как его дальше крутить и чем редактировать не понятно. Так-же точно с другими новыми типами.
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085666
-Rik-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Кошмар... то есть в наличии версия от Эмбы, две версии от сторонних контор и неизвестное количество форков. Напоминает ситуацию с семейством наследников VirtualDub

Есть ссылки? Хочется посмотреть чего там...
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085691
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-Rik-> INT128 ... array [1..2] of Int64

Они не совместимы что ли?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085708
-Rik-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
-Rik-> INT128 ... array [1..2] of Int64
Они не совместимы что ли?

В Lazarus есть тип int128rec, но на сколько он совместим с форматом в FB я не знаю. Вообще пока не понятно как 128 битные числа использовать на стороне Lazarus. У меня и надобности такой не было ни когда, поэтому даже не задумывался. Может у кого идеи какие есть?
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085710
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-Rik-Вообще пока не понятно как 128 битные числа использовать на стороне Lazarus

Точно так же, как и любые другие: переводить в строку и показывать пользователю. Что ещё с
числами из БД можно делать?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085712
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-Rik-
Есть ссылки? Хочется посмотреть чего там...

Ссылки на кого? От Эмбы в поставке RTL, от двух контор тут выше (visual-t, насколько я понял, это ты и есть?). А форки все сами для себя клепают)). Свои могу выложить, но не уверен, как там с лицензией - брал за основу эмбовские
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085718
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-Rik-
IBX(mwa) под Linux работает у кого-нибудь?

Последнюю версию не пробовал, но когда-то под 16 убунтой работало.
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085751
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-Rik-
Пробовал ставить ibx от MWA на Lazarus под Linux.

При первой попытке на машине отсутствовал FireBird. После установки IBX от MWA, Lazarus не запустился.
Удалил папку. Запустил Lazrus, удалил пустые ссылки на IBX.

При второй попытке был установлен FB4. Lazarus c IBX запустился. Набросал тестовое приложение, но подключиться к базе из него не удалось. IBExpert к базе подключается, свой IBX тоже подключается. IBX(MWA) так и не подключился у меня. Пробовал экспериментировать с опциями AuthClient, AuthServer, UserManager в firebird.conf, не помогло.

В связке Win + Lazarus + Ibx(mwa) + FB4 работает.

IBX(mwa) под Linux работает у кого-нибудь?


ps. Можно попробовать ещё добавить новые типы в текущий ibx, но не понятно как это всё использовать. Попробовал INT128 привязать, он читается, приходит в формате FB_I128 = array [1..2] of Int64, но как его дальше крутить и чем редактировать не понятно. Так-же точно с другими новыми типами.

Чтобы на Лазаре запустился британский ibx, нужно в корень лазаруса положить fbclient.dll/so/dylib соответствующей разрядности и перезапустить среду. Птичку ставить не обязательно.
А вот дальше у меня дело не пошло (нина винде, ни под линем). Его компоненты упорно орали, что не могут найти клиента. На мой вопрос, какого х@ра, автор невнятно ответил, что надо либо ставить полноценный сервак как службу, либо указывать в переменных окружения FIREBIRD или чи, как его там.

Короче, на тот момент были приоритеты разработки другие, я потому оставил этот вопрос на потом
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085767
-Rik-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док
-Rik-
Пробовал ставить ibx от MWA на Lazarus под Linux.

При первой попытке на машине отсутствовал FireBird. После установки IBX от MWA, Lazarus не запустился.
Удалил папку. Запустил Lazrus, удалил пустые ссылки на IBX.

При второй попытке был установлен FB4. Lazarus c IBX запустился. Набросал тестовое приложение, но подключиться к базе из него не удалось. IBExpert к базе подключается, свой IBX тоже подключается. IBX(MWA) так и не подключился у меня. Пробовал экспериментировать с опциями AuthClient, AuthServer, UserManager в firebird.conf, не помогло.

В связке Win + Lazarus + Ibx(mwa) + FB4 работает.

IBX(mwa) под Linux работает у кого-нибудь?


ps. Можно попробовать ещё добавить новые типы в текущий ibx, но не понятно как это всё использовать. Попробовал INT128 привязать, он читается, приходит в формате FB_I128 = array [1..2] of Int64, но как его дальше крутить и чем редактировать не понятно. Так-же точно с другими новыми типами.

Чтобы на Лазаре запустился британский ibx, нужно в корень лазаруса положить fbclient.dll/so/dylib соответствующей разрядности и перезапустить среду. Птичку ставить не обязательно.
А вот дальше у меня дело не пошло (нина винде, ни под линем). Его компоненты упорно орали, что не могут найти клиента. На мой вопрос, какого х@ра, автор невнятно ответил, что надо либо ставить полноценный сервак как службу, либо указывать в переменных окружения FIREBIRD или чи, как его там.

Короче, на тот момент были приоритеты разработки другие, я потому оставил этот вопрос на потом
Я путь к либе указал, компоненты про либу не ругаются, на логин ругается, у FB в логах то-же самое пишет, конекты видит, аутентификация не проходит.
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085813
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-Rik-,

По-хорошему, ему бы демку простую с ошибками состряпать. Он - товарищ очень упертый и читает сообщения избирательно.

Увы, пока в больничке, даже практически попробовать помочь разобраться не могу :(
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085941
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Принесли ноут, начал ставить.

Парень 6 nil-аргументов потерял :)
https://forum.lazarus.freepascal.org/index.php/topic,55285.msg413012.html#msg413012

Ладно. Исправили, смотрим дизайнер



кнопка Database задизайблена, путей к клиенту нету (только в дизайнере), попытка теста коннекта выдает ошибку.

Смотрим дизайнер


* имя БД надо сразу писать с протоколом и портом
* зато путь до клиента уже есть
* LoginPrompt даже при снятой галке вызывает диалог его запроса
* имя, пароль, чарсет автор стыдливо засунул в параметры

Попытка чекнуть свойство connected вызывает то же унылое окно с ошибкой.

Честно говоря, я в недоумении о_О
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085964
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

гм.
- кнопка browse задизаблена т.к. указан коннект remote, а понимать что там localhost и это тот же комп оно не обязано.
Собственно, да - логика лишняя и дурацкая, не надо там было вообще никогда ее дизаблить.

- в isc_attach_database передается полная строка коннекта, там нет разделения на сервер, порт и путь.
Разделение в диалогах коннекта - плюшка для удобства, перед коннектом все эти части собираются в одну строку, и она передается в АПИ ФБ.
Поэтому полная строка в databaseName - это норм.

Кстати, что за порт 330764 - вроде же номера портов не больше 65535 могут быть?
И localhos/330764 - тоже недопис.

Насчет "имя пароль и чарсет" - они и так в исходном IBX в параметрах, и всегда там были.
...
Рейтинг: 0 / 0
Lazarus + IBX
    #40085989
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

экзотичесий порт = версия + разрядность. Проверял на gbak - все робит без проблем. Про localhos t - да, посмотрел, поправил - картина та же.

Вообще, я разочарован в майнтейнере. Понима. опенсорс - но такой кустарщины даже я себе не позволяю.

С тоской ФИБы вспоминаются - вот уж, действительно, все познается в сравнении. Пока буду юзать последний форк от Юрия Копнина (ака Rik), возможно попробую снова на UIB пересесть.

Последние Zeos абсолютно неюзабельные с кучей AV в дизайнтайме. Про встроенный в Лазарь IBConnection даже говорит не хочется :(
...
Рейтинг: 0 / 0
25 сообщений из 203, страница 4 из 9
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus + IBX
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]