Access 2007 フォームに基本的なレコード検索機能を追加する必要があります。2 つの ComboBox を設定しました。最初の ComboBox は、参照、日付、またはスタッフ名による検索の 3 つの異なる検索オプションを提供します。次に、この ComboBox の AfterUpdate イベントは、2 番目の ComboBox の RowSource を設定して、利用可能な参照、日付、またはスタッフ名をユーザーに表示し、ユーザーが必要なものを選択できるようにします。次に、[Go] ボタンをクリックすると、条件に一致するレコードに関連付けられたフォームが開きます。
最初はすべて順調で、問題なく動作していましたが、その後バグが入り込みました。参照 (長い) または名前 (文字列) で検索することを選択すると問題なく動作しますが、日付で検索することを選択すると、利用可能な日付が表示されます。 2 番目のコンボで正しく表示されますが、いずれかを選択しようとすると、エラーが発生します: 入力された値は、このフィールドに対して有効ではありません。これは、コントロールが 1 つのデータ型でのみ使用されるべきであり、異なる時間に 3 つの異なるデータ型を使用しようとすると混乱するためですか? コントロールのプロパティにフォーマットが設定されていません。
Private Sub btnGo_Click()
'go clicked so find request being searched for and open form at that request(s)
If Not IsNull(Me.cboSearchOption) And Not IsNull(Me.cboSearchFor) Then
'search variables entered so go to specified request
Select Case [gblOption]
Case "Reference"
DoCmd.OpenForm "frmRequestForInformation", , , "reference = " & Me.cboSearchFor.Value
Case "Request date"
DoCmd.OpenForm "frmRequestForInformation", , , "date_request_received = #" & Me.cboSearchFor.Value & "#"
Case "Staff"
DoCmd.OpenForm "frmRequestForInformation", , , "signed_by = '" & Me.cboSearchFor.Value & "'"
End Select
Else
MsgBox "Please ensure you have entered search values in both fields", vbOKOnly, "Unable to search"
End If
サブ終了
注: gblOption には cboSearchOption の値が含まれており、cboSearchFor の RowSource と共に AfterUpdate イベントで設定されます。