记录集传递显示问题。请帮忙,解决定有高分相送。应该不是难的,可是我比较笨!!!(100分)

  • 主题发起人 主题发起人 blackfiles
  • 开始时间 开始时间
B

blackfiles

Unregistered / Unconfirmed
GUEST, unregistred user!
三层结构,服务端因为一个自定义的方法得到了一个记录集,(由于该记录集是又通过了一个VB写的DLL得的,导入该DLL后,发现该记录集类型为:_Recordset15)
现在请问怎样将这个记录集送到客户端,在网格中显示??
有资料说用"在Win32中引入了一新变量Variant,可以通过Variant传递数组"的方法。
列子我也看了,可是却不能很好的将它与我的记录集很好的结合。
请哪位大侠明确指示(代码),定有高分相赠!!
谢谢
 
ClientDataSet.data := Variant;
 
To createnew:
什么意思?我现在得到的数据集,不可以赋予ClientDataSet.Data;是错误的。
你是让我把数据集转化为Variant???不知怎么做??
 
首先你要知道这个_Recordset15的结构,否则一切免谈。
然后你可以将这个_Recordset15里的记录一条条地读出,按自已的格式打成一个VARIANT包,
把这个VARIANT包传到客户端,按格式解开传给ClientDataset。
(如果知道ClientDataset.Data的格式最好了,像createnew说的直接等于就行。可惜只是如果)
 
TO Huzzz:
我现在可以读出其中的记录,却不知如何把他打成Variant包?请指教。
 
不知我是不是理解错了,读数据时
var
lv:variant;
begin
ClientDataset1.Close;
ClientDataSet1.Open;
lv:= ClientDataSet1.data;
ClientDataset1.Close;
end;
lv为你要的variant包。
 
错误修正:加//处为修改
 
to createnew:
他那个数据集不是TClienDataset类型,而是从VB的DLL中弄来的,不过你倒提醒我了。
blackfiles:
你既然能把数据读出来,那你直接写到一个ClientDataset中去,然后用ClientDataset
的DATA就行。
如果RECORDSET是一个TDATASET(不是也可以,反正只要能读出数据):
function GetRecordSetData(ClientDatasetRecSet: TClientDataset;
RecordSet: TDataset): OleVariant;
var
I: Integer;
begin
with ClientDatasetRecSetdo
begin
Close;
with FieldDefsdo
begin
Clear;
for I := 0 to RecordSet.FieldDefs.Count - 1do
AddFieldDef.Assign(RecordSet.FieldDefs.Items);
end;

CreateDataset;
//要先创建
Open;
RecordSet.First;
//漏了,补上,否则完了
while not RecordSet.Eofdo
begin
Append;
with Fieldsdo
for I := 0 to Count - 1do
Fields.Value := RecordSet.Fields.Fields.Value;
Post;
RecordSet.Next;//
end;

Result := data;
end;
end;

而ClientDataset.Data是可以直接赋值给另一个ClientDataset的。
 
我感觉你们都想复杂了。直接传递一个该类型的对象到客户端处理不就行了。
ado对象在delphi中有多个映射的对象,关键是你要找到合适的那一个。
 
多人接受答案了。
 
后退
顶部