有谁知道ADODATASET的数据集数据送到clientdataset的DATA中?(50分)

  • 主题发起人 主题发起人 AK-47
  • 开始时间 开始时间
A

AK-47

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把adodataset中的数据送到clientdataset的data中处理,行不行~
 
要增加一个Tdataprovider
那样,adodataset.data给Tdataprovider,然后再给clientdataset
我一般会用应用服务器过程procedure SQLSel(input:widestring;data1:olevarint);
 
to delphilove:
能不能show点代码看看。
 
没有人知道吗?
我的意思是想在C/S中用clientdataset,想把adodataset的数据放到clientdataset中去
 
增加一个TDataProvider,绑定DataSet为要传送的数据集,将TDataProvider.Data传送给ClientDateSet
 
是啊,
前面几人都已经说了, 用TDataProvider绑定即可
在delphi5开发人员批南中有:
function GetData( ADataSet:TDataSet):OleVariant;
begin
with TDataSetProvider.Create(nil)do
begin
DataSet := ADataSet;
Result := Data;
end;
end;
调用:
ClientDataSet1.Data := GetData(AdoDataSet1)
即可,
还有我以前写过直接将数据集转换:
function RcdsetToData(const ARcdSet: _RecordSet): OleVariant;
var
ads: TAdoDataSet;
cds: TClientDataSet;
FCount: Integer;
I: Integer;
begin
{ A Ado Dataset's(TAdoDataSet,TAdoTable,TAdoQuery) RecordSet
Trans to A ClientDataSet's RecordSet}
ads := TAdoDataSet.Create(Nil);
cds := TClientDataSet.Create(Nil);
try
ads.Recordset := ARcdSet;
FCount := ads.FieldCount;
for i:=0 to FCount-1do
begin
with cds.FieldDefs.AddFieldDefdo
begin
Name := ads.Fields.FieldName;
DataType := ads.Fields.DataType;
Size := ads.Fields.Size;
end;
end;
cds.CreateDataSet;
ads.First;
While not ads.Eofdo
begin
cds.Append;
for I:=0 to FCount-1do
cds.Fields.Value := ads.Fields.Value;
cds.Post;
ads.Next;
end;
Result:= cds.Data;
finally
ads.Free;
cds.Free;
end;
end;
调用时只要: ClientDataset1.Data :=RcdsetToData(AdoDataSet1.RecordSet)即可,
当然, 也可用AdoQuery等等
 
同意楼上的兄弟!
注意在客户端的程序 ClientDataset中修改的数据不会自动更新到
服务器中。要更新数据用 ClientDataset1.applyUpdates方法。
 
非常感谢powersite,及楼上各位兄弟的帮助!!!!!!!!
希望能和大家交个朋友,日后多多交流,我的QQ是13193300,MSN:lhzlhz196@msn.com
希望大家不嫌弃!
还要个问题想请教大家:相同条件下在c/s中使用clientdataset来处理数据和使用adodataset
哪个比较有效率?如果要用clientdataset在c/s中更新数据应该怎样做~,最好有代码~!

 
我也在新学三层结构,以前都用CS
 
高手哪里去 了~~
 
服务器上的:
function TComTest.DataRequest(const sql: WideString): OleVariant;
begin
with ADODataSet1do
begin
close;
commandtext:=sql;
open;
end;
result:=DataSetProvider1.Data;
end;
客户机上的:
private
MyVar:IComtest;
procedure TForm1.FormCreate(Sender: TObject);
begin
myvar:=cocomtest.createremote('服务器上的IP');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.Data:=myvar.DataRequest(edit1.Text);
ClientDataSet1.Open;
end;

这样你就可以在client的edit1中输入sql语句按button1得到查询结果了。
试试看吧, 哈哈
 
万分感激你的回答;但是我想你误会了,我是想在C/S上用clientdataset处理数据,而不是三层中处理
 
后退
顶部