マスター/詳細モードのデータセットに問題があります。
アップデート1、DBExpress、Firebird2.5.2でDelphiXEを使用し ています。マスターソース/マスターフィールドプロパティで定義された2つのテーブル(CDS)間にマスター/詳細関係があります。
私の問題は、詳細データセット内のすべてのレコードを削除し、マスターClientDatasetを編集した後、Detail ClientDataSetでCancelUpdatesメソッドを呼び出すと、「キー違反」例外を受け取ることです。
この問題は、詳細データセットが空の場合にのみ発生しました。
誰もが何が問題になるのか考えていますか?
編集: 人々、私がフレームワークで解決した「キー違反」の問題。問題の原因がわからないため、一時的に例外を切り分けました。
この同じ構造には、別の問題があります。この場合は、バグのDBExpressのようです。
以下のリンクでは、問題をシミュレートするための例を作成しました。
http://www.4shared.com/zip/gmT7GVPf/MestreDetalheBug.html
問題をシミュレートする方法:
1)マスターレコードを選択します。
2)グリッドの詳細で、すべてのレコードを削除しますが、保存はしません。DbNavegadorによってのみ削除します。
3)グリッドマスターに移動し、マスターレコードの値を変更します。レコード詳細グリッドが詳細に再表示されることがわかります。
この問題は、DataSetの詳細が空の場合にのみ発生します。
ベンチにキャッシュされたレコードへのすべての変更を維持し、ユーザーが[保存]ボタンをクリックした場合にのみ有効になるフレームワークがあります。私がしばらく見つけた解決策は、削除されたときの詳細レコードにあり、データベースですでに有効になっています。
何か助けはありますか?