1、我首先创建了一个新的工程项目(应用程序服务器)。创建了一个Remote Data Module,名字为RDMapp,在它上面放了三个组件,TADOConnection、TADOQuery、TdataSetProvider。设置TADOConnection的ConnectionString属性连接SQL server2000。设置TADOQuery的Parameters的Name为emp_no,为ftstring型的,它的sql.strings='select * from gg_zybm where emp_no=:emp_no',TdataSetProvider的Dataset为TADOQuery。这个项目名为:wh_p.dpr。
2、创建客户端应用程序。也放置了三个组件,分别为DCOMConnection1、ClientDataSet1、DataSource1,一个文本框,一个查询按钮,一个DBGrid1。分别设置如下:DCOMConnection1的ServerName为 wh_p.RDMapp。ClientDataSet1的Params为'emp_no',ProviderName='DataSetProvider1',RemoteServer=DCOMConnection1。DBGrid1的DataSource为DataSource1。
查询按钮为事件为:
begin
ClientDataSet1.Close;
ClientDataSet1.Params.ParamValues['emp_no']:=edit1.text;
ClientDataSet1.Open;
end;
运行之后总是出现:DAX Error这个错误,错误名为Stack overflow。点击确定之后出现'不支持此接口'这个错误!我这个表中的记录一共不足十条,怎么能出现堆栈益这个错误呢?在我的系统目录下也有midas.dll啊!恳请有过三层结构经验的朋友帮检查一下我的这个步骤究竟有什么错呢?谢谢你们了!
2、创建客户端应用程序。也放置了三个组件,分别为DCOMConnection1、ClientDataSet1、DataSource1,一个文本框,一个查询按钮,一个DBGrid1。分别设置如下:DCOMConnection1的ServerName为 wh_p.RDMapp。ClientDataSet1的Params为'emp_no',ProviderName='DataSetProvider1',RemoteServer=DCOMConnection1。DBGrid1的DataSource为DataSource1。
查询按钮为事件为:
begin
ClientDataSet1.Close;
ClientDataSet1.Params.ParamValues['emp_no']:=edit1.text;
ClientDataSet1.Open;
end;
运行之后总是出现:DAX Error这个错误,错误名为Stack overflow。点击确定之后出现'不支持此接口'这个错误!我这个表中的记录一共不足十条,怎么能出现堆栈益这个错误呢?在我的系统目录下也有midas.dll啊!恳请有过三层结构经验的朋友帮检查一下我的这个步骤究竟有什么错呢?谢谢你们了!
试试,不行再说。
begin
ClientDataSet1.Close;
ClientDataSet1.Data:=ClientDataSet1.DataRequest('select * from tab_Name where emp_no='+#39+edit1.text+#39);
ClientDataSet1.Open;
end;服务端:function TContractServer.DataSetProvider1DataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
with ADOQuery1 do
begin
Close;
sql.Clear;
sql.Add(input);
open;
end;
result:=DataSetProvider1.Data;
end;完毕.
还是出现堆栈益出和不支持此接口的错误!
APPLICATION SERVER: procedure RDMappThgbTest.ClientQuery(const ClientValue: WideString);
begin
ADOQuery1.Close;
ADOQuery1.Parameters[i]:=ClientValue;
ADOQuery1.Open;
end;Client:
ClientDataSet1.Appserver.ClientQuery(Edit1.Text)
你可以自己加一些异常保护.客户端的调用也可以使用更为有效的早调用(使用接口).有什么问题可以再讨论.
另。ADO控件在COM中的速度优势不明显