1

ユーザーに休暇時間の概要を提供するフォーム (Associate Summary) があります。電子メールおよび印刷用のレポート形式で要約情報を生成するレポートもあります (要約)。どちらも ComboBox に基づいて個々のユーザーを選択するサマリーで独立して正常に動作し、レポートはすべてのユーザーを取得します。フォーム (Associate Summary) にコマンド ボタンを配置して、レポート (Summary) を開き、フォーム (Associate Summary) に現在表示されているユーザー名にフィルターする方法を探しています。コマンド ボタンを使用してフォームを変更し、このコードを追加しました。

Private Sub Command22_Click()
   DoCmd.OpenReport "Summary", acViewPreview, , "Name = " & Me.Combo8     
End Sub

これは、レポートの名前を入力するように要求することを除いて機能しました。その後、私が望むように生成されました。コンボボックスに関連付けられた複数の値が問題であると仮定して、コンボボックスではないフィールドに調整しようとしました。

Private Sub Command22_Click()
   DoCmd.OpenReport "Summary", acViewPreview, , "Name = " & Me.Text12     
End Sub

Text12 は、2 つのフィールドをコンマで結合する式です。

=[Last] & ", " & [First]
result... Doe, John

コマンド ボタンを使用すると、次のエラーでデバッグが表示されます。

Run-Time error '3075':
Syntax error (comma) in query expression '(Name = Doe, John)'.

考え...

4

1 に答える 1

2

OpenReportメソッドのパラメーターを使用してWhereCondition、レポートのレコードソースをフィルタリングします。

したがって、フォームにという名前のテキストボックスがtxtUserNameあり、レポートのレコードソースにという名前のフィールドが含まれていると仮定するとuser_name、コマンドボタンのクリックイベントプロシージャで次のようなものを使用します。

DoCmd.OpenReport "YourReportName", _
    WhereCondition:="user_name='" & Me.txtUserName & "'"

実際には、文字列変数を使用してWhereConditionを保持することにより、トラブルシューティングを容易にすることができます。

Dim strWhere AS String
strWhere = "user_name='" & Me.txtUserName & "'"
Debug.Print strWhere ' <-- use Ctrl+g to open Immediate window and view this
DoCmd.OpenReport "YourReportName", WhereCondition:=strWhere
于 2012-12-13T16:21:27.487 に答える