0

基本的に、私がやっていることはこれです:

  1. SalesLine テーブルの挿入、削除、または更新時に、その行の ProductCode をチェックして、割引または雑費が適用されるかどうかを判断しています。
  2. 料金と割引のルックアップ テーブルがあります
  3. 変更が加えられた場合は、割引/料金を効果的に削除する必要があります。これは、新しく変更された SalesLine が料金/割引の対象とならない可能性があるためです。

上記のことを行っているコードがありますが、次の副作用があります。

  • SalesTable フォームのグリッドでいくつかの行を強調表示し、ツールバーの削除ボタンをクリックすると、エラーが発生します。
  • エラーは、私のコードがいくつかの項目を削除したことが原因のようで、コードによって既に削除された後に、フォームも行を削除しようとしています。

親行が削除されたときにコードによって追加された割引または料金を消去する最良の方法は何ですか?ユーザーが同じ行を削除のために選択した場合にフォームが爆発することはありませんか?

前もって感謝します、これは私を夢中にさせています!

編集: キャッシュされたフォーム レコードが削除されようとしたときに受け取る特定のエラーは次のとおりです。

オーダー ライン (SalesLine) のレコードを編集できません。別のユーザー プロセスがレコードを削除するか、レコード内の 1 つ以上のフィールドを変更したため、更新の競合が発生しました。

4

1 に答える 1

1

added-by-code割引または料金を削除する最も明白な方法はsalesLine、オプションを使用してテーブルの削除アクションにテーブルを追加することCascadeです。また、テーブル上でタルベへのテーブル リレーションを作成しますSalesLine。このようにして、あなたの記録は自動的に削除されます。ただし、割引/料金が販売明細として保存されている場合は、これを行いません。

エラーメッセージは、販売明細を削除するときに他の販売明細を削除したことを推測させます:

  1. 「実際の」販売明細を削除すると、割引明細または請求明細が削除されます。
  2. 複数行の削除を行うと、#1 行の削除によって #2 行が削除されますが、フォーム バッファは更新されず、削除は失敗します。これは事実上、エラー メッセージが示す内容であり、レコードがフォームによって読み取られてから行が更新されました。

削除の問題の更新:

  1. コードをSalesLine削除メソッドから削除します。
  2. 後で削除する recId のセットを作成し、salesLineデータソースの delete メソッドに入力します。
  3. セットが null でない場合は、後で (おそらくアクティブなメソッドから) 行を削除します。
于 2011-10-31T09:02:29.560 に答える