次の方法で共有

ADP 複数のフォームからレポートへのパラメータの渡し方

Anonymous
2012-11-13T02:19:14+00:00

お世話になります。

windows7+Access2010環境で「ADP」です。

複数のフォームからパラメータをレポートに渡したいのですがどのようにしたら良いでしょうか?

希望動作内容

フォームにて担当者の担当物件リストが表示

コンボボックスで絞込み表示→抽出ボタンでレポートにその担当者の予定表が表示

レポートのレコードソースには@担当者 というパラメータは設定してあります。

・フォーム構成

コンボボックスで担当者名(担当者ID)を表示

抽出ボタンで担当者IDをOpenArgsとしてレポートに渡す

 DoCmd.OpenReport "予定表担当者別", acViewReport, , , , Me.担当者コンボ

レポートにて

Private Sub Report_Load()

Me.InputParameters = "@担当者 INT=" & Me.OpenArgs

End Sub

Private Sub Report_Open(Cancel As Integer)

Me.InputParameters = "@担当者 INT=" & Me.OpenArgs

End Sub

Private Sub Report_Page()

Me.InputParameters = "@担当者 INT=" & Me.OpenArgs

End Sub

上記のように受け渡しました。(しつこい感じですが)

レポートを開くときにパラメータをmsgbox にて表示させているのですが、パラメータの内容は合っていますが、

レポートの内容に反映されません。レポートの入力パラメータに上書きされない感じ。

レポートのデザインビューでパラメータを消して、フォームから開くと初回だけは動作します。

次の担当者を見るときに初回のパラメータのままになってしまいます。

受渡すフォームが1つからならばforms!フォーム名!コントロール名でいけたのですが、

複数のフォームからパラメータを渡すにはどうしたら良いでしょうか?

よろしくお願い致します。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2012-11-14T00:52:08+00:00

すいません。自己解決しました。

http://support.microsoft.com/kb/300693/ja?wa=wsignin1.0

を参考にして

Private Sub Report_Open(Cancel As Integer)

    Dim strRecordSource As String

    strRecordSource = "Exec [予定表担当者別] " & Me.OpenArgs

    Me.RecordSource = strRecordSource

End Sub

としてところ問題解決しました。

ありがとうございました。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2012-11-13T22:45:39+00:00

朝です。MukkuMukuです。

Access2010はSP1ってことでよいですか?

OperArgsを使うと調子が悪いが使わなければ問題がないということでしょうか?

Access2010でなければ問題ないとかありますか?

ちょっと試してみようというところに至ってないので、ふと思ったことをコメント。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

2 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2012-11-16T11:41:42+00:00

    こんにちは。

    MukkuMuku さん、いつもコメントありがとうございます。

    石井141 さん、自己解決の内容を詳しく書き込んでいただき、ありがとうございます。

    同じような状況で困っている方にも参考と思い、コメントに 回答としてマーク をいたしました。

    また、何かありましたら マイクロソフト コミュニティ をご利用ください。

    あわせて、VBA の情報交換を行っているフォームを紹介しておきますね。

    MSDN VBA フォーラム

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2012-11-14T00:28:45+00:00

    おはようございます。返信ありがとうございます。

    バージョン情報

    Access2010 SP1(14.6024.1000)SP MSO(14.0.6123.5001)

    になります。

    >OperArgsを使うと調子が悪いが使わなければ問題がないということでしょうか?

    いや、フォームとレポートが1対1ならばレポートからフォームの値(パラメータ)を参照すれば

    よいのですが、

    フォームが複数あって、各フォームの値(担当者ID)を一つのレポートにパラメータとして与えたいのです。

    フォームとレポートが一対一の場合

    レポートのプロパティの入力パラメータは=@担当者 INT=forms!入力フォーム!担当者ID とフォームの値を設定

    レポートが複数のフォームから参照される場合

    レポートのプロパティの入力パラメータは・・・・?単一フォームしか指定できない?(他の文法が分かりません)

    なので、複数のフォームから値を受け渡したいので、OpenArgsを使用して

    レポートを開く際にパラメータとして渡すようにしたのです。

    フォーム側

    DoCmd.OpenReport "予定表担当者別", acViewReport, , , , Me.担当者ID

    レポート側

    Private Sub Report_Open(Cancel As Integer)

    Me.InputParameters = "@担当者 INT=" & Me.OpenArgs

    ちなみに他のAccessVerでは試していません。

    何か考え方が根本的に違っているのかもしれませんがご指摘お願い致します。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません