• ベストアンサー

Accessを使ってレポートを印刷する際に。。。

No.2353071の続きなのですが、 Private Sub コマンド0_Click()   DoCmd.OpenReport "レポート1", acViewDesign   Reports("レポート1").Controls("ラベル0").Caption = "AAA"   DoCmd.Close acReport, "レポート1", acSaveYes End Sub このようにすると「DoCmd.OpenReport "レポート1", acViewDesign」を実行する際に、デザインビューで開く画面が表示されるのですが、この画面を消すことはできないのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.9

>「DoCmd.OpenReport "レポート1", acViewDesign」を使うことでデザインビューの画面が表示されるのは仕方なのない事と言うことでよろしいでしょうか? > DoCmd.OpenReport "レポート1", acViewDesign, , , acHidden がエラーになるバージョンでしたら、そういうことです。 > もしこの方法をとるならば、レポートのテキストボックス10個にデータを与えてやりたい場合、フォームにも10個のテキストボックスが必要と言うことですよね? そうです。 でも、見せる必要はないので、「可視」を「いいえ」にして、小さくしておけば、それほど邪魔になりませんね。 非表示にしたフォームフッターに置くとかもできますし。

hoge--
質問者

お礼

教えていただいた方法で解決することができそうです。不可視にする方法で少し試してみたところ、上手くできたので、この方法でやってみようと思います。 何度も丁寧にありがとうございました。

その他の回答 (9)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.10

>入力するものはレコードセットのフィールドなので、 ということなら テキストボックスにDLookup関数を書いておくといいのでは

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.8

Docmd.OpenReport の引数、WindowMode とOpenArgs は、 旧バージョン(XPは手元にないのでわかりませんが)では使えませんよ。 デザインビューで開いて、変更・保存を繰り返すのは、 データベース破損の原因になるので好ましくありません。 フォームからレポートを開くのなら、 フォームのテキストボックスに "AAA" と書いておいて レポートのテキストボックスのコントロールソースを =[Forms]![フォーム名]![テキストボックス名] とすれば、済むことです。

hoge--
質問者

補足

「DoCmd.OpenReport "レポート1", acViewDesign」を使うことでデザインビューの画面が表示されるのは仕方なのない事と言うことでよろしいでしょうか? もしこの方法をとるならば、レポートのテキストボックス10個にデータを与えてやりたい場合、フォームにも10個のテキストボックスが必要と言うことですよね?

noname#60992
noname#60992
回答No.7

No3の続きです。 アクセスのレポートはそのためにあります。 (ワードの差込印刷のように、テーブルやクエリのデータを持ってくることができます。) とりあえず、レポートの新規作成で、「元になるテーブル/クエリ」を指定して「オートレポート:単票形式」などを選んでみて作成してみてください。 テーブル(クエリ)の内容がすべて一件ずつレポートに出てくるはずです。 テキストボックスのプロパティのコントロールソースを変えることによって、参照元のフィールドを変更することもできます。 レポートに出力させたい項目をクエリに出力させて、そのクエリをレポートのレコードソースとするとレポート作成が楽になりますよ。

noname#22222
noname#22222
回答No.6

s_husky です。 なお、別案も示しておきます。 ・フォームでレポートをプレビューする場合にレポートに"AAA"を渡す。 Private Sub コマンド0_Click()   DoCmd.OpenReport "レポート1", acViewPreview, , , , "AAA" End Sub ・レポートは整形時に"AAA"をテキストボックスに代入する。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)   Me.テキスト0 = Me.OpenArgs End Sub

noname#22222
noname#22222
回答No.5

No2 さんの回答でOKです。 問題は、代入文のバグ臭いです。

hoge--
質問者

補足

DoCmd.OpenReport "レポート1", acViewDesign, , , acHidden だとコンパイルエラーとなりますが、 DoCmd.OpenReport "レポート1", acViewDesign だとエラーにはならないのですが・・・。 代入文というのは「Reports("レポート1").Controls("ラベル0").Caption = "AAA"」の部分のことでしょうか?

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

ラベルを印刷ごとに変えたいのなら ラベルじゃなくテキストボックスにしておいて そこにパラメータを書いておけばレポートオープン時に入力を求めてくるようになりますよ =[今回の表題を入力してください]

hoge--
質問者

補足

入力するものはレコードセットのフィールドなので、入力を求められるのは少しまずいんです。 でもテキストボックスにパラメータを書くとオープン時に入力を求められるんですか。今回、ここには使えないですけど、今後使ってみます。

noname#60992
noname#60992
回答No.3

No1です。 前の質問を見ていませんでした。 ラベルのキャプションを印刷の段階で変更する位だったら、フィールドを一つ増やして、そこにデータを格納印刷したほうがよいかと思います。 レポートのプロパティのレコードソースにテーブルかクエリを指定して、テキストボックスのコントロールソースに必要なフィールドを指定することによって、テーブル(クエリ)の値をレポートに出力できるようになります。 ウイザードを使うと上記作業が簡単にできます。

参考URL:
http://www.accessclub.jp/beginer/cd/part_09.htm
hoge--
質問者

補足

申し訳ございませんが、いまいち理解できていません。 この方法にすると、テーブルからある条件で検索してきた結果をレポート上のラベルに設定し、印刷することが可能なのでしょうか?

  • nackfive
  • ベストアンサー率32% (21/64)
回答No.2

DoCmd.OpenReport "レポート1",acViewDesign,,,acHidden で出来るはずですよ。

hoge--
質問者

補足

そのようにすると「コンパイルエラー 引数の数が一致していません。または不正なプロパティを指定しています。」とメッセージが出てしまいます。

noname#60992
noname#60992
回答No.1

DoCmd.OpenReport "レポート1", acPreview でプレビュー DoCmd.OpenReport "レポート1",acNormal でそのまま印刷に入ります。

関連するQ&A