ADO與DBExpress是否可以合併使用?? |
缺席
|
ivankuo
中階會員 發表:132 回覆:272 積分:95 註冊:2002-11-21 發送簡訊給我 |
小弟想將ADO換成DBExpress元件,但是因為SQLStoreProc的元件無法在runtime時期自動得到parameter,先前已問過此問題
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=38929
所以採用ADOStoreProc元件來使用,但是遇到很奇怪的事情,
原來舊版的程式是完全使用ADO元件,是可以執行的,兩種元件混合使用後卻不行。相同的程式呼叫相同的store procedure,stored procedure 的執行內容只是 update 某個table某個欄位值。覺得很奇怪,那段程式碼都一樣,也沒有任何有關DBExpress的元件的程式碼。發生逾時過期的錯誤。真不曉得是兩種元件是否有干擾或打架了~~
------
ivankuo |
ivankuo
中階會員 發表:132 回覆:272 積分:95 註冊:2002-11-21 發送簡訊給我 |
小弟已經知道問題在哪裡,
小弟是用DBExpress ClientDataSet元件,其中SQLQuery的語法中有SubQuery敘述,小弟測試後發現,當我的ClientDataSet的PacketRecord有限制筆數,當我的subquery敘述中主要的table與subquery table關聯條件有用到主table的PK欄位的話,當程式執行起來,去查看SQL Server 2000 的Locks 會發現主table和subquery的table會被lock 但是 主table此時就無法備update 任何資料了,但可以新增或刪除。請問大家有遇到這樣的問題嗎?? 假設如下
T2的f1欄位為PK,就會發生此問題,若不是則不會有lock的問題。 select f1,f2,fa=(select bb from T1 where b1=T2.f1)
from T2
------
ivankuo |
ivankuo
中階會員 發表:132 回覆:272 積分:95 註冊:2002-11-21 發送簡訊給我 |
引言: 小弟已經知道問題在哪裡, 小弟是用DBExpress ClientDataSet元件,其中SQLQuery的語法中有SubQuery敘述,小弟測試後發現,當我的ClientDataSet的PacketRecord有限制筆數,當我的subquery敘述中主要的table與subquery table關聯條件有用到主table的PK欄位的話,當程式執行起來,去查看SQL Server 2000 的Locks 會發現主table和subquery的table會被lock 但是 主table此時就無法備update 任何資料了,但可以新增或刪除。請問大家有遇到這樣的問題嗎?? 假設如下 T2的f1欄位為PK,就會發生此問題,若不是則不會有lock的問題。 select f1,f2,fa=(select bb from T1 where b1=T2.f1) from T2 PS 補充一下,若ClientDataSet沒有限制資料筆數,或是ClientDataSet將資料全部載入(ClientDataSet.Last),就不會發生此問題了,Lock也會解除。ps 在補充:小弟用ADOQuery搭配ClientDataSet來測試,結果沒有此問題,我想應該是DBExpress的問題吧。 發表人 - ivankuo 於 2003/11/06 14:40:53
------
ivankuo |
ivankuo
中階會員 發表:132 回覆:272 積分:95 註冊:2002-11-21 發送簡訊給我 |
引言:問題已經不在標題中了,我想我還是換個標題吧~~~先結案~~引言: 小弟已經知道問題在哪裡, 小弟是用DBExpress ClientDataSet元件,其中SQLQuery的語法中有SubQuery敘述,小弟測試後發現,當我的ClientDataSet的PacketRecord有限制筆數,當我的subquery敘述中主要的table與subquery table關聯條件有用到主table的PK欄位的話,當程式執行起來,去查看SQL Server 2000 的Locks 會發現主table和subquery的table會被lock 但是 主table此時就無法備update 任何資料了,但可以新增或刪除。請問大家有遇到這樣的問題嗎?? 假設如下 T2的f1欄位為PK,就會發生此問題,若不是則不會有lock的問題。 select f1,f2,fa=(select bb from T1 where b1=T2.f1) from T2 PS 補充一下,若ClientDataSet沒有限制資料筆數,或是ClientDataSet將資料全部載入(ClientDataSet.Last),就不會發生此問題了,Lock也會解除。ps 在補充:小弟用ADOQuery搭配ClientDataSet來測試,結果沒有此問題,我想應該是DBExpress的問題吧。 發表人 - ivankuo 於 2003/11/06 14:40:53
------
ivankuo |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |