新手上路:三层结构中客户端根据参数从服务器端动态获得数据问题,诚心请教,可能问题很菜,见笑了!(100分)

L

lerry

Unregistered / Unconfirmed
GUEST, unregistred user!
服务器端用的是 ADOQuery 和 DataSetProvider ,客户端用的是 SocketConnection ,
ClientDataSet 和 DataSource ,数据显示用的是 DBGridEh
想要在客户端动态发送动态SQL给服务器,目前的做法是 在客户端得到参数,
设置ClientDataSet1.CommandText 的值,服务器端的 DataSetProvider poAllowCommandText
也已设成True ,现在的问题是 如果在服务器程序上的 ADOQuery SQL设成 "select * from ###"
并将其Active设成 True ,则在IE 中执行显示:Cannot perform this operation on an open dataset
错误,但如果置空 ADOQuery 的SQL属性,并将其Active设成 False ,则在客户端
得不到任何数据。看了看 李维书中的例子,好像也没怎么提到这个问题!由于是刚接触
Delphi,边学边做型的,所以有时候摸不着个头绪,请哪位给指点一下!谢了!
 
着点儿忙都没人帮吗?[:(]
 
SERVER端:声明一个GETDATa过程,参数为:sql:BSTR data:variant*(此参数做为返回数据)
参数的数量根据需要而定
代码如下
with adoquery1do
begin
if active then
close;
sql.clear;
sql.add(sql);
prepared;
open;
end;
result:=DataSetProvider.data;
adoquery1.close;
end;
 
接受答案了.
 
"在客户端动态发送动态SQL给服务器"
谁能帮我解释一下,这句是什么意思?
是含有参数的查询吗?比如:select * from table where field=:field,
 
顶部