Конференция "Базы" » IbQuery + OnUpdateRecord [D5]
 
  • AlexeyMir (16.04.08 02:17) [0]
    Подскажите, пожалуйста что я делаю не так.
    У меня IbQuery+IBUpdateSQL+DBGrid, CachedUpdates:=True
    Где-то внутри текста есть IBDatabase1.ApplyUpdates([Query2])

    Я обрабатываю правильность введенных пользователем записей и тут же его предупреждаю о неправильности

    procedure IbQuery2UpdateRecord(DataSet: TDataSet; UpdateKind: TUpdateKind; var UpdateAction: TIBUpdateAction)
    begin
      if (Условие) then      //если все правильно
        begin
        IBUpdateSQL1.Apply(UpdateKind);  
        UpdateAction:=TIBUpdateAction(uaApply);
        end
      else                     //неправильно
       begin
        ShowMessage('Неверно введены данные');
        UpdateAction:=TIBUpdateAction(uaAbort);
        IbQuery2.RevertRecord;
      end
    end;

    Неправильно работает ветвь else если происходит операция вставки, т.е. когда UpdateKind=ukInsert.
    Выдается мое сообщение 'Неверно введены данные', а затем вылазит ошибка 'IbQuery2: Record not found'.
    Что можно с этим сделать?
  • Германн © (16.04.08 02:40) [1]

    > Неправильно работает ветвь else если происходит операция
    > вставки, т.е. когда UpdateKind=ukInsert.
    > Выдается мое сообщение 'Неверно введены данные', а затем
    > вылазит ошибка 'IbQuery2: Record not found'.
    > Что можно с этим сделать?
    >

    Try...except.
    Самый верный способ.
  • AlexeyMir (16.04.08 02:57) [2]
    Дело в том что (Условие) у меня следующее:
    if (IbQuery2.FieldByName('dat').NewValue>=Now()) then ....    
    поэтому мне нужно использовать OnUpdateRecord
  • Johnmen © (16.04.08 09:00) [3]
    Во-первых, забыть про IbQuery+IBUpdateSQL, как про атавизм. Использовать TIBDataSet.
 
Конференция "Базы" » IbQuery + OnUpdateRecord [D5]
Есть новые Нет новых   [134433   +21][b:0][p:0]