Fatura detay satirlarini girdigim tablonun Afterpost eventinde soyle bir kod var
Kod: Tümünü seç
var
netsum,vatsum,grandsum : currency;
begin
if (q_invheader.state in [dsinsert, dsedit]) and (q_invltemp.RecordCount > 0) then
begin
neytrns2.commit;
netsum := 0;
vatsum := 0;
grandsum := 0;
q_genel.Close;
q_genel.SQL.Clear;
q_genel.SQL.Add('select * from inv_lines_temp');
q_genel.Open;
q_genel.First;
while not (q_genel.eof) do
begin
if (q_genel.FieldByName('crn').AsString = 'EUR') and (q_invheader.Fieldbyname('inv_type').asinteger in [1,2,11,12,13]) then
begin
netsum := netsum + (q_genel.FieldValues['line_net']*q_invheader.FieldValues['exch_rate']);
vatsum := vatsum + (q_genel.FieldValues['line_vat']*q_invheader.FieldValues['exch_rate']);
grandsum := grandsum + (q_genel.FieldValues['line_grand']*q_invheader.FieldValues['exch_rate']);
end
else
begin
netsum := netsum + q_genel.FieldValues['line_net'];
vatsum := vatsum + q_genel.FieldValues['line_vat'];
grandsum := grandsum + q_genel.FieldValues['line_grand'];
end;
q_genel.Next;
end;
q_invheader.FieldByName('net_sum').AsFloat := netsum;
if q_invheader.Fieldbyname('inv_type').asinteger in [1,2,11,12,13] then
q_invheader.FieldByName('vat_sum').AsFloat := vatsum else q_invheader.FieldByName('vat_sum').AsFloat := 0;
q_invheader.FieldByName('grand_sum').AsFloat := grandsum;
q_genel.Close;
q_invltemp.Active := true;
end;
Diyelim ki kullanici 14. satirdaki kaydi edit etti ve posttan sonra tablo gridin en usttarafina konuslaniyor. Burada nasil bir yol izlemem lazim insert yada posttan sonra tablo bir alt satira konuslansin.
Bunun icin soyle bir yol izledim
Kod: Tümünü seç
i := q_invltemp.fieldbyname('id').asinteger; //committen once
.
.
.
q_invltemp.locate('id',(i+1),[]); //tablo aktiflestirildikten sonra