Poniżej dwie niemal identyczne procedury. Chciałbym bardzo wiedzieć czemu druga z nich szwankuje.
Ta działa bez zarzutu
procedure Tf_zamowienia.b_edytuj_zamClick(Sender: TObject);
var id:string;
begin
id:=grid_zamowienia.Fields[0].AsString; //jedyna różnica z drugą procedurą (id=00007)
t_zamowienia.First;
while not t_zamowienia.EoF do
begin
if id=t_zamowienia.FieldValues['id_zamowienia'] then
begin
t_zamowienia.Edit;
t_zamowienia.fieldvalues['id_zamowienia']:=id;
t_zamowienia.fieldvalues['id_kontrahenta']:=e_id_kon.text;
t_zamowienia.fieldvalues['data_zamowienia']:=DateToStr(Date);
if e_termin.text<>'' then t_zamowienia.fieldvalues['termin']:=e_termin.text;
if e_zaliczka.text<>'' then t_zamowienia.fieldvalues['zaliczka']:=e_zaliczka.text;
t_zamowienia.fieldvalues['uwagi']:=uwagi;
t_zamowienia.Post;
end;
t_zamowienia.Next;
end;
DM.IBTr.CommitRetaining;
q_zamowienia.Close;
q_zamowienia.Open;
end;
Ta zdaje się nie działac. Nie wyrzuca żadnego wyjątku, jednak już np pole zaliczka nie zostaje aktualizowane, mimo że pętla wykonuje się prawidłowo. Program przechodzi przez funkcje edycyjne jak by ich nie wykonywał
procedure Tf_zamowienia.b_zatw_zamClick(Sender: TObject);
var id:string;
begin
id:=DM.l_id_zamowienia.Caption; //kluczowy moment, poniżej ShowMessage, który upewnia mnie że pobrane zostaje właściwe ID
showmessage(id); //(id=00007)
t_zamowienia.First;
while not t_zamowienia.EoF do
begin
if id=t_zamowienia.FieldValues['id_zamowienia'] then
begin
t_zamowienia.Edit;
t_zamowienia.fieldvalues['id_zamowienia']:=id;
t_zamowienia.fieldvalues['id_kontrahenta']:=e_id_kon.text;
t_zamowienia.fieldvalues['data_zamowienia']:=DateToStr(Date);
if e_termin.text<>'' then t_zamowienia.fieldvalues['termin']:=e_termin.text;
if e_zaliczka.text<>'' then t_zamowienia.fieldvalues['zaliczka']:=e_zaliczka.text;
t_zamowienia.fieldvalues['uwagi']:=uwagi;
t_zamowienia.Post;
end;
t_zamowienia.Next;
end;
DM.IBTr.CommitRetaining;
q_zamowienia.Close;
q_zamowienia.Open;
end;
[glowa]