リストボックスに結果を表示するSQLクエリのソースにしたい複数選択リストボックスがあります。現在、1 つのフィールドが 1 つだけ選択されている場合に美しく表示されるレコードセットに結果が送られます。たとえば、ユーザーが [性別] を選択すると、レコードセット データシートは開かれず、List20 にはフィールド名が下線付きで表示され、その下に個別の値が表示されます。複数のアイテムを選択しようとすると、うまくいきません。たとえば、選択された 2 つの項目 (Gender、Interface) は Gender (下線付き) になりますが、その下に 2 つの F と 2 つの M があり、Interface フィールドの値はありません。各選択をループしてリストボックスに表示するにはどうすればよいですか? これが私のコードです。また、奇妙なことに、クエリを実行しても List13 には結果が表示されませんが、次の行を削除すると、Me.List13 を設定します。Recordset = rs レコードセット データシートが開き、必要な結果が List20 に表示されなくなります。助けてください!
Private Sub Command19_Click()
Dim strSQL As String
Dim strCriteria As String
Dim varItem As Variant
Dim dbs As Database
Set dbs = CurrentDb()
Dim qdf As QueryDef
Dim rs As Recordset
On Error GoTo Err_Command19_Click
For Each varItem In Me!List101.ItemsSelected
strCriteria = strCriteria & ",'" & Me!List101.ItemData(varItem) & "'"
Next varItem
strCriteria = Right(strCriteria, Len(strCriteria) - 1)
strSQL = "SELECT DISTINCT " & strCriteria & " FROM Scrubbed"
strSQL = Replace(strSQL, "'", "")
Set rs = dbs.OpenRecordset(strSQL)
Do Until rs.EOF
Set Me.List20.Recordset = rs
Set Me.List13.Recordset = rs
Loop
With dbs
Set qdf = .CreateQueryDef("TmpDistinctValues", strSQL)
DoCmd.OpenQuery "TmpDistinctValues"
.QueryDefs.Delete "TmpDistinctValues"
End With
dbs.Close
qdf.Close
Exit_Command19_Click:
Exit Sub
Err_Command19_Click:
MsgBox "Please select a field"
End Sub