2

メインフォームにコマンド ボタンがあり、クリックするとサブフォームの表示されたレコードのフィールドをループし、そのフィールドのすべてのデータの値を変更して、メインフォームのバインドされていないコンボボックスの値と一致させます。これは、ユーザーがサブフォームの複数のレコードを一度に更新できるようにするためです。コードは正常に動作しますが、各レコードで空白の場合にのみフィールドを更新するように変更できれば、より便利になります。つまり、各レコードにそのフィールドの空白があるかどうかを確認し、コンボ ボックスに基づいて入力し、空白または null でない場合は次のレコードにスキップします。これは、コードが現在どのように見えるかです。アクセス VBA が苦手で、"Case" と "If" のどちらを使用するべきか、または以下のコードで正確にどのように使用すればよいかわかりません。

Private Sub comm_1_Click()
Dim rs As DAO.Recordset

Set rs = Me.Skid1.Form.RecordsetClone
With rs
    .MoveFirst
    Do While Not .EOF
        .Edit
        ![Release Code] = Me.code_updater.Value
         .Update
         .MoveNext
     Loop
 End With
 Set rs = Nothing

End Sub

私はこれを試しましたが、空白のレコードの一部のみを更新するように見えました (非常に奇妙です)。近いと確信していますが、完全ではありません。

Private Sub comm_1_Click()
Dim rs As DAO.Recordset
Dim fld As Field

Set rs = Me.Skid1.Form.RecordsetClone
With rs
    .MoveFirst
    Do While Not .EOF
     For Each fld In .Fields

      If IsNull(fld.Value) Then
        .Edit
        ![Release Code] = Me.code_updater.Value
        .Update
         End If
        .MoveNext
          Next

    Loop
End With
Set rs = Nothing

End Sub
4

2 に答える 2

1

私はあなたが欲しいと思う

Private Sub comm_1_Click()
Dim rs As DAO.Recordset
Dim fld As Field

Set rs = Me.Skid1.Form.RecordsetClone
With rs
    .MoveFirst
    Do While Not .EOF
      ''Anything, space filled, null, ZLS
      If Trim(![Release Code] & "") = "" Then
        .Edit
        ![Release Code] = Me.code_updater.Value
        .Update
      End If
      .MoveNext
    Loop
End With
Set rs = Nothing

End Sub

テーブルを編集し、テキストデータ型の[ゼロの長さを許可]プロパティを[いいえ]に設定して、長さがゼロの文字列を受け入れないようにすることをお勧めします。

于 2013-03-14T01:24:27.687 に答える
0

これは何か違いがありますか?空のフィールドと NULL フィールドをチェックします - はい、これらは 2 つの異なるものです。

Private Sub comm_1_Click()
Dim rs As DAO.Recordset
Dim fld As Field

Set rs = Me.Skid1.Form.RecordsetClone
With rs
.MoveFirst
Do While Not .EOF
 For Each fld In .Fields

  If (IsNull(fld.Value) Or fld.Value = "")Then
    .Edit
    ![Release Code] = Me.code_updater.Value
    .Update
     End If
    .MoveNext
      Next

Loop
End With
Set rs = Nothing

End Sub
于 2013-03-14T00:41:38.420 に答える