2011-12-27 3 views
0


私はかなりしばらくの間、この問題に立ち往生してきたので、助けが本当に...パスPARAMATERS

を理解されるであろう、私はマシンを示したクエリに基づいてレポートを持っていますマシンのリストの利用。ロードする前に、レポートにクエリのパラメータ(sDateとeDate)を入力するダイアログボックスが表示されます(それぞれ終了日は&です)。

レポートの各レコードには、選択した単一のマシンのマシンエラーを指定する別のレポートを開くコマンドボタンがあります。 新しいレポートは、パラメータsDate、eDate、およびmCode(日付とマシンコード)を受け取るクエリに基づいています。 新しいレポートを開くときに何も入力する必要がないように、最初のレポートのパラメータを2番目のレポートに送信しようとしています。 私は、vbaのコマンドボタンのクリックイベントを編集して、パラメータを送信するさまざまな方法を試しました。

startdate enddate、machinecodeは、必要な値を持つ最初のレポートの非表示のテキストボックスフィールドです。

DoCmd.OpenReport "rpt_MachineBreaks", acViewReport, , "sDate=" & Me.startdate & 
" AND eDate=" & Me.enddate & " AND mCode=" & Me.machinecode 

しかし、ダイアログボックスの他のアプローチSDATE、EDATEとMCODE

を入力するように私を促しがクエリ定義再び

Dim db As Database 
Dim qry As QueryDef 

Set db = CurrentDb 
Set qry = db.QueryDefs("qry_singleMachineBreaks") 

qry.Parameters("sDate") = Me.startdate 
qry.Parameters("eDate") = Me.enddate 
qry.Parameters("mCode") = Me.machinecode 

DoCmd.OpenReport "rpt_singleMachineBreaks", acViewReport 

、ダイアログボックスを使用して、新しいレポートのクエリパラメータを変更することでしたsDate、eDate、mCodeを入力するよう促します。

Help please !!!

答えて

1

パラメータを共有するAccessの一般的なソリューションは、フォームを使用することです。これにより、ユーザーの入力を制御することができ、正しいパラメーターが取得されると、非表示にすることもできます。レポートまたはクエリでフォームを参照することは難しいことではありません。

SELECT Field1, Field2, ADate 
FROM ATable 
WHERE ADate = Forms!AForm!txtDate 
1

あなたの基礎となるクエリからパラメータを削除し、DoCmd.OpenReportWhere句で定義された自分の判断基準を持つことができます。
OpenArgsパラメーターをDoCmd.OpenReportとし、その値をMe.OpenArgsを使用してレポートのOnOpenイベントで取得する方法もあります。