次のコントロールを持つフォームがあります: TDBEdit、TDBMemo、TDataSource、TClientDataSet
ユーザーがフィールドを編集し、メソッドを呼び出すだけのフォーム上のボタンをクリックするとMyCDS.Cancel(編集をキャンセルするため)、TDBEditフィールドは元の値に戻りますが、TDBMemoフィールドは元に戻されません (空の値に設定されます)。
はTClientDataSet、MSSQLServer 2008 データベースから取り込まれます。TDBEditフィールドはデータベースnvarchar(255)にあり、TDBMemoまたはnvarchar(max)フィールドxmlです。
Debug Inspector (ctrl+F7、MyCDS.FieldByName('afield')、Inspect) で値を見ると、nvarchar(max)フィールドの 1 つについて次のように表示されます。
- データサイズ = 0
- データ型 = ftWideMemo
- サイズ = 1
これは、基になるフィールドにデータがあるかどうかに関係なく、すべてのフィールドnvarchar(max)とフィールドで同じです。xml
nvarchar(max)( として扱われるftWideMemo) とTDBMemoコントロールの間に非互換性があるようです。
誰もこのような問題を見たことがありますか? それを解決する方法について何か提案はありますか?