1

一連の質問があるフォームにアクセスしています。各質問には、3 つのラジオ ボタンを含むフレームがあり、各ラジオ ボタンは異なる選択肢を指定します (簡単に言うと、1、2、3)。このフォームに質問を追加しました。何らかの方法で、変更前のすべてのレコードをこのフィールドから除外するように指定したいと考えています。以前のレコードのこのフィールドの値を -1 に設定して、除外されていることを示すことができると思いました。しかし、以前のレコードでこの質問を本質的に無効にする方法がわかりません。

4

2 に答える 2

1

あなたの説明をどれだけよく理解しているかはわかりませんが、私の推測では、フォームの現在のイベントがここで役立つ可能性があります。

Private Sub Form_Current()
    Me.ControlName.Enabled = Not Me.indicator_field = -1
End Sub

ControlName新しいレコードが必要な場合Enabledは、Nz()関数を使用して初期 Null を処理できます。

Me.ControlName.Enabled = Not Nz(Me.indicator_field, 0) = -1

の代わりに、または に加えて、ControlNameのプロパティを管理することもできます。組み合わせは、さまざまな方法でコントロールの外観を変更します。あなたが好むものを参照してください。LockedEnabled

他にも見落としがあるかもしれませんが、参考になれば幸いです。

フォームにテキスト ボックスが Text1、Text2、... Textn のように連続して含まれている場合、Forループを使用してそれぞれに対して何かを行うことができます...有効化/無効化など...Debug.Print簡単なので使用します私のため。

Dim i As Long
Dim strCtl As String
For i = 1 To 10
    strCtl = "Text" & CStr(i)
    Debug.Print Me.Controls(strCtl).Name
Next i

重要なのは、文字列変数を使用して、フォームのControlsコレクションの特定のメンバーを参照できることです。.Name次に、そのプロパティを出力する代わりに、必要なことを行います。

于 2012-07-12T18:40:06.107 に答える
0

NewRecord プロパティを参照できます。

Private Sub Form_Current()
     If Me.NewRecord = True
        Then Me.MyControl.Enabled = True
     Else
        Then Me.MyControl.Enabled = False
     End If
End Sub

または、新しいフィールドを使用して、次のように言うことができます。

If Me.MyField = -1
    Then Me.MyControl.Enabled = False
 Else
    Then Me.MyControl.Enabled = True
 End If

ほとんどの場合、MS Access テーブルに作成日時を含めることをお勧めします。

于 2012-07-12T17:27:27.753 に答える