1

レコード セレクターが有効になっている継続的なアクセス フォームがあります。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
4

1 に答える 1

1

Microsoft には、 Access 2000 で選択したフォーム レコードを列挙する方法に関するかなり長い記事があります。これは、以降のバージョンでも機能します。この記事には、コマンド ボタンで実行するためのコードが含まれています。

于 2011-09-25T12:19:07.360 に答える