Dim rsstu As New ADODB.Recordset
rsstu.CursorLocation = adUseClient
rsstu.CursorType = adOpenKeyset
rsstu.LockType = adLockPessimistic
rsstu.Open "select * from 000", 222
rsstu.MovefirstDim rsstu2 As New ADODB.Recordset
rsstu2.CursorLocation = adUseClient
rsstu2.CursorType = adOpenKeyset
rsstu2.LockType = adLockPessimistic
rsstu2.Open "select * from 111", 222
rsstu2.Movelast
rsstu2.addnew
......
rsstu2(0)=rsstu(0)
.....             /这里是一个循环
rsstu2.update
 ......  
这段代码的功能是将表000中的内容写入表111,
如果有其他的办法的话更好,不甚感激。

解决方案 »

  1.   

    1.用delphi 的batchmove 构件,不用写程序也能实现
    2. delphi有ado构件,也可实现
      

  2.   

    batchmove好象只能用BDE呀!BDE的数据引擎太少了。var
      rsstu: OleVariant;
      rsstu2: OleVariant;
    begin
      rsstu := CoRecordset.Create;
      rsstu.CursorLocation := adUseClient;
      rsstu.CursorType := adOpenKeyset;
      rsstu.LockType := adLockPessimistic;
      rsstu.Open ('select * from 000', 222);
      rsstu.Movefirst  rsstu2 := CoRecoreset.Create;
      rsstu2.CursorLocation := adUseClient;
      rsstu2.CursorType := adOpenKeyset;
      rsstu2.LockType := adLockPessimistic;
      rsstu2.Open (select * from 111', 222);
      rsstu2.Movelast;
      rsstu2.addnew;
    ......
      rsstu2.Fields[0].Value := rsstu.Fields[0].Value;
    .....             /这里是一个循环
      rsstu2.update;
     ......  要引用ADOInt单元。
    上面定义变量时使用了OleVariant类型,是为了使用缺省参数。也可以声明为_Recordset,不过就不能用缺省参数了。
    引用ADOInt单元是为了使用ADO的常量(如adUseClient)。如果你知道这些常量的值,可以直接用整数代替它们,就不用引用这个单元了(不过要引用ComObj单元,并把CoRecordset.Create换成CreateOleObject('ADODB.Recordset');