2016-12-21 12 views
0

クエリから実行されるレポートがあります。クエリはグローバル変数を使用しますが、これは問題ではありませんが説明のために必要です。変数の機能は次のとおりです。SQLクエリー後にMS Accessデータベースフォームが更新されない

Function Var1() As String 
    Var1 = strVar1 
End Function 

文があるクエリ:

実際の計算であり、それがある

基準がフィールド上にVAR1機能を使用しています

WHERE (((IIf([MinOfDueDayMin]<0,0,Int([MinOfDueDayMin]/7)+1))<Var1()+1) AND ((tblEquipment.Retired)=False)) 

私は問題が始まると思う。

レポートは、次のコードを使用して別のフォーム上のコマンドのために実行されます:

strVar1 = InputBox("Enter Number of Weeks for report") 
If strVar1 = "" Then Exit Sub 
DoCmd.OpenReport "rptEquipPmSchedule", acViewReport 

すべてが、私は、フォームを開くダブルクリックイベントを持っているレポートで

だけで正常に動作します。このフォームは同じクエリの一部を使用します。 (同じものではなく、2つ以上のレベルではない)、ユーザは物事を変更できるので、私はレポートのために再クエリを使用することを期待しています。

私はダブルクリックしてからも、私は私がレポートのActivateイベントでme.requeryを入れて計算

を持っている分野で#ERRORを持って戻ってレポートに戻り、その後何も変更していない場合。これはうまくいかなかった。

私は回避策を試しました。

レポートフィールドをダブルクリックすると、レポートが閉じられ、strVar1値が開いたフォームに送信されます。私はフォームを閉じると、strVar1が失われてしまった場合に備えて、別のユーザー(現在は私がこれを使用している唯一の人ですが、正しい値を持っていることを確認しました)再びエラーは発生します。私はこれをまったく期待していませんでした。最初からレポートを開始すると思うのは確かにうまくいくでしょう。私はstrVar1を割り当てた直後にフォームを閉じました。

最終的には努力しています。私がフォームを閉じると、まったく同じコードを実行します:

strVar1 = InputBox("Enter Number of Weeks for report") 
If strVar1 = "" Then Exit Sub 
DoCmd.OpenReport "rptEquipPmSchedule", acViewReport 

これにより、ユーザーはstrVal1の値を入力する必要があります。これは私が望むものではありませんが、トラブルシューティングのためにこれを試しましたが、私はまだ#ERRORを取得します。

同じフィールドを持たないフォームに対してレポートを実行すると問題は発生しません。レポートを実行するか、同じデータを持つフォームからクエリーを開いたままにしておくと、レポートで正しい結果が得られません。クエリ自体を実行すると、クエリのデータが正しいことに注意してください。

また、クエリでVal1()の代わりに数字を使用してみましたが、同じ結果が得られました。

また、リボンでリフレッシュボタンを試して、不明な関数名を取得すると、レポート内のすべてのデータが失われます。

誰でもアイデアがありますか?

答えて

0

範囲全体を理解するのは難しいですが、ワークフローの再評価を検討してください。全体の目的は、ユーザーがレポートのためのカスタマイズされた基準を実行できるようにすることです。あなたの主な問題はです。strValはメモリに残っていないので、すべての参照が失敗します。

  • は、ユーザーがレポートインスタンスを表示/印刷のみの不変であるレポートのボタンをクリックすると専用の結合していないフォーム上の基準を設定しており、変更する必要があれば再なければなりません:

    は、次の点を考慮してください(つまり、ボタンを再度クリックして)実行します。

  • アクセスはVBAのとしては必要ありません。strValは、このアンバウンドフォーム上のアンバウンドテキストボックスにすることができ、その値は開いているすべてのウィンドウに対してそのまま残ります。
  • 機能を持っており、そのすべての参照は、フィールドを形成するためにポイント:ほとんどのレポートは、任意のソフトウェア/ Webアプリケーションシステムはアクションを実行するために、GUIインターフェイスとして使用されていないForm!myFormName!strValuetextbox
  • ので、彼らはレポート基準を変更する場合、ユーザーが知っているだろう現在のレポートを閉じるか、エントリポイントに戻ってstrValを変更し、レポートを再実行するためにボタンを再度クリックします。
  • データのエクスポート/出力(レポートなど)とは別に、データの入力/入力(フォームの主な使用)を保持します。開発者とユーザーの視点から、このコンパートメント化により頭痛を軽減できます。
+0

問題はstrVal1の値を保持していません。 – Charlie

+0

私は明らかに説明していないので、私は異なって説明しようとします。問題は、strVal1の値を保持していませんが、オプションとして値を維持するために開いたままのフォームを使用する考えが好きです。私はレポートを実行したい。ユーザーがレポートに情報を表示して編集したい場合は、フォームを開いて編集できるシリアル番号(一意のID)をダブルクリックするオプションを与えたいと思います。 – Charlie

+0

完了したらフォームを閉じて、レポートを新しい情報で更新し、ユーザーがstrVal1の値を入力する必要がないようにします。しかし、たとえそれを再度入力しても、レポートが再度実行されるか再照会されたときに#ERRORになります。 – Charlie

関連する問題