0

マスター/詳細モードのデータセットに問題があります。

アップデート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の詳細が空の場合にのみ発生します。

ベンチにキャッシュされたレコードへのすべての変更を維持し、ユーザーが[保存]ボタンをクリックした場合にのみ有効になるフレームワークがあります。私がしばらく見つけた解決策は、削除されたときの詳細レコードにあり、データベースですでに有効になっています。

何か助けはありますか?

4

1 に答える 1

-1

Delphi 2009 でも同じ問題に遭遇しました。変更をクリアするために CancelUpdates を使用する代わりに、DataSet Detail を閉じて再度開きました。しかし、より良い解決策があることを願っています。

ありがとう。

于 2018-08-10T06:37:29.523 に答える