レポートのテキストBOXに値を代入したが。。。

解決


あああ  2007-06-08 00:44:47  No: 98919

VB6 SP6
Access 2003

Dim objAccess As Object
Set objAccess = CreateObject("Access.Application")

objAccess.DoCmd.OpenReport "レポート1", acPreview
objAccess.Reports("レポート1").Controls.Item("text1") = "1234567890"

こんな感じでレポートを表示させてるのですが、1ページ目に表示がされません。2ページ目以降は表示がされるのですが。。。


あああ  2007-06-08 01:25:10  No: 98920

あっ補足です。

表示がされないのはtext1に"1234567890"が1ページ目だけ表示がされないです。

あと紛らわしい表題ですみません。。。


魔界の仮面弁士  2007-06-08 01:48:27  No: 98921

> こんな感じでレポートを表示させてるのですが
連結コントロールに変更し、OpenReport 前に DB に書き込んでおくとか。

> 1ページ目に表示がされません。
本来であれば、レポートセクションの Format イベントにて
処理すべきことなので、OpenReport の後では遅いかと思います。

1 ページ目から反映させたいのであれば、呼び出し側は
  .OpenReport 〜〜, OpenArgs:= "1234567890"
のようにしておき、レポートのLoadイベント(またはセクションのFormat)に
  Me.Controls.Item("text1") = Me.OpenArgs
のような VBA コードを埋め込んでおく、というのはいかがでしょう。


あああ  2007-06-08 03:13:29  No: 98922

魔界の仮面弁士さんご回答ありがとうございます。

せっかく回答いただいたのですが、VBVにDataReportという存在を発見したのでその手法で何とかできました。。。
ちなみに・・・
Dim cn As Object
Dim rs As Object

Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=DBのパス"
    
Set rs = cn.Execute(strDR)
    
Set DataReport1.DataSource = rs
DataReport1.Sections("Section2").Controls!Label1.Caption = "1234567890"
DataReport1.Show

ほぼ自己解決でした。魔界の仮面弁士さんすみません。。。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加