如题!!

解决方案 »

  1.   

    为什么要这么做,为什么不是对数据库操作。
    而且我觉得如果用query或Table的话没办法实现要用第三方控件TMemoryTable控件才可以!
      

  2.   

    而且用数据库操作的话速度要比Grid的速度快多了!
      

  3.   

    to DelUser(探索者) 对数据库操作有什么好方法呢?
    copy ->paste有什么好的语句?
      

  4.   

    SQL Server or Access?
    Access数据库有此字段
    SQL Server也最好在数据库中实现
      

  5.   

    这样做行吗?用一些中间变量把上一条记录每个字段的值都保存起来,然后副给新加这个.......,举例来说
    procedure TForm1.Button1Click(Sender: TObject);
    var
      str1, str2, str3, str4: string;
    begin
      str1 := adotable1.Fields[0].AsString;
      str2 := adotable1.Fields[1].AsString;
      str3 := adotable1.Fields[2].AsString;
      str4 := adotable1.Fields[3].AsString;
      adotable1.Insert;
      adotable1.Fields[0].AsString := inttostr(strtoint(str1) + 1);
      adotable1.Fields[1].AsString := str2;
      adotable1.Fields[2].AsString := str3;
      adotable1.Fields[3].AsString := str4;
      adotable1.Post;
    end;
      

  6.   

    我觉得用一个动态的或静态的数组会好一点,对于库的操作而言,可以将字段存放在一个数组内,在将字段的值存在一个数组内。泳联个变量存储数组中的值,得到入库的字符串。最后连接两个字符串,形成SQL就可入库了。
    我不太清楚你想怎么入库,不过我用ADO来做个示范。
    定义一个全局变量
    var
       iFields : integer;  //不清楚你的主键是什么类型,姑且认为是整型
    然后在你的实现内部写:
    var
       ArryFields,ArryValues : Array of String;
       strFields,strValues : String;
       strSql : String;
       i:integer;
    begin
       iFields := iFields +1;
       with AdoQueryTable do
       begin
           close;
           with Sql do
           begin
               clear;
               strSQL := 'Select * From 表名 Where Statement=statement';
               add('strSQL');
           end;
           Open;
           strFields := '';
           strValues := ''; 
           SetLength(ArryFields,FieldCount);
           SetLength(ArryValues,FieldCount);
           for i:=0 to FieldCount-1 do
           begin    //完成数组赋值,得到你要的改纪录的字段名合格字段得值
                ArryFields[i] := Fields.Fields[i].FieldName;
                ArryValues[i] := FieldByName(ArryFields[i]).Asstring; 
           end;
           for i:=1 to Length(ArryFields)-1 do
           begin
                strFields := strFields+ArryFields[i]+',';   //形成字符串
                strValues := StrValues+ArryValues[i]+','; 
           end; 
           strSQL := 'Insert into 表名 (主键名+Copy(strFields,1,Length
                     (strFields)-1) Values  
                    (iFields+Copy(strValues),1,Length(strValues)-1)';
       end;
       ExecSql;
       
    end;
    该方法可以用,我曾多次用过,不过本断代码我是直接在这里写的,可能有错误标点符号等错误,请谅解。