Microsoft Access 掲示板

連結テキストボックスを非連結テキストボックスに? / 5

10 コメント
views
4 フォロー
5

不足している情報は勝手に推測して、テーブルは下記と仮定します。

T送付履歴
送付ID、発送日、会社ID、送付資料1、送付資料2、・・・

T会社情報
会社ID、会社名、部署名、郵便番号、住所1、住所2、・・・

先頭のフィールドが主キー

T送付履歴 に下記のフィールドを追加します。
仮(Yes/No型)、仮会社名、仮部署名、仮郵便番号、仮住所1、仮住所2

上記のテーブルからクエリを作成してフォームのレコードソースとします。
フォームは単票フォームとします。

会社名、部署名、郵便番号、住所1、住所2 のフィールドはテキストボックスとしてフォーム上に配置します。

「編集ロック」は「はい」にしておきます。(マスターが不用意に更新されないようにするため)
また、フィールドの追加やウィザードで配置したテキストボックスの名前はフィールド名と同じになっているので、それぞれの名前を、
txt会社名、txt部署名、txt郵便番号、txt住所1、txt住所2 というように変更しておきます。

あと「仮」フィールドもフォーム上に配置します。Yes/No型なので、チェックボックスになります。

フォームのモジュールに下記のイベントプロシージャを作成します。

'レコード移動時
Private Sub Form_Current()
    Call 仮_AfterUpdate
End Sub

'仮チェックボックス更新後処理
Private Sub 仮_AfterUpdate()
    If Me.仮 = True Then
        Me.txt会社名.ControlSource = "仮会社名"
        Me.txt会社名.Locked = False
        Me.txt部署名.ControlSource = "仮部署名"
        Me.txt部署名.Locked = False
        Me.txt郵便番号.ControlSource = "仮郵便番号"
        Me.txt郵便番号.Locked = False
        Me.txt住所1.ControlSource = "仮住所1"
        Me.txt住所1.Locked = False
        Me.txt住所2.ControlSource = "仮住所2"
        Me.txt住所2.Locked = False
    Else
        Me.txt会社名.ControlSource = "会社名"
        Me.txt会社名.Locked = True
        Me.txt部署名.ControlSource = "部署名"
        Me.txt部署名.Locked = True
        Me.txt郵便番号.ControlSource = "郵便番号"
        Me.txt郵便番号.Locked = True
        Me.txt住所1.ControlSource = "住所1"
        Me.txt住所1.Locked = True
        Me.txt住所2.ControlSource = "住所2"
        Me.txt住所2.Locked = True
    End If
End Sub

これで、仮チェックボックスにチェックを入れると、会社名、住所等を入力できるようになり、
仮会社名、仮住所1 ・・・に格納されます。

レポートでは、例えば会社名のテキストボックスのコントロールソースは、下記のように設定します。
=IIf([仮]=True,[仮会社名],[会社名])

以上、一例です。

通報 ...