复制记录:把ADOQuery 中当前记录 ,复制到一个 TDataSetState 中(50)

  • 主题发起人 主题发起人 fanwendou
  • 开始时间 开始时间
F

fanwendou

Unregistered / Unconfirmed
GUEST, unregistred user!
函数功能:把数据集ADOQuery1的当前记录,作为结果集返回。怎么把 ADOQuery1 中的当前记录 (一条) 复制到另外一个 Data:TDataSetState 中。function TForm1.WriteBack():TDataSetState;var Q_temp:TDataSetState;begin Result:=nil; if not (ADOQuery1.IsEmpty) then begin Q_temp:=TADOQuery.Create(Self); //把当前记录的 复制到 Q_temp 中 //???? 不知道咋写!! Result:=Q_temp; end; end;
 
在线等!答对立即给分
 
ADOQuery1.Clone();
 
Q_temp.Clone(ADOQuery1); 复制的是ADOQuery1 整个数据集 而不是 ADOQuery1 当前记录。
 
一个循环可以解决了吧。tmpq.append;for i:=0 to adoqeury1.fieldcount-1 do tmp.fields.value:=adoqery1.fields.value;tmpq.post;
 
Q_temp 没有打开根本就不能 append
 
另外 Q_temp 根本就没有字段呀 !
 
超级晕。先搞个结构嘛,大致如此,你自己再折腾一下。 Q.Close; Q.FieldDefs.Clear; for i:= to bbb.fieldcount-1 do Q.FieldDefs.Add(bbb.fields.fieldname,bbb.fields.datatype,bbb.fields.size , False); Q.CreateDataSet;
 
Q_temp:=TADOQuery.Create(Self);是不是你的Q_Temp并不和数据库绑定?假如真的那样的话,你不妨用TClientDataSet.Provider1.DataSet := ADOQuery1;ClientDataSet.Data := Provider1.Data;这样就完成了将ADOQuery1中数据拷贝到ClientDataSet中了。
 
znxia 说的是 Q_Temp 不和数据库绑定。
 
To:znxia 这样的话,我取到的整个数据集。可是我只想取一条记录 。
 
把我的两个回答整合一下就解决了。
 
案例:procedure TForm1.Button1Click(Sender: TObject);var I:Integer;begin ClientDataSet1.Close; ClientDataSet1.FieldDefs.Clear; for I:=0 to Table1.FieldDefs.Count-1 do ClientDataSet1.FieldDefs.AddFieldDef.Assign( Table1.FieldDefs ); ClientDataSet1.CreateDataSet; ClientDataSet1.Append; for I:=0 to Table1.FieldDefs.Count-1 do ClientDataSet1.Fields.Value:= Table1.Fields.Value; ClientDataSet1.Post;end;
 
TO:aerobull Q_temp不和数据库绑定 无法打开 不能append
 
俺错了 感谢 aerobull 和 znxia 你们俩方法都可以。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
875
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部