1

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 イベントで設定されます。

4

1 に答える 1

0

2 番目のコンボ ボックスにコントロール ソースがあるようです。アクセスはそのソースを日付に設定しようとしていますが、満足していません。そのコンボ ボックスのコントロール ソースは必要ありません。

それ以上のコンボ ボックスを問題なくオーバーロードしましたが、コードの残りの部分は正常に見えます。

于 2013-12-27T17:15:35.697 に答える