2
我有2個ClientDatasets在主細節使用一個提供者。 的2個基礎查詢被連接作爲主詳細數據源和所述主設備具有細節作爲場(是TdataSetField)TClientDataset在主細節不關閉細節查詢
我的問題是關閉主(甚至細節)數據集關閉主控查詢,但其詳細情況不會關閉......如果我們稍後嘗試使用相同的參數重新搜索相同的查詢,則會導致問題。
我想詳細查詢應該反正關閉...
任何幫助嗎?
謝謝
我有2個ClientDatasets在主細節使用一個提供者。 的2個基礎查詢被連接作爲主詳細數據源和所述主設備具有細節作爲場(是TdataSetField)TClientDataset在主細節不關閉細節查詢
我的問題是關閉主(甚至細節)數據集關閉主控查詢,但其詳細情況不會關閉......如果我們稍後嘗試使用相同的參數重新搜索相同的查詢,則會導致問題。
我想詳細查詢應該反正關閉...
任何幫助嗎?
謝謝
這是Delphi XE中的一個問題。它已經在質量中心(QC)101264。 您還可以在EDN的forum
中看到它提供商應自動打開或關閉主數據庫和鏈接的詳細數據集。所以目前沒有代碼master.close;
,所以你可以添加一個detail.close;
,正如一些評論所暗示的。如果您正在使用IBX,那麼即使事務組件在存在主控細節(QC 107456)時也未提交。
There's兩種解決方法:
detail.close;
。請注意,這是而不是 MasterClientDataSet.onAfterClose。poFetchDetailsOnDemand
。如果您不希望ClientDataSet只按需獲取細節的記錄,這可能會產生不良影響。
所以你認爲關閉一個應該關閉另一個。你爲什麼不寫兩行代碼而不是一行:'Master.Active:= false; Detail.Active:= false;'完成。 – 2012-02-16 20:28:05
完成已經... MCDS.Close; DCDS.Close;問題是通過提供程序連接到DCDS的TQuery不會自行關閉...如果我再次請求相同的數據,它將不會重新編寫詳細查詢,因爲它已經用相同的參數打開了!如果數據庫中的數據發生了更改(並且在我的情況下發生了更改...),它不會刷新。轉到另一個主記錄將會很好,因爲細節的參數會發生變化,並且會重新打開查詢。 – 2012-02-17 00:23:59
你使用的是什麼版本的Delphi?我有一段時間沒有使用ClientDatasets,但我前段時間修改了默認提供程序,以更好地處理主細節(恕我直言)。它可以在http://cc.embarcadero.com/Item/24031 – 2012-02-17 01:22:46