Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Firebird 3.0 Ошибка Incompatible switch combination  [new]
Кареглазая_зая
Member

Откуда:
Сообщений: 40
Всем привет! После перехода с Fb 2.5 на 3.0 появилась такая ошибка Incompatible switch combination - Несовместимая комбинация переключателей. Может кто-то встречался с подобным? Что значит эта ошибка? Ошибка иногда появляется, иногда нет.
Код из отчета FastReport:

 while not qPoints.eof do
     begin
        qinsert.close;
        qinsert.sql.text :='select count(*) as kol from  tmp_svod_podrs where nzp_podr='+ qPoints.FieldByName('nzp_podr').Asstring;
        qinsert.open;
        if qinsert.fieldbyname('kol').asInteger=0 then
        begin
              qinsert.close;
              qinsert.sql.text :='insert into tmp_svod_podrs (status,nzp_podr,name) values (0,'''+ 
                                       qPoints.FieldByName('nzp_podr').Asstring+''','''+ qPoints.FieldByName('name').Asstring+''')';
              qinsert.open;
              qinsert.close;
              qinsert.sql.text :='commit ';
              qinsert.open;
        end;
        qPoints.next;
      end;
      qPoints.close;
29 июн 20, 23:37    [22159313]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 3.0 Ошибка Incompatible switch combination  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10575
Кареглазая_зая,

ужас!!!!

Не надо использовать DataSet для insert запросов, а уж тем более для commit. Кроме того надо использовать параметры а не пересобирать запрос "на лету".
29 июн 20, 23:43    [22159314]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 3.0 Ошибка Incompatible switch combination  [new]
Кареглазая_зая
Member

Откуда:
Сообщений: 40
Симонов Денис, это query
29 июн 20, 23:57    [22159321]     Ответить | Цитировать Сообщить модератору
 Re: Firebird 3.0 Ошибка Incompatible switch combination  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28886
Кареглазая_зая,

скорее всего firebird.msg не от той версии. Поэтому сообщение "не оттуда".

параметры - да, надо использовать.

А вот еще
qinsert.sql.text :='commit ';

это что за ... ерунда? Либо это не от Firebird код, либо у вас там ошибки в коде съедаются.
коммит делается вызовом метода компонент, а не SQL.

И наконец
qinsert.open;
qinsert.close;

опять ахинея. Query.Open вызывается только для запросов, которые возвращают набор записей.
Вам надо метод ExecSQL (или что там у вас) для insert (update/delete) вызывать.

Ну и, в цикле select count - это путь в обрыв.
30 июн 20, 00:01    [22159325]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить