Microsoft Access 掲示板

メインフォームに入力しないとサブフォームに入力できないようにしたい / 5

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

If Me.NewRecord = False Then Exit Sub
これがあると新規レコード以外ではこれ以降のコードが実行されません。
このコードの前に、サブフォーム操作のコードを移動させてください。

Private Sub Form_Current()
   If IsNull(Me.取引先コード.Value) Then
        Me.受注明細.Enabled = False
   Else
        Me.受注明細.Enabled = True
   End If

   If Me.NewRecord = False Then Exit Sub
       Dim AutoID As String
       Dim MaxID As Variant
       AutoID = Format(Date, "yyyymmdd")
       MaxID = DMax("受注コード", "T_受注", "Left(受注コード,8)=" & AutoID)
   If IsNull(MaxID) Then
       Me.受注コード.DefaultValue = AutoID & "001"
   Else
       Me.受注コード.DefaultValue = AutoID & Format(Right(MaxID, 3) + 1, "000")
   End If

End Sub
通報 ...
  • 6

    ありがとうございます。

    If Me.NewRecord = False Then Exit Subの前にコードを移動させました。
    開いた時入力できない状態ですが、「取引先コード」に入力後も入力できない状態です。
    因みに、「取引先コード」にも

    Private Sub 取引先コード_AfterUpdate()
       If IsNull(Me.取引先コード.Value) Then
            Me.受注明細.Enabled = False
       Else
            Me.受注明細.Enabled = True
       End If
    End Sub

    が入っている状態ですが、これを消しても動作が同じ状態です。
    「レコード移動時」に書いたコードを消すと「受注明細」には常に入力できる状態になります。

    原因はなんでしょう?

    7
    hatena 2021/09/02 (木) 11:09:18 修正 >> 6

    「取引先コード」フィールドのデータ型はなんでしょうか。
    また、規定値の設定はどうなってますか。
    また、ルックアップの設定はどうなってますか。

    8

    おはようございます。

    「取引先コード」のデータ型は[短いテキスト]
    [規定値]は空欄
    [ルックアップ列]はデータベース規定

    となっています。
    よろしくお願いします。