我有下列控制的一種形式:TDBEdit
,TDBMemo
,TDataSource
,TClientDataSet
TClientDataSet.Cancel失去TDBMemo值
如果用戶編輯字段,然後點擊表格上的一個按鈕,簡單地調用MyCDS.Cancel
方法(若要取消編輯),則TDBEdit
字段將還原爲其原始值,但TDBMemo
字段不會還原(它們被設置爲空白值)。
TClientDataSet
從MSSQLServer 2008數據庫填充。數據庫中的TDBEdit
字段爲nvarchar(255)
,TDBMemo
爲nvarchar(max)
或xml
字段。
綜觀在調試檢查器中的值(CTRL + F7,MyCDS.FieldByName( '更遠'),檢查)顯示了nvarchar(max)
字段的下列之一:
- 數據尺寸= 0
- 數據類型= ftWideMemo
- 尺寸= 1
這是所有的nvarchar(max)
和xml
字段的相同與否底層網絡連接現場有數據或沒有數據。
似乎在nvarchar(max)
(它被視爲ftWideMemo
)和TDBMemo
控件之間存在不兼容性。
有沒有人見過這樣的問題?你有什麼建議如何解決它?
「TDBMemo」連接的字段類型是什麼?另外,有兩個想法:1)爲什麼不簡單使用'SysUtils.Abort;',因爲異常應該是無聲的? 2)編輯開始之前禁用導航功能不是更容易,直到他們已經保存或取消編輯? –
@Ken - 我修改了這個問題。它現在反映了我最近的疑難解答 –
很好修改。 (+1,順便說一句 - 以前應該做到這一點)。我沒有在這臺機器上安裝SQL Server 2008,所以我將無法在明天之前嘗試重現此問題。恐怕我現在沒有任何建議。有幾個人在這裏經常遇到Delphi關於'TClientDataSet'的相關知識,所以你可能會很快得到答案。如果沒有的話,如果可以的話,我會在明天看到它的第一件事。 –