请问在adodataset1对应的数据库从adodataset2添加记录,adodataset1对应的数据库得到
的记录全为空值,两个表的结构完全一样,在不同的access数据库中,为什么得到空值?
procedure TForm1.Button1Click(Sender: TObject);
var
count:integer;
begin        ADODataset2.Open;
        ADODataset2.First;
        for count:=1 to ADODataset2.RecordCount do
        begin
                ADODataset1.Append;
                ADODataset2.GetCurrentRecord(ADODataset1.ActiveBuffer);
                ADODataset1.Post;
                ADODataset2.Next;
        
      end;
end;
用bde的table组件完全正常通过,用ado的却有问题,其结果为插入记录有效,但记录的所有字段的值全为空。不知是ado的用法不正确,还是adodataset组件有问题

解决方案 »

  1.   

    delphi有個補丁是升級ado的,你打了沒有?
      

  2.   

    //试试这样:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    count:integer;
    begin        ADODataset2.Open;
            ADODataset2.First;
            for count:=1 to ADODataset2.RecordCount do
            begin
              ADODataSet1.RecNo:=i;
              ADODataset1.Append;
              ADODataset2.GetCurrentRecord(ADODataset1.ActiveBuffer);
              ADODataset1.Post;
              ADODataset2.Next;        
          end;
    end;
      

  3.   

    我的意思 是你的ADODataset1的当前记录就是空(Bof 或Eof),所以记录添加不到ADODataset1中去!
      

  4.   

    學習
    不過俺看了一下幫助﹐TCustomadodataset沒有override TDataSet中定義的這個virtual方法。而TBDEDataSet是override的
      

  5.   

    to wooden954(wooden) :
       我就是不明白,为什么adodataset2的数据不能存入adodatset1.activebuffer,换bde的却可以
      

  6.   

    to Duringwind(随风) :
       ado的补丁去哪找,能否给小弟一个详细的网址,或者发到小弟邮箱[email protected]
      

  7.   

    如果adodataset1,adodataset2全部换为ttable类型一点问题也没有,完全正常把adodataset2的数据插入adodataset1
      

  8.   

    你是不是可以换一个数据库试试,例如SQLServer,Paradox等,以确定是不是数据库类型的问题(ado和bde在某些数据库中的表现可能不是完全一致的)。
      

  9.   

    我用sqlServer试过了,直接报错,难道真的与数据库不同ado表现不同有关,小弟就是因为aADODataset2.GetCurrentRecord整条赋记录方便才用他,难道ado的不能这么做不是太遗憾了吗?不知各位有什么解决的办法(不用sql语句实现)