2011-06-24 34 views
0

有點歷史: 我有一個DBlistbox包含textt描述,我只是將這些代碼存儲在mysql表格顯示在dbgrid中。用戶可以選擇多個選項,我喜歡處理這些選項並將其作爲逗號分隔值存儲在其中一列中(該列在dbgrid中不可見)。Delphi 2007無法使用源代碼修改beforescroll事件中的數據錯誤:數據集不在編輯或插入模式下

現在,當用戶使用事件Afterscroll和Formcreate滾動瀏覽dbgrid時,我可以填充列表框。但是當我嘗試處理列表並更新dbrgid後面的myquery時,出現錯誤,提示'數據集未處於編輯或插入模式' - 我在此之前執行此操作

請幫忙! 我試圖將數據集設置爲編輯模式,然後更改數據發佈dbgrid似乎有有趣的字符

回答

1

如果我得到你的權利,DBListBox不連接到網格中的數據集?這將解釋爲什麼當您更改DBListBox中的數據時,網格的數據集未設置爲編輯模式。

無論如何,只要你改變了必須進入mysql表的數據,你應該把這個數據集切換到編輯模式。然後,您可以將逗號分隔值的編碼放入OnBeforePost事件中。

當數據集在列表框的數據沒有任何變化的情況下滾動時,不需要存儲任何數據。這是通過上述方法實現的,因爲沒有編輯模式,在這種情況下不會發生BeforePost事件。

+0

謝謝您的回覆。是的列表框沒有鏈接到表。列表框會在用戶滾動到下一行時更新,在列表框中突出顯示用戶選擇的選項。我想要做的就是在滾動之前更新網格,使事情變得複雜我已經設置了cachedupdate = true,所以如果用戶決定取消更新將被髮布到數據庫。可能是我對這一切都是錯誤的。如果你有更好的方法我是所有的耳朵 – Amiru

+0

你可以按我在我的回答中描述的方式做。當用戶更改列表框中的某些內容時,將數據集設置爲編輯模式。然後,當您滾動數據集時,會自動發佈帖子,這應該會觸發BeforePost事件。在那裏,您可以根據需要寫入字段。 –

+0

出色的工作原理,我甚至在列表框中使用點擊來更新,因爲在dbgrid中cachedupdate設置爲true。再次感謝您的幫助。 – Amiru

相關問題