[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/01/16(Tue) 20:38
投稿者名:tatsu
Eメール:
URL :
タイトル:
VBからAccessのレポートへのパラメータ
OS:WinXp
VB:VB6
Access:2003
DB:オラクル9i
で、開発をしていますが、下記処理を実装したいのですが、
上手く行きません。

@VBで作成した画面から、Accessで作成したレポートをプレビューする。
AAccessのレポートは、データソースとして、クエリを指定
Bクエリで抽出するデータの条件として、画面(VB)からパラメータを指定したい

現状のソースは以下の通りです。

    ac.OpenCurrentDatabase "D:\Project\rpt.mdb", False

    ac.DoCmd.OpenReport "test_rpt", 2, "test_qry", "BUHIN-001-001"
    ac.DoCmd.OpenReport "test_rpt", 2
    ac.DoCmd.Maximize
    ac.Application.Visible = True

test_qryは、
SELECT BUHIN_NM FROM MST_PARTS WHERE (BUHIN_NO=[PARAM1])
と仮にしており、BUHIN_NMをレポートに出力させたいと思っています。

現在の状態は、レポート上に、#Name? と出力されてしまいます。

なにとぞ、ご教授の程、よろしくお願い致します。

投稿時間:2007/01/16(Tue) 22:00
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: VBからAccessのレポートへのパラメータ
VB からは、適当なワークテーブルにパラメータ情報を書き込んでおいて、
Access 側からは、それを DLookup 関数で得るようにするとか。

投稿時間:2007/01/17(Wed) 13:47
投稿者名:tatsu
Eメール:
URL :
タイトル:
Re^2: VBからAccessのレポートへのパラメータ
> VB からは、適当なワークテーブルにパラメータ情報を書き込んでおいて、
> Access 側からは、それを DLookup 関数で得るようにするとか。
ご回答ありがとうございます。

最悪、ワークテーブルを使用した方法かと思っていますが、
できれば、パラメータクエリで実現したいと思っています。

投稿時間:2007/01/17(Wed) 16:09
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: VBからAccessのレポートへのパラメータ
ん…あとは、DoCmd.OpenReport の OpenArgs 引数を使うとか、かな。


> 最悪、ワークテーブルを使用した方法かと思っていますが、
> できれば、パラメータクエリで実現したいと思っています。

それは何故ですか?

投稿時間:2007/01/17(Wed) 19:57
投稿者名:tatsu
Eメール:
URL :
タイトル:
Re^4: VBからAccessのレポートへのパラメータ
> ん…あとは、DoCmd.OpenReport の OpenArgs 引数を使うとか、かな。
>
>
> > 最悪、ワークテーブルを使用した方法かと思っていますが、
> > できれば、パラメータクエリで実現したいと思っています。
>
> それは何故ですか?
レス遅くなりました。

今回、ワークテーブルを使用するのは効率的ではないかと思い、
取りあえず、パラメータクエリでと思っています。
実現できなければ、ワークテーブルを使用するしかないのですが・・・

投稿時間:2007/01/17(Wed) 22:50
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^5: VBからAccessのレポートへのパラメータ
> 今回、ワークテーブルを使用するのは効率的ではないかと思い、
なるほど。ワークテーブルで処理してみたところ、処理速度に(非効率的と感じるだけの)差が
生じてしまったので、より効率的な方法を探している……という状況だったのですね。

何らかの理由でワークテーブルへの書き込みが使えない、という状況なのであれば、
その SQL 自体を動的に書き換える、というのはどうでしょう?


> 取りあえず、パラメータクエリでと思っています。
パラメータをプログラム的に指定するとなると、DAOの QueryDef および ADO の Command から
操作できる「Parameter オブジェクト」経由で渡すぐらいしか無いかも。