如何設置clientdataset查詢參數 ( 积分: 100 )

Q

qis2000

Unregistered / Unconfirmed
GUEST, unregistred user!
各位兄弟姐妹:
我現在用socketconnection做一個三層的,
1.服務器端adoconnection連接數據庫
2.在服務器的datamodule中放一個tdatasetprovider,一個adoquery,adoquery沒有設置查詢語句
3.在客戶端,用socketconnection連接服務器端
4.在客戶端 的datamodule中加入clientdataset,連接服務器的datasetprovider
5.現在想用clientdataset1進行查詢,其
with clientdataset1do
begin
commandtext=:'select * from userinfo where userid=:userno';
params.parambyname('userno').value:='001';
active:=true;
end
執行時,找不到userno
請教各位,因為查詢的條件會不斷變化,所以無法象有些書上說的,在服務器端先加上params,
我要如何不在服務器端固定設置params的情況下,達到想要的結果
 
我的問題是太難了,還是太容易了,怎么都沒人回答呢?
 
兄弟姐妹们,帮忙看看吧!
 
在服務器端应该用 RemoteDatamodule 而不是 Datamodule。
错误提示没有写全:“執行時,找不到userno”是找不到 Param 还是 Field?
 
謝放kaida兄,我服務器上用的是remotedatamodule,錯誤提示寫的是
Line 1:Incorrect syntax near ':'
 
你的 ':' 是不是全角 ':' 或 : 和 userno 之间有空格?
 
kaida兄,這個問題已處理好了,在active前加一句,parsesql就可以了,具體為什么,要這樣,我也不知道,謝謝kaida兄的熱情幫助,先送分了,^_^
現在又遇到一個問題,就是在master-detail
clientdataset1為master,clientdataset2為detail,兩表之間用userid相連
clientdataset1.commandtext:='select * from userinfo',packrecords設為100
datasource1指向clientdataset1,datasource2指向clientdataset2,
clientdataset2.commandtext:='select * from userinfo_detail where userid=:userid'
clientdataset2的mastersource指向datasource1
在執行
clientdataset1.active:=true;
到下一句
clientdataset2.active:=true;
時,發生錯誤,信息為
Arguments are of wrong type,are out of acceptable range,or are in conflict with one another
 
我主从表的设置方法是:
detail 表的 CommandText 中不用参数,直接编辑 detail 的 MasterFields 属性(在弹出的 Field Link Designer 中设置关联字段),你可以试试。
 
kaida兄,
1.按你的方法是可以了,
2.請教一下,detail的數據會一次性下載到client端嗎,
3.detail的packrecords設成多少比較好,
4.我是剛寫三層的,如果方便的話,可以留下qq或msn或skype嗎?
謝謝
 
detail 表是与 Master 表关联,每次仅下载与 Master 表[red]一条记录[/red]相关联的数据,你不会 Master 表一条记录对应 detail 表海量记录吧?如果是的话,detail的packrecords 设为 100 就可以了。
 
kaida兄,
我現在是三層都在一台機器上,配置為C1.7,256mb內存,裝有卡巴,
1.現在有一個訂單表,master表有4000多,detail表有140000多,
2.master的packrecord 設為100,detail設成0,-1,100,打開時,要花很長時間,cpu也被占的滿滿的
3.當detail的packrecords設為0時,會有重複的記錄出現,成倍成倍的出現,設為-1則不會
4.這樣正常嗎?
 
你这种现象我还没遇到过。我一般是在服务器端(中间层)建立主从关系。在客户端设置packrecords。
 
kaida兄,謝謝你,在中間層建立主從關系,上述問題都沒了,速度也快的很,
現在碰到的問題是如何進行查詢,特別是複雜一點的查詢,要用到 commandtext來進行查詢,原來在客戶端建立主從關系的話,可以獲得原始的commandtext,再加上要求的查詢條件進行查詢,現在在中間層建立主從關系,不知如何進行比較複雜的查詢
真是麻煩kaida兄了
 
在中間層建立主從關系,只要客户端不改变主从关系,同样可以在客户端用 commandtext 來進行查詢。
 
kaida兄
在客戶端的clientdataset如何來獲得原始的commandtext

我在中間層的主表adoquery1,sql:='select * from userinfo'
客戶端clientdataset1的commandtext為空白
那么如何獲得clientdataset1的commandtext
 
无需获得,直接根据需要给 CommandText 赋值即可。
 
謝謝kaida兄,給予這么多幫助,謝謝!
 
kaida兄,我刚接触三层的东西,遇到的问题实在是太多,如果你不介意的话,我们可否另开帖继续向你请教,还是kaida兄有什么好的书或网站或QQ群可以推荐一下。
 
三层我也接触不多。我主要是阅读李维的《Delphi 5.x 分布式多层应用》系统篇。
我的QQ: 272441576,多交流。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
828
SUNSTONE的Delphi笔记
S
I
回复
0
查看
738
import
I
顶部