こんにちは、これが私の目標です。開始日(start_Date)フィールドと終了日(end_Date)フィールドを持つforと、レコードソースとしてクロス集計クエリを持つレポートがあります。フォームに記載されている日付に基づいて、レポートのデータを並べ替えることができるようにしたいと思います。私は3つの異なるアプローチを試しました。
マクロを実行し、where条件でレポートを開くと、Accessは「[Reports]![AuditPTETotal]![Date]は有効な参照ではありません」と文句を言います。
VBAを介してレポートの「where条件」を設定します。別の参照エラーですが、今回は、フォームフィールドが無効であると表示されます。
Private Sub ViewReport_Click() Dim strWhere As String If Not IsNull(Me.start_Date) Then strWhere = strWhere & " AND [Reports]![AuditPTETotal]![Date] >=#" & [Forms]! [AuditPTETotals]![start_Date] & "# " End If If Not IsNull(Me.end_Date) Then strWhere = strWhere & " AND [Reports]![AuditPTETotal]![Date] <=#" & [Forms]! [AuditPTETotals]![end_Date] & "# " End If DoCmd.OpenReport "AuditPTETotal", acViewNormal, , strWhere End Sub
そして最後に、フォームの値をクエリに渡します。これらのアプローチはどれも私にはうまくいきませんでした、そして私は本当にこれを成し遂げる必要があります。私は選択肢がありません。どんな助けでもいただければ幸いです。
クエリ
PARAMETERS [Forms]![AuditPTETotals]![start_Date] DateTime, [Forms]![AuditPTETotals]! [end_Date] DateTime;
TRANSFORM Sum(ScrapCollection.PTEtotal) AS SumOfPTEtotal
SELECT ScrapCollection.Date, ScrapCollection.regNum
FROM ScrapCollection INNER JOIN (ScrapTireType INNER JOIN ScrapCollectionTireType ON (ScrapTireType.scrapTireTypeID = ScrapCollectionTireType.scrapTireTypeID) AND (ScrapTireType.scrapTireTypeID = ScrapCollectionTireType.scrapTireTypeID)) ON ScrapCollection.scrapCollectionID = ScrapCollectionTireType.scrapCollectionID
WHERE (((ScrapCollection.Date) Between [Forms]![AuditPTETotals]![start_Date] And [Forms]![AuditPTETotals]![end_Date]))
GROUP BY ScrapCollection.Date, ScrapCollection.regNum
PIVOT ScrapTireType.description;