为什么用ADOQery参数化查询 在客户端得不到结果? (50分)

  • 主题发起人 主题发起人 libook
  • 开始时间 开始时间
L

libook

Unregistered / Unconfirmed
GUEST, unregistred user!
哪位高手请指点
我在服务器端设了一个adoquery 设定为参数化查寻,在客户端Fetch params 参数后,
输入查找数值,clientdataset数据集却总是返回为空。我用的数据库是SQL Server 7.0,
但我在客户端直接用adoconnection连接上数据库,用adoquery却能得结果。我又试用
pardox数据库,在服务器端设定一query后,客户端也能得到数据,但用在adoqurey中
就不行。请问如何解决?
 
这个问题问的及时哈,关注,我正愁呢!!谢谢LIBOOK哈:)
 

Client端的法
procedure TFMHR52Y.BitBtn1Click(Sender: TObject);
begin
dtView2.Close;
DCQCClass3.Connected:=True;
DCQCClass3.AppServer.ChangeSql(MaskEdit1.Text+#13+MaskEdit2.Text);//是依时间区间输入
dtView2.Open;
end;

AP端的写法
procedure TClass1.ChangeSQL( const SearchValue: WideString);
var
AValueStringList,ByStringList:TStringList;
i,j,k:integer;
begin
AValueStringList:=TStringList.Create;
ByStringList:=TStringList.Create;
AValueStringList.Text:=SearchValue;

dtRP1501.Close;

//Reset SQL
for i:=dtRP1501.SQL.Count-1do
wnto 0do
if (pos('ORDER BY',UpperCase(dtRP1501.SQL))>0) or (pos('GROUP BY',UpperCase(dtRP1501.SQL))>0) then
begin
ByStringList.add(dtRP1501.SQL);
dtRP1501.SQL.Delete(i);
end;

for j:=dtRP1501.SQL.Count-1do
wnto 0do
if (Pos(' ',dtRP1501.SQL[j])<>0) and (Pos(' as ',dtRP1501.SQL[j])=0) then
dtRP1501.SQL.Delete(j);

if (AValueStringList[0]<>'') and (AValueStringList[0]<>'*') then
//dtView4.SQL.Add(' AND QCMTDT10.RemeltDATE='+sqldate1(AValueStringList[0],2));
dtRP1501.SQL.Add(' AND QCMTDT10.RemeltDATE='+''''+AValueStringList[0]+'''');
if ByStringList.count > 0 then
for k:= ByStringList.count-1do
wnto 0do
dtRP1501.SQL.Add(ByStringList[k]);
dtRP1501.Open;
end;
 
你用
ClientDataset.Data:=ClientDataSet.DataRequest(Params)看看。
服务器端写OnDataRequest事件
 
你这样试试:
先ClientDataSet1.Params[1].AsString:=str;
ClientDataSet1.Params[2]........:=...;
ClientDataSet1.Close;
ClientDataSet1.Open;
这样应该能取得数据。
 
adoquery是带空格的,是不是这个问题搞的鬼?
 
带空格的??What mean?参数带空格吗?只要传的参数的值(实际就是SQL语句的Where 条件)
有满足的,就能得到值呀!!
 
接受答案了.
 
后退
顶部