Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.26;
Скачать: CL | DM;

Вниз

Два запроса на одной транзакции   Найти похожие ветки 

 
Garincho   (2004-11-26 15:04) [0]

Уважаемые Мастера подскажите. Такая проблема: на одной транзакции висят два запроса на добавление. По неизвестной причине не систематически один запрос (а именно второй) не добавляет записи в таблицу (а первый добавляет). Оба запроса на добавление. В чем может быть дело?

пример кода:

if (FID_Zakaz_Reserved>0)  then UpdOper_To_Zm // Если заказ был ранее зарезервирован
Else Begin

 try
  FixOper_To_ZM;
  except
   application.MessageBox("Внимание произошла ошибка при выполнении запроса -1!", "ОШИБКА", MB_OK + MB_ICONSTOP);
  ErrFix(555,851,"Выполнение запроса-1",Sklad_dtMod.id_zkz);
 end;

  if LvZak.Items.Count < 1 then begin
    application.MessageBox("Внимание список наименований заказа пуст!!", "ОШИБКА", MB_OK + MB_ICONSTOP);
   ErrFix(5559,8519,"список наименований заказа пуст",Sklad_dtMod.id_zkz);
  end;

  For ii:=0 to  LvZak.Items.Count-1 do
   with qryInsPrixRasx do begin

     Close;
      Params.ByName("ID_OPER").asInteger:=GetIdOper;
       Params.ByName("GOODS_ID").asInteger:=StrToInt(LvZak.Items[ii].SubItems[5]);
        Params.ByName("ID_ZAKAZ").asInteger:=Sklad_dtMod.id_zkz;
        // Params.ByName("TYPE_OPER_ID").asInteger:=2;

            Params.ByName("COUNT_GOODS").asFloat:=StrToFloat(LvZak.Items[ii].SubItems[2]);
           Params.ByName("EDIZM_ID").asInteger:=StrToInt(LvZak.Items[ii].SubItems[6]);
          Params.ByName("CENA_ZA_ED").asFloat:=StrToFloat(LvZak.Items[ii].SubItems[3]);
        Params.ByName("OBRAZEC_ONLY").asInteger:=StrToInt(LvZak.Items[ii].SubItems[8]);

       //  Params.ByName("TYPE_PAY_ID").asInteger:=1;//////////////

        Params.ByName("WORKER_ID").asInteger:=Sklad_dtMod.userProfile.id_usrstrax;

       try
         ExecQuery;
        except
         application.MessageBox("Внимание произошла ошибка при выполнении запроса -2!", "ОШИБКА", MB_OK + MB_ICONSTOP);
        ErrFix(555,851,"Выполнение запроса",Sklad_dtMod.id_zkz);
       end;

     Close;

   end;
end; // if FID_Zakaz_Reserved>0

  try
    Sklad_dtMod.CommitTransact;  //подтверждаем выполнение запросов
   except
    application.MessageBox("Внимание произошла ошибка при  подтверждении ТРАНЗАКЦИИ!", "ОШИБКА", MB_OK + MB_ICONSTOP);
   ErrFix(555,789,"Подтв транзакции",Sklad_dtMod.id_zkz);
  end;

     
                   

end;
//**************************************************************************************************************

procedure TfmPrnChek.FixOper_To_ZM;
begin

  with ibAdZapToZM do begin

     ParamByName("zk_id").asInteger:=Sklad_dtMod.id_zkz; //заказ
     ParamByName("tp_id").asInteger:=1;  //тип расчёта за наличные - 1
     ParamByName("w_id").asInteger:=Sklad_dtMod.userProfile.id_usrstrax;  //кто выполнил
     ParamByName("dtop").asDateTime:=now;
     ParamByName("to_id").asInteger:=2; //отпуск товара -2

      ParamByName("msnds").asFloat:=StrToFloat(fl_sum_all.Text); //деньги с ндс
//       ParamByName("mnds").asFloat:=(StrToFloat(fl_sum_all.Text)*0.18/1.18); //ндс
    ParamByName("mnds").asFloat:=
       Sklad_dtMod.Get_SummNDS(StrToFloat(fl_sum_all.Text),PercentNDS_ALL);
// константа PercentNDS_ALL -определена в Sklad_dtMod

      if trim(flDiscount.Text)="" then begin
      ParamByName("dscnt").asFloat:=0
      end
      else ParamByName("dscnt").asFloat:=StrToFloat(flDiscount.Text); //скидка

      if lvKlient.Selected=nil then begin
      ParamByName("prtnid").asInteger:=0 //партнер
      end
      else ParamByName("prtnid").asInteger:=StrToInt(lvKlient.Selected.SubItems[0]); //партнер

      ParamByName("pdrzdid").asInteger:=Sklad_dtMod.departmnt;
      ParamByName("IDVALUT").AsInteger:=idvalut; //id валюты
      ParamByName("KURS_CUR").asFloat:=Sklad_dtMod.StrToFloat_My(flKUE.Text); //курс

    ExecQuery;
    Close;

  end;

end;


 
Johnmen ©   (2004-11-26 15:13) [1]

А где запрос-то на добавление ?
И что есть CommitTransact, откуда это ?
Короче, меньше кода, больше сути :)


 
Garincho   (2004-11-26 15:27) [2]

:) Да суть в том что из 5000 случаев 6 проблемных (т.е второй запрос не отрабатывает) самому мне не удаётся поймать момент неудачи, а юзеры ничего сказать не могут (в тч и записать на бумагу что там написалось в ошибке :( ). CommitTransact - лежит в отдельном модуле:

procedure TSklad_dtMod.CommitTransact;
begin
  IBTransaction1.Commit;
  CheckActivTransact;
end;

procedure TSklad_dtMod.CheckActivTransact;
begin
 if (not Sklad_dtMod.IBTransaction1.Active) then     Sklad_dtMod.IBTransaction1.Active:=true;
end;



Страницы: 1 вся ветка

Текущий архив: 2004.12.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
1-1102739411
Eugeni
2004-12-11 07:30
2004.12.26
TListBox


1-1102927057
Руслана
2004-12-13 11:37
2004.12.26
Подскажите как удалить файл с аттрибутами ReadOnly?


1-1102688247
Frozzen
2004-12-10 17:17
2004.12.26
dfm файлы...


9-1085643700
xman
2004-05-27 11:41
2004.12.26
Игра дурак


3-1101817437
leha
2004-11-30 15:23
2004.12.26
dBase + ADO