delphi循环问题
procedure Tf_scgcd.BitBtn1Click(Sender: TObject);
var
aq: tadoquery;
begin
aq := tadoquery.Create(application);
aq.Connection := dmdb;
with aq do
begin
close;
sql.clear;
begin
sql.add('select colour,pcs1, pcs2 from sctzditm where tzdno = ' + '''' + qymst.fieldbyname('tzdno').AsString + '''');
open;
end;
with aq do
begin
DisableControls;
First;
while not eof do
begin
qysp.Append;
qysp.FieldByName('colour').AsString := fieldbyname('colour').AsString;
qysp.FieldByName('pcs1').AsFloat := fieldbyname('pcs1').AsFloat;
qysp.FieldByName('pcs2').AsFloat := fieldbyname('pcs2').AsFloat;
next;
end;
end;
end;
qysp.EnableControls;
aq.free;
end;
点第一下全都可以调进来,点第二下的时候会调用重复的
有没有办法在点第二下的时候如果有相同colour那么pcs1, pcs2的数量相加
比如 colour pcs1 pcs2
红色 10 10
白色 15 15
这是第一次调过来的
如果第二次调用相同的那么就是
colour pcs1 pcs2
红色 20 20
白色 30 30
[解决办法]
存在時改用edit,不存在就append;
while not eof do begin if qysp.locate('colour',fieldbyname('colour').AsString,[]) then qysp.Edit else begin qysp.Append; qysp.FieldByName('colour').AsString := fieldbyname('colour').AsString; end; qysp.FieldByName('pcs1').AsFloat := qysp.FieldByName('pcs1').AsFloat+fieldbyname('pcs1').AsFloat; qysp.FieldByName('pcs2').AsFloat := qysp.FieldByName('pcs2').AsFloat+fieldbyname('pcs2').AsFloat; next; end;