一連の質問があるフォームにアクセスしています。各質問には、3 つのラジオ ボタンを含むフレームがあり、各ラジオ ボタンは異なる選択肢を指定します (簡単に言うと、1、2、3)。このフォームに質問を追加しました。何らかの方法で、変更前のすべてのレコードをこのフィールドから除外するように指定したいと考えています。以前のレコードのこのフィールドの値を -1 に設定して、除外されていることを示すことができると思いました。しかし、以前のレコードでこの質問を本質的に無効にする方法がわかりません。
2 に答える
あなたの説明をどれだけよく理解しているかはわかりませんが、私の推測では、フォームの現在のイベントがここで役立つ可能性があります。
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
のプロパティを管理することもできます。組み合わせは、さまざまな方法でコントロールの外観を変更します。あなたが好むものを参照してください。Locked
Enabled
他にも見落としがあるかもしれませんが、参考になれば幸いです。
フォームにテキスト ボックスが 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
次に、そのプロパティを出力する代わりに、必要なことを行います。
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 テーブルに作成日時を含めることをお勧めします。