Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBExpert Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
 Re: Вызов dll-форм из скрипта  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
Какой формат входных параметров у ibesConnectionInit?


Там еще можно использовать ту же строку параметров, которую ibec_CreateConnection понимает.
19 сен 20, 06:18    [22200320]     Ответить | Цитировать Сообщить модератору
 Re: Вызов dll-форм из скрипта  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
IBExpert
Вроде все исправил, проверяй.
Стало лучше.

Но нашлись новые баги
SET NAMES WIN1251;

SET CLIENTLIB 'fbclient.dll';

CONNECT 'Server:D:\MyDB.fdb' USER 'SYSDBA' PASSWORD 'masterkey';

EXECUTE IBEBLOCK
AS
BEGIN
  select 1 from rdb$database into :var;
END;
ibesScriptExecuteFile(FScripterHandle, 'test.sql', nil);
ibesScriptExecuteFile(FScripterHandle, 'test.sql', nil);
На втором запуске после оператора CONNECT возникает AV
Access violation at address 04F4EC14 in module 'IBEScript.dll'. Read of address 00000050.


Еще наткнулся на такую особенность. Для операторов
SET NAMES WIN1251;
SET CLIENTLIB 'fbclient.dll';
OnBeforeExecStatement вызывается, а OnAfterExecStatement нет. Мне не критично, но может так не задумывалось?
21 сен 20, 17:50    [22201469]     Ответить | Цитировать Сообщить модератору
 Re: Вызов dll-форм из скрипта  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
Дальше, есть такая таблица
CREATE TABLE MY_TABLE(
    ID  DM_PK /* DM_PK = INTEGER NOT NULL */
);
пишу такой скрипт
EXECUTE IBEBLOCK
AS
BEGIN
  SELECT t."ID" FROM my_table t rows 1 into :var;
END;
выполняю
ibesScriptSetConnection(FScripterHandle, FConHandle);
ibesScriptExecuteFile(FScripterHandle, 'test.sql', nil);
получаю ошибку
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, column 10.
"ID".
Если убрать кавычки вокруг ID, то все работает. IBExpert такой скрипт выполняет
21 сен 20, 18:14    [22201481]     Ответить | Цитировать Сообщить модератору
 Re: Вызов dll-форм из скрипта  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
_Vasilisk_
Если убрать кавычки вокруг ID, то все работает. IBExpert такой скрипт выполняет
Похоже на игнорирование третьего диалекта. Но в строке подключения он указан

db_name=Server:D:\MyDB.fdb;user_name=SYSDBA;password=masterkey;lc_ctype=WIN1251;clientlib=fbclient.dll;sql_dialect=3
21 сен 20, 18:50    [22201506]     Ответить | Цитировать Сообщить модератору
 Re: Вызов dll-форм из скрипта  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
_Vasilisk_
Похоже на игнорирование третьего диалекта.
Таки да. Если имя параметра изменить с sql_dialect на SqlDialect, то все работает
21 сен 20, 19:00    [22201514]     Ответить | Цитировать Сообщить модератору
 Re: Вызов dll-форм из скрипта  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
И еще вопрос: такой скрипт

UPDATE OR INSERT INTO MY_TABLE (.....);
..........
UPDATE OR INSERT INTO MY_TABLE (.....);
В IBExpert в заголовке Script Executive я вижу бегущий прогресс
(NNN) Uptating (or inserting into) MY_TABLE...
Можно эту строку получать в cbfOnIBEBlockProgress при вызове ibesScriptExecuteFile?

Сообщение было отредактировано: 21 сен 20, 19:16
21 сен 20, 19:19    [22201522]     Ответить | Цитировать Сообщить модератору
 Re: Вызов dll-форм из скрипта  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
В IBExpert в заголовке Script Executive я вижу бегущий прогресс
(NNN) Uptating (or inserting into) MY_TABLE...
Можно эту строку получать в cbfOnIBEBlockProgress при вызове ibesScriptExecuteFile?


Какое отношение это имеет к cbfOnIBEBlockProgress? cbfOnIBEBlockProgress дергается функцией ibec_Progress и только ей.
А лог выполнения скрипта, если он тебе необходим, нужно формировать в OnBeforeExecStatement и OnAfterExecStatement.
22 сен 20, 05:16    [22201652]     Ответить | Цитировать Сообщить модератору
 Re: Вызов dll-форм из скрипта  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
[На втором запуске после оператора CONNECT возникает AV


Исправил.
22 сен 20, 07:18    [22201660]     Ответить | Цитировать Сообщить модератору
 Re: Вызов dll-форм из скрипта  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
_Vasilisk_
Похоже на игнорирование третьего диалекта.
Таки да. Если имя параметра изменить с sql_dialect на SqlDialect, то все работает


Исправил.
22 сен 20, 07:19    [22201661]     Ответить | Цитировать Сообщить модератору
 Re: Вызов dll-форм из скрипта  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
IBExpert
А лог выполнения скрипта, если он тебе необходим, нужно формировать в OnBeforeExecStatement и OnAfterExecStatement.
Я так и думал, что ты так скажешь :)

В IBExpert формируется такая красивая строка. А тут придется самому парсить запрос. Ну да ладно
22 сен 20, 13:09    [22201833]     Ответить | Цитировать Сообщить модератору
 Re: Вызов dll-форм из скрипта  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
Спасибо. Все работает.

Это так и оставляешь?
_Vasilisk_
Еще наткнулся на такую особенность. Для операторов
SET NAMES WIN1251;
SET CLIENTLIB 'fbclient.dll';

OnBeforeExecStatement вызывается, а OnAfterExecStatement нет. Мне не критично, но может так не задумывалось?
22 сен 20, 14:05    [22201895]     Ответить | Цитировать Сообщить модератору
 Re: Вызов dll-форм из скрипта  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
_Vasilisk_
В IBExpert формируется такая красивая строка. А тут придется самому парсить запрос
Не увидел второй параметр в OnBeforeExecuteStatement.

Вопрос снят совсем
22 сен 20, 15:30    [22201974]     Ответить | Цитировать Сообщить модератору
 Re: Вызов dll-форм из скрипта  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
Спасибо. Все работает.

Это так и оставляешь?
_Vasilisk_
Еще наткнулся на такую особенность. Для операторов
SET NAMES WIN1251;
SET CLIENTLIB 'fbclient.dll';

OnBeforeExecStatement вызывается, а OnAfterExecStatement нет. Мне не критично, но может так не задумывалось?


Не смотрел еще, почему там OnAfterExecStatement не дергается. В принципе, должно.
23 сен 20, 05:41    [22202280]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
Все форумы / IBExpert Ответить