1

以下に詳述するあなたの以前の例を見てきました。しかし、私には問題があります:

レポートと呼ばれるフォームのボタンから実行される私のコードは次のとおりです。

Dim dbs As Database

    Dim qdf As QueryDef
    Dim varitem As Variant

    Set dbs = CurrentDb()

    Set qdf = dbs.QueryDefs("Qry_rpt_cr")
    qdf.Parameters(0) = Forms!frm_reports.rmselectfilter.Column(1, varitem)
    qdf.Parameters(4) = Forms!frm_reports.rmselectperiod.Column(0, 0)
    qdf.Parameters(3) = Forms!frm_reports.rmselectperiod.Column(0, 1)
    qdf.Parameters(2) = Forms!frm_reports.rmselectperiod.Column(0, 2)
    qdf.Parameters(1) = Forms!frm_reports.rmselectperiod.Column(0, 3)

    Set grst = CurrentDb.OpenRecordset("Select * from Qry_rpt_cr")

    DoCmd.OpenReport "rpt_cr_test", acPreview

    grst.Close

    Set grst = Nothing
End Sub

問題は、クエリに 5 つのパラメーターを渡す必要があることです。次に、定義されたパラメーターを使用してレコードセットを開き、レポートを開きます。しかし、コードが開きません。Set grst = CurrentDb.OpenRecordset("Select * from Qry_rpt_cr") 5 つのパラメーターを要求するこの行にエラーが表示されますが、コードの前半でそれらを渡しました。どんな提案も歓迎します。正解で寄付をするHAppy。ED

アーカイブの例 Access Web から、レコードセットの "name" プロパティを使用できます。結果のコードは次のようになります。

レポートでは

Private Sub Report_Open(Cancel As Integer)
    Me.RecordSource = gMyRecordSet.Name
End Sub

呼び出しオブジェクト (モジュール、フォームなど) 内

Public gMyRecordSet As Recordset
'...
Public Sub callMyReport()
    '...
    Set gMyRecordSet = CurrentDb.OpenRecordset("Select * " & _
                                               "from foo " & _
                                               "where bar='yaddah'")
    DoCmd.OpenReport "myReport", acViewPreview  
    '...
    gMyRecordSet.Close  
    Set gMyRecordSet = Nothing
    '...
End Sub
4

1 に答える 1

1

しばらく Access を使用していませんが、クエリのパラメーターを設定してから、別のクエリを実行していると思います。Access は、クエリが参照する (名前付き) クエリではなく、要求しているクエリ ("select * from ...") にパラメーターを提供するよう求めています。

これは簡単に修正できますOpenRecordset。QueryDef から実行するだけです。

Set grst = qdf.OpenRecordSet

その後、Access はクエリのパラメーターを正しく含めます。

編集:Thx Remou

于 2013-01-14T11:55:33.487 に答える