レコード セレクターが有効になっている継続的なアクセス フォームがあります。btnPrintReceipt クリック イベント ハンドラーのコードを次に示します。選択した各レコードの ReceiptID を取得し、それらの ID を使用してレポートを開くようにします。問題は、コマンド ボタンをクリックすると、すべてのレコードの選択が解除され (発生することがわかります)、最上位のレコードのみが使用可能になることです。
Private Sub btnPrintReceipt_Click()
'Build filter string containing all selected receipt ids
Dim FilterString As String
'Move to first record
Dim rsReceipts As Recordset
Set rsReceipts = Me.RecordsetClone
rsReceipts.Move Me.SelTop - 1
'Cycle through and record
Dim i As Integer
For i = 0 To Me.SelHeight
FilterString = FilterString & "([ReceiptNumber]=" & rsReceipts![ReceiptNumber] & ") OR "
rsReceipts.MoveNext
Next
'Remove trailing or
Dim NewStringLenth As Integer
NewStringLenth = Len(FilterString) - 4
If NewStringLenth > 0 Then
FilterString = Left(FilterString, NewStringLenth)
Else
FilterString = ""
End If
'Open the report
DoCmd.OpenReport "rptReceipt", acViewPreview, "", FilterString
End Sub