2013-03-31 37 views
2

我有一個帶有dbgrid和sqlquery組件的窗體。我正在嘗試用sqlquery填充dbgrid。當我收到消息時,「單向數據集不允許操作」。我不想使用客戶端數據集,因爲我不想使用「本地」數據副本,我想直接讀取和顯示數據。如何才能做到這一點?沒有客戶端數據集的dbgrid

回答

10

documentation的明確指出(強調):

TSQLQuery是單向數據集。與其他數據集不同,單向數據集不會緩存內存中的多個記錄。因此,您只能使用第一個和下一個方法進行導航。沒有內置編輯支持:您只能通過顯式創建SQL UPDATE命令或通過使用提供程序將數據集連接到客戶端數據集來編輯SQL查詢中的數據。

因爲沒有多條記錄的緩衝,你不能在任何方向上,除了向前發展,這意味着DBGrid不能顯示多行或支持滾動。

(事實上,所有的DBExpress組分是單向的,根據上Types of DBExpress DataSets的文檔。)

你必須要麼使用一個TClientDataSet或改變從使用DBExpress到訪問數據的其它一些方法例如ADO,或者使用TDBGrid以外的內容(如TStringGrid)顯示數據並實現您自己的內部存儲。但是,TClientDataSet不一定是磁盤文件,如果您檢索的數據量在內存中可管理;所有數據都可以保留在那裏,而不是「本地副本」(「內存數據集」)。

相關問題