delphi datasource append
场景:delphi DataSource.DataSet.Append时出现一条空记录,如何避免
delphi DataSource.DataSet.Append时出现一条空记录,如何处理?
TmpClientDataSet:=TOurwayClientDataSet.Create(self);
if InitClientDataSet(TmpClientDataSet, gShareData, 'Storage_GetStorageSparePart',4757) = RET_SUCCESS then
begin
myGrid.DataSource.DataSet.Edit;
//根据参数获取数据
TmpClientDataSet.vParameter := VarArrayof([gShareData.sAccountID,oweStorageID.Code,'0','0']);//获取参数
TmpClientDataSet.SuperProcess;
if TmpClientDataSet.RecordCount>0 then
begin
with TmpClientDataSet do
begin
TmpClientDataSet.First;
while not Eof do
begin
myGrid.DataSource.DataSet.Append;
myGrid.DataSource.DataSet.FieldByName('AccountID').AsString:=TmpClientDataSet.FieldValues['AccountID'];
myGrid.DataSource.DataSet.FieldByName('SparePartID').AsString:=TmpClientDataSet.FieldValues['SparePartID'];
myGrid.DataSource.DataSet.FieldByName('spname').AsString:=TmpClientDataSet.FieldValues['spname'];
myGrid.DataSource.DataSet.FieldByName('standard').AsString:=TmpClientDataSet.FieldValues['standard'];
myGrid.DataSource.DataSet.FieldByName('model').AsString:=TmpClientDataSet.FieldValues['model'];
myGrid.DataSource.DataSet.FieldByName('unit').AsString:=TmpClientDataSet.FieldValues['unit'];
myGrid.DataSource.DataSet.FieldByName('sptname').AsString:=TmpClientDataSet.FieldValues['sptname'];
myGrid.DataSource.DataSet.FieldByName('Price').AsFloat:=TmpClientDataSet.FieldByName('Price').AsFloat;
myGrid.DataSource.DataSet.FieldByName('BoothID').AsString:=TmpClientDataSet.FieldValues['BoothID'];
myGrid.DataSource.DataSet.FieldByName('bname').AsString:=TmpClientDataSet.FieldValues['bname'];
myGrid.DataSource.DataSet.FieldByName('MGuestID').AsString:=TmpClientDataSet.FieldValues['MGuestID'];
myGrid.DataSource.DataSet.FieldByName('gname').AsString:=TmpClientDataSet.FieldValues['gname'];
myGrid.DataSource.DataSet.FieldByName('OldNumber').AsFloat:=TmpClientDataSet.FieldValues['OldNumber'];
myGrid.DataSource.DataSet.FieldByName('NewNumber').AsFloat:=TmpClientDataSet.FieldValues['NewNumber'];
myGrid.DataSource.DataSet.FieldByName('Remark').AsString:=TmpClientDataSet.FieldValues['Remark'];
myGrid.DataSource.DataSet.FieldByName('State').AsInteger:=TmpClientDataSet.FieldValues['State'];
myGrid.DataSource.DataSet.FieldByName('SparePartTypeID').AsString:=TmpClientDataSet.FieldValues['SparePartTypeID'];
myGrid.DataSource.DataSet.Post;
TmpClientDataSet.Next;
end;
end;
end;
end;
finally
TmpClientDataSet.Free;
end;
添加完正常应该15条记录,但是myGrid第一条显示的却是空记录,后面的15条记录都正确??
------解决方案--------------------
去掉 myGrid.DataSource.DataSet.Edit; 这句看看.
delphi DataSource.DataSet.Append时出现一条空记录,如何处理?
TmpClientDataSet:=TOurwayClientDataSet.Create(self);
if InitClientDataSet(TmpClientDataSet, gShareData, 'Storage_GetStorageSparePart',4757) = RET_SUCCESS then
begin
myGrid.DataSource.DataSet.Edit;
//根据参数获取数据
TmpClientDataSet.vParameter := VarArrayof([gShareData.sAccountID,oweStorageID.Code,'0','0']);//获取参数
TmpClientDataSet.SuperProcess;
if TmpClientDataSet.RecordCount>0 then
begin
with TmpClientDataSet do
begin
TmpClientDataSet.First;
while not Eof do
begin
myGrid.DataSource.DataSet.Append;
myGrid.DataSource.DataSet.FieldByName('AccountID').AsString:=TmpClientDataSet.FieldValues['AccountID'];
myGrid.DataSource.DataSet.FieldByName('SparePartID').AsString:=TmpClientDataSet.FieldValues['SparePartID'];
myGrid.DataSource.DataSet.FieldByName('spname').AsString:=TmpClientDataSet.FieldValues['spname'];
myGrid.DataSource.DataSet.FieldByName('standard').AsString:=TmpClientDataSet.FieldValues['standard'];
myGrid.DataSource.DataSet.FieldByName('model').AsString:=TmpClientDataSet.FieldValues['model'];
myGrid.DataSource.DataSet.FieldByName('unit').AsString:=TmpClientDataSet.FieldValues['unit'];
myGrid.DataSource.DataSet.FieldByName('sptname').AsString:=TmpClientDataSet.FieldValues['sptname'];
myGrid.DataSource.DataSet.FieldByName('Price').AsFloat:=TmpClientDataSet.FieldByName('Price').AsFloat;
myGrid.DataSource.DataSet.FieldByName('BoothID').AsString:=TmpClientDataSet.FieldValues['BoothID'];
myGrid.DataSource.DataSet.FieldByName('bname').AsString:=TmpClientDataSet.FieldValues['bname'];
myGrid.DataSource.DataSet.FieldByName('MGuestID').AsString:=TmpClientDataSet.FieldValues['MGuestID'];
myGrid.DataSource.DataSet.FieldByName('gname').AsString:=TmpClientDataSet.FieldValues['gname'];
myGrid.DataSource.DataSet.FieldByName('OldNumber').AsFloat:=TmpClientDataSet.FieldValues['OldNumber'];
myGrid.DataSource.DataSet.FieldByName('NewNumber').AsFloat:=TmpClientDataSet.FieldValues['NewNumber'];
myGrid.DataSource.DataSet.FieldByName('Remark').AsString:=TmpClientDataSet.FieldValues['Remark'];
myGrid.DataSource.DataSet.FieldByName('State').AsInteger:=TmpClientDataSet.FieldValues['State'];
myGrid.DataSource.DataSet.FieldByName('SparePartTypeID').AsString:=TmpClientDataSet.FieldValues['SparePartTypeID'];
myGrid.DataSource.DataSet.Post;
TmpClientDataSet.Next;
end;
end;
end;
end;
finally
TmpClientDataSet.Free;
end;
添加完正常应该15条记录,但是myGrid第一条显示的却是空记录,后面的15条记录都正确??
------解决方案--------------------
去掉 myGrid.DataSource.DataSet.Edit; 这句看看.