次の方法で共有

フォームからレポートを開くときに値の引き渡しでNULLになる

Anonymous
2016-09-01T08:30:47+00:00

フォームからレポートを開くときに、複数の値を引き渡すために以下の通りにイベントプロシージャにコーディングしています。

***************************************************************************

呼び出し元:

strArgument = Me.Name & "," & Me.ID

DoCmd.OpenReport "OrderReceiptReportByID", acViewPreview, , , , strArgument

***************************************************************************

呼び出し先:

Private Sub Report_Open(Cancel As Integer)

Dim strArgument As String

Dim tmp As Variant

strArgument = Me.OpenArgs

tmp = Split(strArgument, ",")

***************************************************************************

呼び出し元では値がセットされてレポートを呼び出しているのですが、呼び出されたレポートのOpenArgsの値はNULLになってしまいます。

何が原因でフォームからレポートに値が引き渡されないのか、お教えいただけないでしょうか。

よろしくお願いします。

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

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

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

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

Anonymous
2016-09-01T12:13:47+00:00

hatena19さんへ

自己解決いたしました。

レポートを作成してから、レポート名を変更したときに、レポートの表題が変更前の名前になっていました。

表題をレポート名にあわせたところ、OpenArgsに値が入るようになりました。

OpenReportはレポート名で呼び出して、呼び出されたレポートの表題名にOpenArgsがセットされるようです。

お騒がせしました。

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

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

2 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2016-09-01T09:32:22+00:00

    ブレークポイントを設定して、呼び出し元に値が入っていて、呼び出し先でNULLになっていることは確認済みでした。

    デバッグの結果は以下の通りです。

    呼び出し元strArgument:OrderReportSearchForm,6

    呼び出し先Me.OpenArgs:

    ちなみに、10日ほどまえにOffice365soloでインストールして、ACCESS2013を使用しています。

    環境設定等が影響しているのでしょうか?

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

    0 件のコメント コメントはありません
  2. Anonymous
    2016-09-01T09:04:06+00:00

    コード自体には問題なさそうです。

    下記のようにデバッグ用コードを埋め込んで、実行してみてください。

    その後、Ctrl+Gで、イミディエイトウィンドウを表示させて、そこに出力されている結果を確認してください。

    どうなりますか。

    呼び出し元:

    strArgument = Me.Name & "," & Me.ID

    Debug.Print "呼び出し元strArgument:" & strArgument 'デバック用コード

    DoCmd.OpenReport "OrderReceiptReportByID", acViewPreview, , , , strArgument

    呼び出し先:

    Private Sub Report_Open(Cancel As Integer)

    Dim strArgument As String

    Dim tmp As Variant

    Debug.Print "呼び出し先Me.OpenArgs:" & Me.OpenArgs 'デバック用コード

    strArgument = Me.OpenArgs

    tmp = Split(strArgument, ",")

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

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