Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2016, 14:27   #1
Ulik
 
Регистрация: 08.12.2010
Сообщений: 4
По умолчанию Update Транзакция

Добрый день!
Delphi 7 + Firebird 2,5
Добавление записи работает, изменение нет - помоги найти ошибку.
код на кнопке Сохранить
Код:
procedure TEditFiz_Form.Button1Click(Sender: TObject);
begin
  DataM.ModFizQuery.SQL.Text := 'update FIZF set CODE_TYPE = :CODE_TYPE,CODE_TYPE1 = :CODE_TYPE1,CODE_RES = :CODE_RES,'
  +'N_TY=:N_TY,DATA_TY = :DATA_TY,DATA_Z = :DATA_Z,CODE_Z = :CODE_Z,VVOD = :VVOD,POTR_KAT = :POTR_KAT,POTR_W = :POTR_W,'
  +'POTR_W_HOT = :POTR_W_HOT,IST_TP = :IST_TP,S = :S,Z_A = :Z_A,I_N = :I_N,I_Y = :I_Y,VL = :VL,BAL_TP = :BAL_TP,SE4_PR = :SE4_PR,'
  +'LENGHT1 = :LENGHT1,LENGHT2 = :LENGHT2,OPORA = :OPORA,I_KZ = :I_KZ,POTERYA_U = :POTERYA_U,DOP_TEH = :DOP_TEH,KZ_F=:KZ_F,'
  +'DOP1 = :DOP1,DOP2 = :DOP2 where N_TY = :N_TY and DATA_TY=:DATA_TY';
  DataM.ModFizQuery.Transaction.StartTransaction;
  try
  DataM.ModFizQuery.Params.ParamByName('CODE_TYPE').AsString := EditFiz_Form.CODE_TYPE.Text;
  DataM.ModFizQuery.Params.ParamByName('CODE_TYPE1').AsString := EditFiz_Form.CODE_TYPE1.Text;
  DataM.ModFizQuery.Params.ParamByName('CODE_RES').AsString := EditFiz_Form.CODE_RES.Text;
  DataM.ModFizQuery.Params.ParamByName('N_TY').AsString := EditFiz_Form.N_TY.Text;
  DataM.ModFizQuery.Params.ParamByName('DATA_TY').AsString := EditFiz_Form.DateData_ty.DataField;
  DataM.ModFizQuery.Params.ParamByName('DATA_Z').AsString := EditFiz_Form.DateData_z.DataField;
  DataM.ModFizQuery.Params.ParamByName('CODE_Z').AsString := EditFiz_Form.CODE_Z.Text;
  DataM.ModFizQuery.Params.ParamByName('VVOD').AsString := EditFiz_Form.ComboVvod.Text;
  DataM.ModFizQuery.Params.ParamByName('POTR_KAT').AsString := EditFiz_Form.POTR_KAT.Text;
  DataM.ModFizQuery.Params.ParamByName('POTR_W').AsString := EditFiz_Form.POTR_W.Text;
  DataM.ModFizQuery.Params.ParamByName('POTR_W_HOT').AsString := EditFiz_Form.POTR_W_HOT.Text;
  DataM.ModFizQuery.Params.ParamByName('IST_TP').AsString := EditFiz_Form.IST_TP.Text;
  DataM.ModFizQuery.Params.ParamByName('S').AsString := EditFiz_Form.S_TP.Text;
  DataM.ModFizQuery.Params.ParamByName('Z_A').AsString := EditFiz_Form.Z_A.Text;
  DataM.ModFizQuery.Params.ParamByName('I_N').AsString := EditFiz_Form.I_N.Text;
  DataM.ModFizQuery.Params.ParamByName('I_Y').AsString := EditFiz_Form.I_Y.Text;
  DataM.ModFizQuery.Params.ParamByName('VL').AsString := EditFiz_Form.VL.Text;
  DataM.ModFizQuery.Params.ParamByName('BAL_TP').AsString := EditFiz_Form.BAL_TP.Text;
  DataM.ModFizQuery.Params.ParamByName('SE4_PR').AsString := EditFiz_Form.SE_PR.Text;
  DataM.ModFizQuery.Params.ParamByName('LENGHT1').AsString := EditFiz_Form.LENGHT.Text;
  DataM.ModFizQuery.Params.ParamByName('LENGHT2').AsString := EditFiz_Form.LENGHT2.Text;
  DataM.ModFizQuery.Params.ParamByName('OPORA').AsString := EditFiz_Form.OPORA.Text;
  DataM.ModFizQuery.Params.ParamByName('I_KZ').AsString := EditFiz_Form.IKZ.Text;
  DataM.ModFizQuery.Params.ParamByName('POTERYA_U').AsString := EditFiz_Form.POTERYA_U.Text;
  DataM.ModFizQuery.Params.ParamByName('DOP_TEH').AsString := EditFiz_Form.DOP_TEH.Text;
  DataM.ModFizQuery.Params.ParamByName('KZ_F').AsString := EditFiz_Form.ComboKZ_f.Text;
  DataM.ModFizQuery.Params.ParamByName('DOP1').AsString := EditFiz_Form.DOP1.Text;
  DataM.ModFizQuery.Params.ParamByName('DOP2').AsString := EditFiz_Form.DOP2.Text;
    DataM.ModFizQuery.ExecSQL;
    DataM.ModFizQuery.Transaction.Commit;
    MainForm.Refresh.Click;
  except
    DataM.ModFizQuery.Transaction.Rollback;
    raise;
  end;
  close;
end;
Изображения
Тип файла: jpg Edit.jpg (29.0 Кб, 142 просмотров)
Ulik вне форума Ответить с цитированием
Старый 13.04.2016, 15:01   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

0. Нет записей В ТОЧНОСТИ удовлетворяющих условию.
вопрос: Почему?
ответ 1:
Цитата:
DataM.ModFizQuery.Params.ParamByNam e('DATA_TY').AsString := EditFiz_Form.DateData_ty.DataField;
По всей видимости НЕТ записей соответствующих ОБРЕЗАННОМУ (или наоборот РАСШИРЕННОМУ) датовременному значению.

работать с датами надо как с датами
Код:
ParamByName('DATA_TY').AsDatetime:=StrtoDateTime(EditFiz_Form.DateData_ty.DataField);  {или StrToDate или еще как-то получить нужную дату и время если надо }
ответ 2: В поле N_TY или в задании его значения есть лишний пробел.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 13.04.2016 в 15:08.
evg_m вне форума Ответить с цитированием
Старый 13.04.2016, 15:08   #3
Ulik
 
Регистрация: 08.12.2010
Сообщений: 4
По умолчанию

спасибо,попробую!
Ulik вне форума Ответить с цитированием
Старый 13.04.2016, 15:33   #4
Ulik
 
Регистрация: 08.12.2010
Сообщений: 4
По умолчанию

вот код при вставке записи, всё работает без проблем
Код:
procedure TEdit_UrForm.Button1Click(Sender: TObject);
begin
  DataM.MQuery.SQL.Text := 'update URF set CODE_RES = :CODE_RES, N_TY = :N_TY,'
   + 'DATA_TY = :DATA_TY, CODE_Z = :CODE_Z, POTR_W = :POTR_W, RAS4_FAZA_KZ = :RAS4_FAZA_KZ,'
   + 'W = :W, GOD = :GOD, KAT1 = :KAT1, KAT2 = :KAT2, KAT3 = :KAT3, N_Z = :N_Z, DATA_Z = :DATA_Z,'
   + 'ISTO4NIK = :ISTO4NIK, RAS4_I = :RAS4_I, KZ_F = :KZ_F, POTERYA_U = :POTERYA_U,'
   + 'SPOSOB_PI = :SPOSOB_PI, PODST = :PODST, STOR_POTR = :STOR_POTR, COMM_APPAR = :COMM_APPAR,'
   + 'RZAI = :RZAI, SDTU = :SDTU, UCHET = :UCHET, KOEFF_W = :KOEFF_W, SOGL = :SOGL,'
   + 'DOP1 = :DOP1, SROK_TY = :SROK_TY, DOP2 = :DOP2 where N_TY = :N_TY and DATA_TY=:DATA_TY';
  DataM.MQuery.Transaction.StartTransaction;
  try
    DataM.MQuery.Params.ParamByName('CODE_RES').AsString := Edit_UrForm.CODE_RES.Text;
    DataM.MQuery.Params.ParamByName('N_TY').AsString := Edit_UrForm.N_TY.Text;
    DataM.MQuery.Params.ParamByName('DATA_TY').AsString := Edit_UrForm.DateData_ty.Text;
    DataM.MQuery.Params.ParamByName('CODE_Z').AsString := Edit_UrForm.CODE_Z.Text;
    DataM.MQuery.Params.ParamByName('POTR_W').AsString := Edit_UrForm.POTR_W.Text;
    DataM.MQuery.Params.ParamByName('RAS4_FAZA_KZ').AsString := Edit_UrForm.FAZA_KZ.Text;
    DataM.MQuery.Params.ParamByName('W').AsString := Edit_UrForm.W.Text;
    DataM.MQuery.Params.ParamByName('GOD').AsString := Edit_UrForm.GOD.Text;
    DataM.MQuery.Params.ParamByName('KAT1').AsString := Edit_UrForm.KAT1.Text;
    DataM.MQuery.Params.ParamByName('KAT2').AsString := Edit_UrForm.KAT2.Text;
    DataM.MQuery.Params.ParamByName('KAT3').AsString := Edit_UrForm.KAT3.Text;
    DataM.MQuery.Params.ParamByName('N_Z').AsString := Edit_UrForm.N_Z.Text;
    DataM.MQuery.Params.ParamByName('DATA_Z').AsString := Edit_UrForm.DateData_z.Text;
    DataM.MQuery.Params.ParamByName('ISTO4NIK').AsString := Edit_UrForm.ISTO4NIK.Text;
    DataM.MQuery.Params.ParamByName('RAS4_I').AsString := Edit_UrForm.RAS4_I.Text;
    DataM.MQuery.Params.ParamByName('KZ_F').AsString := Edit_UrForm.KZ_F.Text;
    DataM.MQuery.Params.ParamByName('POTERYA_U').AsString := Edit_UrForm.POTERYA_U.Text;
    DataM.MQuery.Params.ParamByName('SPOSOB_PI').AsString := Edit_UrForm.SPOSOB_PI.Text;
    DataM.MQuery.Params.ParamByName('STOR_POTR').AsString := Edit_UrForm.STOR_POTR.Text;
    DataM.MQuery.Params.ParamByName('COMM_APPAR').AsString := Edit_UrForm.COMM_APPAR.Text;
    DataM.MQuery.Params.ParamByName('RZAI').AsString := Edit_UrForm.RZAI.Text;
    DataM.MQuery.Params.ParamByName('SDTU').AsString := Edit_UrForm.SDTU.Text;
    DataM.MQuery.Params.ParamByName('UCHET').AsString := Edit_UrForm.UCHET.Text;
    DataM.MQuery.Params.ParamByName('KOEFF_W').AsString := Edit_UrForm.KOEFF_W.Text;
    DataM.MQuery.Params.ParamByName('SOGL').AsString := Edit_UrForm.SOGL.Text;
    DataM.MQuery.Params.ParamByName('DOP1').AsString := Edit_UrForm.DOP1.Text;
    DataM.MQuery.Params.ParamByName('SROK_TY').AsString := Edit_UrForm.DateSrok_ty.Text;
    DataM.MQuery.Params.ParamByName('DOP2').AsString := Edit_UrForm.DOP2.Text;
    DataM.MQuery.ExecSQL;
    DataM.MQuery.Transaction.Commit;
    DataM.Query.Transaction.CommitRetaining;
    MainForm.MRefresh.Click;
  except
    DataM.MQuery.Transaction.Rollback;
    raise;
  end;
  close;
end;
Ulik вне форума Ответить с цитированием
Старый 13.04.2016, 16:05   #5
Ulik
 
Регистрация: 08.12.2010
Сообщений: 4
По умолчанию

спасибо,всё заработало, на мысли меня навели)
Ulik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Транзакция Aleksandr БД в Delphi 35 27.11.2013 19:34
Транзакция V_a_d БД в Delphi 14 12.11.2012 17:00
write-транзакция в MyDAC 3D Hunter БД в Delphi 7 05.03.2012 14:45
update Margana PHP 1 01.05.2011 19:55
update shad0w SQL, базы данных 3 27.10.2009 11:44