关于在Socket中传送TDataSet的问题(100分)

  • 主题发起人 主题发起人 Vinson
  • 开始时间 开始时间
V

Vinson

Unregistered / Unconfirmed
GUEST, unregistred user!
本人想用Socket来传送DataSet,正如SQLServer那样,我尝试过用SendBuf函数,但客户端收到的Dataset不能在TDBGrid中显示,而且还出错。请各位大侠帮助。多谢了!
 
怎么没有人回答此问题?
 
这个问题不是很难吧!怎么还没有人回答呢?
 
关注!!!
 
看不懂题意
 
第一步:取得数据,用Provider进行打包。
第二步:用SendBuf发送。
第三步:在客户端得到包。
第四步:将包付值给ClientDataSet。用DBGrid->DataSource->ClientDataSet就可以
显示啦。
其实你可以分析一下Delphi的Midas原理。
 
to TYZhang:
怎样用Provider进行打包?可以详细点吗?最好给出源代码。
 
取 DataSetProvider1.Data 的数据封包。
 
怎样把TDataSource查到的数据表传给TClientDataSet.data呢?
 
写错了,怎样把查到的数据表传给TClientDataSet.data,还有怎样把客户端的TClientDataSet
中的Data传到TDataSource中.
 
用ClientDataSet是针对三层的写法,如果只用两层,用adodataSet控件也可以同样处理,
因为clientDataSet和AdoDataSet都有loadfromfile和SaveToFile的事件
1、先利用SaveToFile来保存为某一个文件;
2、发送和接收文件
3、loadfromfile到DataSet当中去
三层的写法和两层的我都试过,没有什么问题
 
To 巴蒂斯图塔:用文件需要转手,尤其是大数据量记录集,处理速度。。
To Vinson :1、在Socket服务端,用Query/AdoQuery查出需要的数据集;
2、用DataSetProvider指向Query/AdoQuery;
3、申请一Variant型的变量Data,使Data:=DataSetProvider.Data;
4、将变量Data用Socket流发出。

5、在客户端申请变量Data保存Socket取得的流;
6、赋值ClientDataSet使ClientDataSet:=Data;
7、用DataSource指向ClientDataSet;
8、用DBGrid指向DataSource。
 
TYZhang,说得不错,但我还想听一下其他人的意见,暂时不结束讨论。
 
To TYZhang:
6、赋值ClientDataSet使ClientDataSet:=Data;
应该为 ClientDataSet.Data:=Data吧?
 
To TYZhang:
4、将变量Data用Socket流发出。
怎样把变量Data变成流,然后用Socket.SendStream发送。
在客户端以如何接收流呢,Socket没有ReceiveStream呀!
 
用midas可以用data也可以用xml在socket用WaitForData等待,read读取,根据我的
经验还是直接用winsocket的好稳定,用serversocket本身的方法在多线程下莫名其
妙的出错
 
如果对方的应用程序不是用DELPHI来编写的又如何处理呢?
其他得到的数据格式能不能分析出来呢?
 
如果在客户端,数据有的增加或改到,
哪又如何提并到数据库中呢?
 
为什么这个程序运行时出错
procedure TForm1.Button1Click(Sender: TObject);
var
MyData:variant;
begin
ClientDataSet1.Data:=DataSetProvider1.Data;
ClientDataSet1.active:=True;
MyData:=ClientDataSet1.Data;
if ConnectedFlag then
DataServer.Socket.SendBuf(MyData,ClientDataSet1.DataSize);//出错处,出错号为10057.
end;
 
后退
顶部