如何在DataGrid中像Excel一样多行批量录入数据!!!!
可以一行一行的新增,最后一起保存!!!
到了二十条时,提示保存;不到二十条也可以提交保存;
如果不保存,可以取消。
对于录入的数据可以校验有无重复值
可以在表格录入中删除不需要的数据,但是不能误删除数据表中的数据。
录入窗口用什么呢,dbgrid好像是数据绑定,而且总是出现第一个空行。
大家有过经验吗?给个思路吧,觉得很多地方都用得着的。
可以一行一行的新增,最后一起保存!!!
到了二十条时,提示保存;不到二十条也可以提交保存;
如果不保存,可以取消。
对于录入的数据可以校验有无重复值
可以在表格录入中删除不需要的数据,但是不能误删除数据表中的数据。
录入窗口用什么呢,dbgrid好像是数据绑定,而且总是出现第一个空行。
大家有过经验吗?给个思路吧,觉得很多地方都用得着的。
要批量保存,你得先把ADOQuery或ADOTable的LockType属性设成ltBatchOptimistic
批量保存用语句:ADOQuery1.UpdateBatch(arAll);
二十条提示,可以用一个变量,在ADOQuery1的AfterInsert事件下,每AfterInsert一次,变量加1,到20时再提示,是否保存
if(MessageBox(Handle,'是否保存?','提示',MB_YESNO)=IDYES)then
ADOQuery1.UpdateBatch(arAll);//此时顺便把20条的记数变量置0
判断是否有数据重复也可以在保存之前作Check
if(ADOQuery1.State=dsInsert )then
begin
if 判断是否重复函数 then
begin
MessageBox(Application.Handle,'代号已存在!','错误',0);
ADOQuery1.FieldByName('XX_CODE').FocusControl;
exit;
end;
end;判断是否重复函数可以这样写
function IsExist(TableName: string;FieldName:string;FieldValue:String): boolean;overload;
begin
with ADOQuery2 do
begin
SQL.Clear;
Close;
SQL.Add('Select 1 From '+TableName+' Where '+FieldName+'='''+FieldValue+'''');
Open;
end;
if ADOQuery2.RecordCount>0 then
result:=true//存在
else
result:=false;//不存在 end;
方法耳:将数据存入临时表tmTable ,然后insert into tablename select * from tmtable