2016-11-23 7 views
0

ビューをレコードソースとして作成しました。このビューは1つのテーブルと別のビューを2つのテーブルにまとめました。 チェックボックスをクリックすると、レコードチェックボックスが更新されるかどうかをチェックするアクセスコードで検証が行われます。チェックされていない場合、チェックボックスの値は0 /偽に戻されます。複数テーブルビューのフォームの更新時に書込み競合が発生しました。レコードとして

まず、チェックボックスのclick eventでこれを実行し、検証しないときにcheckbox value = falseを設定しようとしました。しかし、これはwrite conflictとなります。次に、私はそれの前にMe.Dirty = falseで試してみましたが、これも助けになりません(まだ書き込み競合を取得しています)。 checkbox.undoでも同じ結果が得られます。

before updateでこれを行うと思いましたが、単純なcancel=trueを使用すると、フォーカスが変更されず(同じレコードにフォーカスが移り、決してそこから移動することはありません)。

通常、書き込み競合メッセージを無視するために使用するものですが、メインテーブルのタイムスタンプが含まれていますが、これは動作しません(おそらくビューが複数テーブルベースなので)。

いくつかの追加情報:

  • ビューは、SQLサーバーに作成され、ビューの
  • 主キーにアクセスするためにリンクされているが(それが編集可能である)CREATE UNIQUE INDEXを実行することで設定されていますステートメント

どのように私はこれを動作させることができますか?

+1

* "チェックボックスの値をfalseに設定する" *これはUPDATE SQLで行いましたか?代わりにフォームのチェックボックスの値を設定すると、レコードが書き込まれていないため、書き込み競合が発生してはいけません。 – Andre

+0

SQL Serverは1と0を使用しますが、MS Accessは-1と0を使用します。これを行うためのコードはありますか? – Fionnuala

+0

@Fionnualaチェックボックスコントロールをtrue/falseに直接設定する場合、背後のcontrolsourceはSQL Serverのビットフィールドであり、アクセスは変換自体を(正しく)実行するので問題ありません。 – Nicolas

答えて

0

ボタンを使用して、チェックボックスのバインドフィールドをチェック/チェックしないように設定し、チェックボックス自体を非表示にするように修正しました。これはうまくいくようです(より良い)。

関連する問題