Microsoft Accessで、レポートデータというデータテーブルに格納されている識別番号、場所、メモなどのデータをユーザーに提供するレポートを作成しました。レポートを開くときにクリックすると、2000ページ以上の1ページのレポートがすべてロードされます(1 IDENT NO)。ただし、IDENT NOを入力してロード/表示することでユーザーが選択する1つのレポートのみが必要です。Microsoft Access VBA:レポートをフィルタリングするボタン
以下のコードを使用してボタンを作成しました。このボタンをクリックするとユーザーが入力したIDENT NOでレポートをフィルタリングします(ユーザーがボタンをクリックすると、IDENT NO、そのIDENT NOに関連付けられた単一のレポートを開くだけです)。しかし、そうすると、1ページのレポートしかロードされませんが、他のデータフィールドは一杯になりません。コードをしばらく再生していますが、問題が以下のコードに基づいているのか、別の問題が原因であるかを把握しているようです。
識別番号は、ダッシュを付けた番号の形式をとり、次のような形式です。1940-1または1940-2または2910-1は、すべて識別番号の例です。
Private Sub Command33_Click()
Dim id As String
id = InputBox("Enter the identification number:", "Report Filter")
'if a value was entered, open and filter report
If Len(Trim(id)) > 0 Then
DoCmd.OpenReport "RARL Requests Report", acViewPreview, , "[IDENT NO] like " & id, acWindowNormal
End If
End Sub
上記を修正して、ユーザーが入力したもので始まるレポートを開くことは可能ですか?たとえば、IDENT NOの1940-1,1940-2,1940-3のレポートがあり、ユーザーが1940だけを入力ボックスに入力した場合、それらのレポートは3つすべて表示されます。 – Xcelrate
'' [IDENT NO] LIKE '"&id&" *' "' - コンボボックスは私の推奨する方法です。入力をリストされた値に制限しないように設定するだけです。しかし、リストはまだ有効な完全なID番号のためのユーザーを導くために存在するでしょう。 – June7
私はあなたが何を得ているかを見ます。コンボボックスの選択を開くためにボタンをクリックするようなコード行でInputBoxを置き換えることができるコンボボックス関数はありますか?また、これが当てはまる場合、コードの残りの部分は追加の変更が必要ですか? – Xcelrate