2010年1月11日月曜日

Access で参照整合性を設定したフィールドを含むレコードの入力をキャンセルする

参照整合性の設定

例えば、家計簿のようなものを作ろうと思い、以下のようなリレーションシップを持ったテーブルを作成した。ここでは、使った金額の 「支払い」 において、誰がどこへ支払い、その明細を管理したいもとする。 (抜粋)

CropperCapture2010[1].png

「支払」 テーブルの 「支払先ID」 フィールドは 「組織」 テーブルの ID を外部キーとして持ち、「支払人ID」 は 「支払人」 テーブルの ID を外部キーとして持ち、参照整合性を設定。

 

フォームの作成

次に、「支払」 テーブルを元にフォームを作成し、動作の確認をする。

CropperCapture2010[2].png

ここで、「支払先」 または 「支払人」 に値を入力をした後、フォームのデザインに戻りたいとする。もし、「支払先」 と 「支払人」 フィールドに参照整合性制約に抵触しない値を入力した場合、その値がデータベースに保存された後、フォームデザインの画面に切り替わる。しかし、参照整合性制約に抵触した値を入力した場合、フォームデザインに戻ろうと思っても、

バリアント型でない変数に Null 値を代入しようとしました。

とエラーダイアログが表示される。入力を取消したいと思い、入力した値を BackSpace キー消しても同じダイアログが表示。

 

Esc キーで入力のキャンセル

メニュー下の「レコードの削除」ボタンを押しても、全てのフィールドに正当な値が入力されてないとダメ。仕方がないので、とりあえず正当な値を入力しておき、その後レコードの削除するということで対応できる。しかし、これでは面倒。 (+_+)

[ACC97]: Access データベース内の関連テーブル内のレコードを編集します。 によると、

注: 入力ミスを修正、BackSpace キーを押します。 現在のフィールドに加えた変更をキャンセルするには、Esc キーを押します。 レコード全体に加えた変更をキャンセル、Esc キーを押します

(太字は引用者による)

あ~、Esc キーだったのか。基本的な操作すらわかってないな。。 ^^;