私はDelphi 7 + Zeos + MySQLを使用しています。マスターテーブルをポストしようとすると、詳細データセットが最初にポストされ、データベースの参照整合性例外が発生します。マスター表のIDが必要です。マスター/詳細動作
この動作を元に戻すことはできますか?詳細の前にマスターテーブルを保持することはできますか?
私はDelphi 7 + Zeos + MySQLを使用しています。マスターテーブルをポストしようとすると、詳細データセットが最初にポストされ、データベースの参照整合性例外が発生します。マスター表のIDが必要です。マスター/詳細動作
この動作を元に戻すことはできますか?詳細の前にマスターテーブルを保持することはできますか?
私はそれがちょうど方法TDataSet
の仕事だと思う。未送信の明細レコードがある場合は、マスタを選択します。 Post
私は正しく覚えている場合はPost
に強制します。
だから私はあなたが何か持って推測しています:あなたが最初にマスターを掲載することにより、この問題を回避することができるはず
tblMaster.Insert;
tblMaster.FieldByName('foo').Value := 'foo';
tblDetail.Insert;
tblDetail.FieldByName('bar').Value := 'bar';
tblMaster.Post; // error!
tblDetail.Post;
:
tblMaster.Insert;
tblMaster.FieldByName('foo').Value := 'foo';
tblMaster.Post;
tblDetail.Insert;
tblDetail.FieldByName('bar').Value := 'bar';
tblDetail.Post;
eed3si9n、あなたの答えをありがとう、確かにそれは仕事を終わらせるための一つの方法ですが、この特定のケースでは当てはまりません、真実では、私はこの方法論を松葉杖として使っていますが、私はあなたを見せます:私は2つの異なるテーブル、基本テーブルとより詳細なフィールドを持つ補完的なテーブルへのインターフェイスを実行するフォームを持っています。ユーザーにとっては、唯一のものです.1つの「保存」ボタンを押す必要があります。 –
私はkillソリューションを持っていませんが、気楽な方法でそれをスキップしようとしています。マスターテーブルに挿入が発生すると、ディテールテーブルが無効になり、入力データがメモリにキャッシュされますポストマスタ後に、詳細を有効にしてメモリキャッシュデータを永続データセットにコピーします。 2つのテーブルでうまく動作しますが、2つ以上のテーブルで使用するように拡張しようとしています。 –
を私たちにコード –
を表示してください行う必要はありませんこれはデフォルトの動作です。私がこのように使用しようとするたびに、私は同じ問題を抱えています。 –