如何在DataGrid中像Excel一样多行批量录入数据!!!!   
可以一行一行的新增,最后一起保存!!!
到了二十条时,提示保存;不到二十条也可以提交保存;
如果不保存,可以取消。
对于录入的数据可以校验有无重复值
可以在表格录入中删除不需要的数据,但是不能误删除数据表中的数据。
 
录入窗口用什么呢,dbgrid好像是数据绑定,而且总是出现第一个空行。
大家有过经验吗?给个思路吧,觉得很多地方都用得着的。

解决方案 »

  1.   

    首先,用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;
      

  2.   

    用stringgrid,手动的将信息添加到格子中!这样,一切都需要手动来做!灵活性很强,相对简单!
      

  3.   

    同意china618(▲▲▲▲差五百分) 的观点
      

  4.   

    方法一:用stringgrid等表格控件,将用户输入的内容逐条添加
    方法耳:将数据存入临时表tmTable ,然后insert into tablename select * from tmtable