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

Откуда: От верблюда
Сообщений: 3331
Модераторы, закрепите, пожалуйста, тему.
2 сен 20, 17:05    [22191018]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
В SQL Editor сохраняются дефолтные параметры блока.

Пример: блок
EXECUTE IBEBLOCK (
  prm variant = 'A'
)
AS
BEGIN
  ibec_ShowMessage(prm);
END 
Жмем F9. Появляется запрос ввода параметров. Для параметра prm установлено значение A.

Теперь меняем дефолтное значение
EXECUTE IBEBLOCK (
  prm variant = 'B'
)
AS
BEGIN
  ibec_ShowMessage(prm);
END 
Запускаем, а для параметра установлено значение A
2 сен 20, 17:23    [22191034]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
В SQL Editor сохраняются дефолтные параметры блока.


Не дефолтные, а последние использованные. Вот поэтому и.
2 сен 20, 17:49    [22191053]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
IBExpert
Не дефолтные, а последние использованные
А можно тогда их как-то сбросить к дефолтным? Сейчас, когда знаю об этой особенности, открываю новое окно SQL Editor

Сообщение было отредактировано: 2 сен 20, 18:56
2 сен 20, 18:58    [22191083]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
EXECUTE IBEBLOCK
AS
BEGIN
  SELECT 1 FROM rdb$database AS DATASET ds;
END 
Parsing error
2 сен 20, 19:52    [22191099]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
EXECUTE IBEBLOCK
AS
BEGIN
  SELECT 1 FROM rdb$database AS DATASET ds;
END 
Parsing error


Это не лечится. Вставляй что-нибудь перед AS DATASET (WHERE 1=1), иначе парсер считает это алиасом таблицы.
3 сен 20, 04:22    [22191262]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
А можно тогда их как-то сбросить к дефолтным? Сейчас, когда знаю об этой особенности, открываю новое окно SQL Editor


Ну вот, переоткрыв окно. Зачем заводить входные параметры, если лень их вводить?
Можно их в локальных переменных с теми же дефолтами прописать. Или в Script Executive блок выполнять - там ничего спрашивать не будет.

Кнопочку очередную лепить не буду.
3 сен 20, 04:24    [22191264]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
При сравнении BIGINT поля с NULL получается
Invalid variant operation

EXECUTE IBEBLOCK
AS
BEGIN
  SELECT
    CAST(1 AS BIGINT)
  FROM
    rdb$database db
  AS DATASET ds;

  val = NULL;
  IF (ibec_ds_GetField(ds, 0) < val) THEN
    ibec_ShowMessage('TRUE');
  ELSE
    ibec_ShowMessage('FALSE');
END
Для остальных типов, вроде, работает
3 сен 20, 11:22    [22191424]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
При сравнении BIGINT поля с NULL получается
Invalid variant operation



Исправил.
4 сен 20, 05:14    [22191864]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
ibec_ExtractMetadata умеет добавлять данные в существующий файл? Что-то в документации не нашел.

А если нет, то можно добавить такую возможность?
14 сен 20, 20:28    [22196911]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
  res = 'Res: ';
  val = 5.6;
  res .= val;
  ibec_ShowMessage(res);
Сейчас у меня выводится
Res: 5,6
Как бы вместо запятой поставить точку? var_Cast(5.6, __typeString) тоже возвращает строку с запятой. ibec_FormatFloat возвращает с точкой, но там нужно правильно указать число знаков после запятой.

ibec_StringReplace использовать?

Сообщение было отредактировано: 15 сен 20, 16:30
15 сен 20, 16:34    [22197591]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
ibec_ExtractMetadata умеет добавлять данные в существующий файл? Что-то в документации не нашел.


Нет, не умеет. И не будет уметь.
16 сен 20, 07:19    [22198036]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
Как бы вместо запятой поставить точку? var_Cast(5.6, __typeString) тоже возвращает строку с запятой. ibec_FormatFloat возвращает с точкой, но там нужно правильно указать число знаков после запятой.

ibec_StringReplace использовать?


Можно и ibec_StringReplace.
Можно и ibec_FormatFloat: ibec_FormatFloat('0.########', 5.6)
Можно и ibec_Format: ibec_FormatFloat('%.g', 5.6)
16 сен 20, 07:31    [22198041]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
Таблица
CREATE TABLE TEST (
    ID         INTEGER NOT NULL,
    NAME       VARCHAR(32) NOT NULL
);

ALTER TABLE TEST ADD CONSTRAINT PK_TEST PRIMARY KEY (ID);
Блок
EXECUTE IBEBLOCK
AS
BEGIN
  FOR
    SELECT
      t.id
    FROM
      test t
    AS CURSOR
      cur_tst
  DO
    UPDATE test t SET
      t.name = 'abc'
    WHERE
      CURRENT OF cur_tst;
END; 
На UPDATE ошибка
Unknown cursor.
Dynamic SQL Error.
SQL error code = -504.
Invalid cursor reference.
Cursor CUR_TST is not found in the current context.


При таком блоке
EXECUTE IBEBLOCK
AS
BEGIN
  FOR
    SELECT
      t.id
    FROM
      test t
    AS CURSOR
      cur_tst
  DO BEGIN
    var = NULL;
    SELECT
      MIN(t.name)
    FROM
      test t
    WHERE
      t.id = cur_tst.id
    INTO
      :var;

    IF (:var IS NOT NULL) THEN
      UPDATE test t SET
        t.name = :var
      WHERE
        CURRENT OF cur_tst;
  END
END; 
на строке
IF (:var IS NOT NULL) THEN
ошибка
Access violation at address 004059D8 in module 'IBExpert.exe'. Read of address 00000060


И еще вопрос: можно как-то детализовать ошибку "Parsing error"? Не хватает номера строки возникновения и текста, вида "ожидалось А, а найдено Б". Если текст сложно, то хотя бы номер строки. Если у тебя и строк нет, то проблемный оператор. Очень тяжело искать на больших скриптах.
29 сен 20, 13:12    [22206386]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

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

На UPDATE ошибка


WHERE CURRENT OF вряд ли будет реализовано в ibeblock.
30 сен 20, 05:40    [22206878]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

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

И еще вопрос: можно как-то детализовать ошибку "Parsing error"? Не хватает номера строки возникновения и текста, вида "ожидалось А, а найдено Б". Если текст сложно, то хотя бы номер строки. Если у тебя и строк нет, то проблемный оператор. Очень тяжело искать на больших скриптах.


Вот что я у себя вижу, например:
+
IBEScript Version 2020.9.22.1 Copyright (c) 2002-2020 IBExpert Ltd (www.ibexpert.com)

Executing script: Block1.ibb
(Line: 15) : Executing IBEBlock...


Error in script: Block1.ibb
Error occurred while executing following statement (line 15):
-------- STATEMENT ----------
execute ibeblock
returns (htmlpage blob)
as
begin
htmlpage = '<P>Select a table from the list below:</P><SELECT ID="TableSelect">';
for select rdb$relation_name, rdb$relation_id from rdb$relations
orders by rdb$relation_name
into :rel_name, :rel_id
do
begin
rel_name = ibec_Trim(rel_name);
htmlpage = htmlpage || ibec_chr(13) || ibec_chr(10) || ' <option value="' || :rel_id || '">' || rel_name || '</OPTION>';
end
htmlpage = htmlpage || ibec_chr(13) || ibec_chr(10) || '</SELECT>';
end


-------- ERROR ----------
At line 6, column 17:
Parsing error!



Script executed with errors.
Total execution time: 0ms


А у тебя что?
30 сен 20, 05:47    [22206879]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

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

на строке
IF (:var IS NOT NULL) THEN
ошибка
Access violation at address 004059D8 in module 'IBExpert.exe'. Read of address 00000060



Исправил.
30 сен 20, 07:17    [22206883]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
IBExpert
А у тебя что?
Наверное отбой. В SQL Editor пишется просто Parsing Error. Но если кликнуть на ошибку, то на нужную строку (вернее на следующую за ней) все таки переходит.

В SQL Executive сообщение "At line 12, column 12: Parsing error!" и позиционирование правильное

К сообщению приложен файл. Размер - 12Kb
30 сен 20, 10:42    [22206933]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
[В SQL Editor пишется просто Parsing Error. Но если кликнуть на ошибку, то на нужную строку (вернее на следующую за ней) все таки переходит.

В SQL Executive сообщение "At line 12, column 12: Parsing error!" и позиционирование правильное


Не, правильное в SQL Editor :)
В строке 'var = NULL' синтаксических ошибок нет.
30 сен 20, 11:09    [22206941]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
Какая-то фигня происходит при создании курсора с TIMESTAMP полем.

Например, так
EXECUTE IBEBLOCK
AS
BEGIN
  FOR
    SELECT
      1,
      CURRENT_TIMESTAMP AS datetime
    FROM
      rdb$database
    AS CURSOR
      cur
  DO
    var_t = DATEADD(DAY, 1, cur.datetime);
END;
получаю ошибку
expression evaluation not supported.
Invalid data type in addition of part to DATE/TIME/TIMESTAMP in DATEADD.
если пробовать логировать
EXECUTE PROCEDURE sp_d_log(cur.datetime);
то в лог попадает значение "1"
На рабочей базе (на тестовой повторить не смог) получаю ошибку
Incompatible column/host variable data type.
Dynamic SQL Error.
SQL error code = -303.
conversion error from string "20-AUG-2020 16:21:32.0000".

Если в запросе выбирать только одно поле или вместо курсора использовать INTO vars, то все работает
7 окт 20, 17:44    [22210360]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
если пробовать логировать
EXECUTE PROCEDURE sp_d_log(cur.datetime);
то в лог попадает значение "1"


Можно просто в отладчике на закладку Last statement заглянуть - там все видно.
Разберемся...
7 окт 20, 18:58    [22210425]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
Какая-то фигня происходит при создании курсора с TIMESTAMP полем.


Проверь в сегодняшней версии.
8 окт 20, 08:29    [22210573]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
IBExpert
Проверь в сегодняшней версии.
Все заработало. Только наткнулся на такую особенность
EXECUTE IBEBLOCK
AS
BEGIN
  FOR
    SELECT
      t.id,
      t.datetime
    FROM
      test t
    AS CURSOR
      cur
  DO
    EXECUTE PROCEDURE sp_log(cur.datetime);
END;
В лог пишется "2020-10-08 17:07:12.1620"
А если такой код
EXECUTE IBEBLOCK
AS
BEGIN
  FOR
    SELECT
      1,
      CURRENT_TIMESTAMP AS datetime
    FROM
      rdb$database
    AS CURSOR
      cur
  DO
    EXECUTE PROCEDURE sp_d_log(cur.datetime);
END;
То в лог попадает "8-ОCT-2020 14:04:04.0000". Это вообще не критично, но смущают разные форматы

Сообщение было отредактировано: 8 окт 20, 14:02
8 окт 20, 14:05    [22210852]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
То в лог попадает "8-ОCT-2020 14:04:04.0000". Это вообще не критично, но смущают разные форматы


Очевидно, в первом случае значение в процедуру попадает уже в виде строки, а конвертация в строку выполнена на клиенте.
Во втором случае в процедуру приходит нормальный timestamp.
Если у t.datetime тип такой же, как у CURRENT_TIMESTAMP, то странно это.
8 окт 20, 15:41    [22210900]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
IBExpert
Если у t.datetime тип такой же, как у CURRENT_TIMESTAMP, то странно это.
CREATE TABLE TEST (
    ID         INTEGER NOT NULL,
    DATETIME   TIMESTAMP
);
CURRENT_TIMESTAMP, по идее, тоже TIMESTAMP
9 окт 20, 11:01    [22211331]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
CURRENT_TIMESTAMP, по идее, тоже TIMESTAMP


Чего-то ты не договариваешь... Вот тестовый пример:
EXECUTE IBEBLOCK
AS
BEGIN
  execute statement 'CREATE TABLE TEST_TIMESTAMP (TS  TIMESTAMP)';
  commit;

  insert into test_timestamp (ts) values (current_timestamp);
  commit;

  FOR
    SELECT
      ts as ts1,
      CURRENT_TIMESTAMP AS ts2
    FROM
      test_timestamp
    AS CURSOR
      cur
  DO
  begin
    var_t1 = cur.ts1;
    var_t2 = cur.ts2;
  end;
END;


В отладчике вижу, что все ОК: значения обеих переменных одинаково сформатированы и отображаются - как таймштамп, а не как строка.
9 окт 20, 17:57    [22211635]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

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

Вот тебе мой пример

+ Подготовка
SET SQL DIALECT 3;

CREATE TABLE LOGS (
    ID           BIGINT GENERATED BY DEFAULT AS IDENTITY,
    "TIMESTAMP"  TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    "MESSAGE"    BLOB SUB_TYPE 1 SEGMENT SIZE 128
);

ALTER TABLE LOGS ADD CONSTRAINT PK_LOGS PRIMARY KEY (ID);

SET TERM ^ ;

CREATE OR ALTER PROCEDURE sp_d_log (
  in_msg TYPE OF COLUMN logs."MESSAGE")
AS
BEGIN
  IN AUTONOMOUS TRANSACTION DO
    INSERT INTO logs (
      "MESSAGE"
    ) VALUES (
      :in_msg
    );
END^

SET TERM ; ^
+ Скрипт
EXECUTE IBEBLOCK
AS
BEGIN
  FOR
    SELECT
      CURRENT_TIMESTAMP AS datetime
    FROM
      rdb$database t
    AS CURSOR
      cur
  DO
    EXECUTE PROCEDURE sp_d_log(cur.datetime);

  EXECUTE PROCEDURE sp_d_log(CURRENT_TIMESTAMP);
END;
Результат
IDTIMESTAMPMESSAGE
15412.10.2020 12:57:19.20412-OCT-2020 12:57:19.0000
15512.10.2020 12:57:19.2042020-10-12 12:57:19.2040


К сообщению приложен файл. Размер - 7Kb
12 окт 20, 13:12    [22212659]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
Dimbuch®
Member

Откуда: Москва
Сообщений: 109
В процедуре надо указать тип
CREATE OR ALTER PROCEDURE sp_d_log (
  in_msg TYPE OF COLUMN logs."MESSAGE")
AS
BEGIN
  IN AUTONOMOUS TRANSACTION DO
    INSERT INTO logs (
      "MESSAGE"
    ) VALUES (
      CAST(:in_msg AS TIMESTAMP)
    );
END
12 окт 20, 14:09    [22212729]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

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

Вот тебе мой пример


Хех, так это совсем другое дело, и в нем все правильно:

1. EXECUTE PROCEDURE sp_d_log(cur.datetime) сначала препарируется как EXECUTE PROCEDURE sp_d_log(:Param), затем параметру через AsString присваивается значение cur.datetime. Здесь и происходит конвертация из таймштампа в строку.

2. EXECUTE PROCEDURE sp_d_log(CURRENT_TIMESTAMP) отправляется на сервер как есть, конвертация выполняется сервером.
12 окт 20, 17:02    [22212878]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
IBExpert
2. EXECUTE PROCEDURE sp_d_log(CURRENT_TIMESTAMP) отправляется на сервер как есть, конвертация выполняется сервером.
Хорошо. А откуда тогда такое поведение?
_Vasilisk_
CREATE TABLE TEST (
    ID         INTEGER NOT NULL,
    DATETIME   TIMESTAMP
);
_Vasilisk_
EXECUTE IBEBLOCK
AS
BEGIN
  FOR
    SELECT
      t.id,
      t.datetime
    FROM
      test t
    AS CURSOR
      cur
  DO
    EXECUTE PROCEDURE sp_d_log(cur.datetime);
END;

В лог пишется "2020-10-08 17:07:12.1620"


P.S. Завтра соберу полный пример

Сообщение было отредактировано: 12 окт 20, 21:16
12 окт 20, 21:19    [22212997]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
Хорошо. А откуда тогда такое поведение?


Я ж только что объяснил, п.1. Это равносильно выполнению запроса в SQL редакторе:
EXECUTE PROCEDURE sp_d_log(cast(:param as timestamp))

В лог попадет клиентский вариант конвертации таймштампа в строку, а не серверный.

Сообщение было отредактировано: 13 окт 20, 04:16
13 окт 20, 04:15    [22213123]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
А нельзя ли сделать так, чтобы
ibec_Cast(TRUE, __typeString);
ibec_Cast(FALSE, __typeString);
возвращало TRUE и FALSE, а не -1 и 0?
28 окт 20, 10:29    [22221964]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
А нельзя ли сделать так, чтобы
ibec_Cast(TRUE, __typeString);
ibec_Cast(FALSE, __typeString);
возвращало TRUE и FALSE, а не -1 и 0?


А если у кого-то это уже используется в коде, то и фиг с ним, да?
29 окт 20, 08:29    [22222748]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
Для функции ibec_CreateConnection ConnectionType __ctMySQL поддерживается? Если да, то в каком формате нужно задавать параметры подключения?
29 окт 20, 14:14    [22222916]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
Для функции ibec_CreateConnection ConnectionType __ctMySQL поддерживается?


Никогда не поддерживался. И в принципе MySQL давно не поддерживается.
29 окт 20, 14:31    [22222938]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
Почему для этого кода
EXECUTE IBEBLOCK
AS
BEGIN
  IF (
    FALSE AND
    ibec_MessageDlg('Test', __mtWarning, __mbOK) = __mrYes
  ) THEN
    ibec_ShowMessage('Nothing');
END; 
появляется сообщение Test? Или сокращенные булевские вычисления не реализованы?
3 ноя 20, 20:42    [22225983]     Ответить | Цитировать Сообщить модератору
 Re: IBEBlock: ошибки, вопросы, предложения - сюда  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
Или сокращенные булевские вычисления не реализованы?


Именно так. Оптимизированы только некоторые функции типа ibec_coalesce.
4 ноя 20, 04:51    [22226097]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / IBExpert Ответить