- ベストアンサー
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」を実行する際に、デザインビューで開く画面が表示されるのですが、この画面を消すことはできないのでしょうか。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
>「DoCmd.OpenReport "レポート1", acViewDesign」を使うことでデザインビューの画面が表示されるのは仕方なのない事と言うことでよろしいでしょうか? > DoCmd.OpenReport "レポート1", acViewDesign, , , acHidden がエラーになるバージョンでしたら、そういうことです。 > もしこの方法をとるならば、レポートのテキストボックス10個にデータを与えてやりたい場合、フォームにも10個のテキストボックスが必要と言うことですよね? そうです。 でも、見せる必要はないので、「可視」を「いいえ」にして、小さくしておけば、それほど邪魔になりませんね。 非表示にしたフォームフッターに置くとかもできますし。
その他の回答 (9)
- CHRONOS_0
- ベストアンサー率54% (457/838)
>入力するものはレコードセットのフィールドなので、 ということなら テキストボックスにDLookup関数を書いておくといいのでは
- bonaron
- ベストアンサー率64% (482/745)
Docmd.OpenReport の引数、WindowMode とOpenArgs は、 旧バージョン(XPは手元にないのでわかりませんが)では使えませんよ。 デザインビューで開いて、変更・保存を繰り返すのは、 データベース破損の原因になるので好ましくありません。 フォームからレポートを開くのなら、 フォームのテキストボックスに "AAA" と書いておいて レポートのテキストボックスのコントロールソースを =[Forms]![フォーム名]![テキストボックス名] とすれば、済むことです。
補足
「DoCmd.OpenReport "レポート1", acViewDesign」を使うことでデザインビューの画面が表示されるのは仕方なのない事と言うことでよろしいでしょうか? もしこの方法をとるならば、レポートのテキストボックス10個にデータを与えてやりたい場合、フォームにも10個のテキストボックスが必要と言うことですよね?
No3の続きです。 アクセスのレポートはそのためにあります。 (ワードの差込印刷のように、テーブルやクエリのデータを持ってくることができます。) とりあえず、レポートの新規作成で、「元になるテーブル/クエリ」を指定して「オートレポート:単票形式」などを選んでみて作成してみてください。 テーブル(クエリ)の内容がすべて一件ずつレポートに出てくるはずです。 テキストボックスのプロパティのコントロールソースを変えることによって、参照元のフィールドを変更することもできます。 レポートに出力させたい項目をクエリに出力させて、そのクエリをレポートのレコードソースとするとレポート作成が楽になりますよ。
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
No2 さんの回答でOKです。 問題は、代入文のバグ臭いです。
補足
DoCmd.OpenReport "レポート1", acViewDesign, , , acHidden だとコンパイルエラーとなりますが、 DoCmd.OpenReport "レポート1", acViewDesign だとエラーにはならないのですが・・・。 代入文というのは「Reports("レポート1").Controls("ラベル0").Caption = "AAA"」の部分のことでしょうか?
- CHRONOS_0
- ベストアンサー率54% (457/838)
ラベルを印刷ごとに変えたいのなら ラベルじゃなくテキストボックスにしておいて そこにパラメータを書いておけばレポートオープン時に入力を求めてくるようになりますよ =[今回の表題を入力してください]
補足
入力するものはレコードセットのフィールドなので、入力を求められるのは少しまずいんです。 でもテキストボックスにパラメータを書くとオープン時に入力を求められるんですか。今回、ここには使えないですけど、今後使ってみます。
No1です。 前の質問を見ていませんでした。 ラベルのキャプションを印刷の段階で変更する位だったら、フィールドを一つ増やして、そこにデータを格納印刷したほうがよいかと思います。 レポートのプロパティのレコードソースにテーブルかクエリを指定して、テキストボックスのコントロールソースに必要なフィールドを指定することによって、テーブル(クエリ)の値をレポートに出力できるようになります。 ウイザードを使うと上記作業が簡単にできます。
補足
申し訳ございませんが、いまいち理解できていません。 この方法にすると、テーブルからある条件で検索してきた結果をレポート上のラベルに設定し、印刷することが可能なのでしょうか?
- nackfive
- ベストアンサー率32% (21/64)
DoCmd.OpenReport "レポート1",acViewDesign,,,acHidden で出来るはずですよ。
補足
そのようにすると「コンパイルエラー 引数の数が一致していません。または不正なプロパティを指定しています。」とメッセージが出てしまいます。
DoCmd.OpenReport "レポート1", acPreview でプレビュー DoCmd.OpenReport "レポート1",acNormal でそのまま印刷に入ります。
お礼
教えていただいた方法で解決することができそうです。不可視にする方法で少し試してみたところ、上手くできたので、この方法でやってみようと思います。 何度も丁寧にありがとうございました。