- ベストアンサー
Access初心者のためのフォームとテーブルの関連付け方法
- Access初心者がフォームのクリック時のイベントで開いた別のフォームを、リレーションの項目を入力しなくてもテーブルに反映させる方法を教えてください。
- 現在の状況は、顧客リスト、送付物、問合せの3つのテーブルがあり、顧客IDを使ってリレーションしています。フォームもそれぞれ作成済みです。
- 顧客フォームには問合せのサブフォームが組み込まれており、送付物フォームはボタンをクリックすると開くようになっています。顧客IDを入力しないとエラーが発生します。問合せのサブフォームでは顧客IDを非表示にしています。送付物にも顧客IDを選択しなくても反映させる方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> 教えて頂いたようにプロパティを設定しましたが、やはり顧客IDの入力が必要でした。 当方のサンプルでは問題なく 顧客ID が自動で入力されてます。 メインフォームは開いたままにしてますよね。 フォーム名やフィールド名に間違いはないですよね。 もう一度確認してみてください。 とりあえず別の方法も提示しておきます。 VBAを使う方法になります。 フォームの「デーティ時」のイベントプロシージャを下記のように記述します。 Private Sub Form_Dirty(Cancel As Integer) If IsNull(Me.顧客ID) Then Me.顧客ID = Forms!顧客リスト!顧客ID End If End Sub
その他の回答 (3)
- chayamati
- ベストアンサー率41% (260/624)
サブフォーム以外の処理としてはリンクされたフォームもありますが。 フォームウィザードの処理過程で添付のようにサブフォームが リンクされたフォームを選択するステップがあります。 ただし、主フォームの基になっているテーブルと リンクされたフォームの基になっているテーブル間で 1対N(1-∞)のリレーションシップが設定されていることが必須です。 >>テーブルは顧客リスト、送付物、問合せがあり顧客IDでリレーションになっています。 ?1.送付物の中に顧客IDというフィールドがあるのですか ?2.送付物とはどのようなものですか、 ある送付物は特定の顧客だけのもので、他の顧客とは無関係ということですか
お礼
ご回答ありがとうございます。 hatena1989様のやり方で解決できました。
- chayamati
- ベストアンサー率41% (260/624)
あなたの理屈にはこたえられません。ごめんなさい。 送り状(または納品書等)の類を作成したいのではありませんか だとすると 顧客テーブルと送付物テーブルがあるものとして (1)次の二つにテーブルを作成してください 1.送り状テーブル ..ID オートナンバー ..送り状No. ..日付 ..顧客ID (顧客テーブルのiDをルックアップ) .. 2.送り状サブテーブル ..ID オートナンバー ..送り状ID ..送付物ID (送付物テーブルのiDをルックアップ) (2)リレーションシップ設定 送り状テーブルと送り状サブテーブル間に 送り状テーブルのIDと送り状IDでリレーションシップを設定します。 (3)フォームの作成 フォームウィザードのナビに従って下さい フォームの基になるテーブルは 1.送り状テーブル 2.顧客テーブル 3.送り状サブテーブル 4.送付物テーブル です。 これに必要なフィールドを選択しますが、オートナンバー型の フィールドは対象外です。 ウィザードにより、 1.送り状テーブルと2.顧客テーブルがメインフォームの基データ 3.送り状サブテーブル、4.送付物テーブルサブフォームの基データ となります。 尚、メインフォームとサブフォームを別々に作成して後で繋ぐには メインフォームのデザインビューで添付のように、隠れているツールを 表示し[サブフォーム・サブレポート]をフォームフッターにドラッグし ナビに従います。 追伸マイフォームの基になるテーブルとサブフォームの基にるテーブル が1対∞でリレーションシップが作成できることが前提です。 ..
お礼
ご回答ありがとうございます。サブフォームの作成できるので、サブフォームではなく作動させたかったので質問したのですが。。。
- hatena1989
- ベストアンサー率87% (378/433)
送付物フォームの「顧客ID」テキストボックスの「既定値」プロパティを下記のように設定しておけばいいでしょう。 =[Forms]!顧客フォーム[]![顧客ID]
補足
ご回答ありがとうございます。教えて頂いたようにプロパティを設定しましたが、やはり顧客IDの入力が必要でした。他に方法はございますか?ご存じでしたら教えて下さい。
お礼
何度もありがとうございます。 ご指摘頂きましたメインフォームを開いたままにしていなかったのが原因のようでした。 自動入力されるようになりました。 VBAまで記載して頂きありがとうございます。 大変助かりました。ありがとうございました。