新規無料会員登録で1000名様に電子コミック1000円分が当たる!!

Accessのレポートで、明細行を必ず8行ずつ印刷したいのです。
8行に満たない場合は、8行になるまで空白行を加えます。
そして、ヘーダー部に明細の金額合計があり、最終ページはヘッダー部を含めて8行にしたいので、明細行が7行となります。
とりあえず↓
印刷する明細行数を常に8の倍数になるように空白行を作り、8行ごとに改ページしてみました。
しかし、最初の1ページ目はちゃんと8行で改行されますが、2ページ目からは、1行ずつしか印刷されません。

例えば、明細レコードが9レコードの場合、空白行含めて15行の明細をつくりました。
それを以下のプログラムで実行すると、9レコード目から15レコード目までは、1ページに1行ずつしか印刷されません。
どうすればいいのでしょうか?
どなたかよろしくお願いします。
*****************************************************
Private Sub ページヘッダー_Format(Cancel As Integer, FormatCount As Integer)
'印刷行の初期化
cntPage = 0
End Sub

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
'印刷行を更新
cntPage = cntPage + 1
If cntPage = 8 Then
'改ページ
Me.Section(acDetail).ForceNewPage = 2
'印刷行の初期化
cntPage = 0
End If

A 回答 (1件)

考え方として、次の2点が挙げられます。


(1)明細行の高さを調節して、8行で1ページ限界になるようにする。
(2)元になるデータに目印を付ける。
話としては(1)が簡単なんですが、何故そうしないのでしょうか?
(2)は例えば明細行に「順番」フィールドを設け0、1、2・・・とします。
Int(順番/8)がページを構成するグループIDになりますね。これを
「並べ替え/グループ化の設定」で指定し、「同一ページ印刷」を
「しない」にすれば異なるグループIDのデータは同一ページに印刷
されない、つまり、改ページされます。
レポート元になるクエリに何らかの並べ替え項目があるなら、この
グループIDを得る方法は簡単です。元データは連続した番号でなく
てもかまいません。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとございました。
(1)にしなかったのは、改ページ以外にも、行数によっていろいろと編集すべき点があったためです。

改ページプロパティの値を、8行目以外では0にする方法で解決しました。
参考にあるアドバイスどうもありがとうございました。

cntPage = cntPage + 1
If cntPage = 8 Then
Me.Section(acDetail).ForceNewPage = 2
cntPage = 0
Else
Me.Section(acDetail).ForceNewPage = 0
End If

お礼日時:2009/09/07 10:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccessでレポート内の繰り返しレコードの行数を固定したいです。

Accessでレポート内の繰り返しレコードの行数を固定したいです。

Access2007を使っています。

社内のフォーマットに合わせた物品購入申請書のようなものを
Accessのレポート機能を使って印刷したいと思っています。

大きく2つのテーブルから構成されます。

 (申請書テーブル)
  1文書に1レコードが該当するもの
  書類番号、申請日や申請者名、購入目的等が入ります。

 (購入物品テーブル)
  1文書に複数のレコードが該当するもの
  購入する物品の名前や金額等が入ります。
  書類番号を外部キーとして申請書テーブルとリンクします。


レポート機能で、この二つのテーブルを対象として、
(正確には、申請書テーブルはフォーム上で開いているレコードのみを対象と
 するために、クエリを仲介して)
購入物品は繰り返しにするようにすることで、ひととおり形にはなったのですが、
1つうまくいかないことがあります。

社内のもともとの手書き用フォーマットには、購入物品の記入枠が20行あります。
これは多めにつくってあるので、当然購入物品数が20以下の場合は、残りの行は
空白になっています。
しかし、Accessのレポートで作ったものは空白行がなく、おかげで購入物品件数
により「詳細」と「フッタ」の間の不自然な空白が広くなったりします。

フッタと言っても、内容的には、「上記物品の購入云々~、お願い致します。」
とかサインするエリアとかですので、繰り返しが終わったらすぐに開始をして
ほしいのです。

購入物品の数に関わらず全体の行数を20に固定する方法はありますでしょうか?

Accessでレポート内の繰り返しレコードの行数を固定したいです。

Access2007を使っています。

社内のフォーマットに合わせた物品購入申請書のようなものを
Accessのレポート機能を使って印刷したいと思っています。

大きく2つのテーブルから構成されます。

 (申請書テーブル)
  1文書に1レコードが該当するもの
  書類番号、申請日や申請者名、購入目的等が入ります。

 (購入物品テーブル)
  1文書に複数のレコードが該当するもの
  購入する物品の名前や金額等が入ります。
  書類番号...続きを読む

Aベストアンサー

レコードがない場合も用紙の最後まで罫線を出力する
http://hatenachips.blog34.fc2.com/blog-entry-17.html

レポートに関してはトップクラスの hatena さんのページです。

参考URL:http://hatenachips.blog34.fc2.com/blog-entry-17.html

QAccessレポートで特定条件で改ページしたい

はじめましてこんばんは。
Accessのレポートで特定の条件で改ページしたいため質問させてもらいます。

特定の条件とは
・地域名が変わる
・もしくは住所が変わる
という2点です。
現在テーブルとレポートを作るところで止まっております。
サンプルデータベースで行くと北海道は札幌市、旭川市、小樽市、北見市の4ページに分けたいと言う意味です。

改ページのコントロールを設置したところまではよいのですが条件の入力がうまくいきません。
どなたかご伝授いただけないでしょうか?

http://hiyokokko.s78.xrea.com/img/test.zip

上記に作りかけのアクセスのファイルが置いてありますので見ていただけたら幸いです。

宜しくお願い致します。

Aベストアンサー

改ページコントロールは使いません。

(1)
並べ替え/グループ化の設定でフィールド2を降順で
設定し、グループヘッダを「はい」にし、
表示された「フィールド2ヘッダ」の上でプロパティ
を表示し、「改ページ」を「カレントセクションの後」
に設定します。
これで、地域が変わるとページが変わります。
(2)
次に、
>札幌市、旭川市、小樽市、北見市の4ページに分けたい
ということですが、これはフィールド4をそのまま使うわけには
いかないので、新たにフィールド6を設定し、そこに
札幌市は1、旭川市は2のように市によって番号を
付与します。
後は、(1)と同様に、
並べ替え/グループ化の設定でフィールド6を降順で
設定し、グループヘッダを「はい」にし、
表示された「フィールド6ヘッダ」の上でプロパティ
を表示し、「改ページ」を「カレントセクションの後」
に設定します。

以上です。

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Qアクセス レポートの行数を固定したい

一覧表形式のレポートを作成中です。グループごとにページを分けて印刷するのですが、抽出レコードの数によってページごとの行数が当然変わっています。体裁を統一しなければならないため、すべてのページの行数を20行に統一したいのです。(元となるテーブルにダミーのレコードを挿入して強引に20行づつにすればなんとかいくとは思うのですが、)いい方法はないでしょうか。ご存じの方どうかご教示ください。
アクセス2002 です。

Aベストアンサー

よく見かける質問ですね

access レポート 行数固定
と検索してみた最初のリンクを参考に入れておきます

参考URL:http://www.accessclub.jp/bbs3/0037/superbeg15333.html

Qアクセスのレポートのヘッダーを2ページ以降にもつけるには?

アクセスでスタッフの交通費の集計をしレポートに出力しています。1ページ目に所属部署、行き先などヘッダーがあります。2ページ目にも同様のヘッダーを入れたいのですが、どうすればいいのでしょうか?初歩的な質問ですいませんが、困っています。

Aベストアンサー

レポートヘッダーにヘッダーを設定しているとレポートの最初だけ表示されます。
所属部署・行き先等のヘッダーをページヘッダーに移動してレポートヘッダの高さを0にしてください。(レポートヘッダー部に表示するラベル等があればそれに合わせて高さを設定してください。)
そうすれば各ページにヘッダーが表示されます。
ページヘッダーにある各ヘッダーを移動後レポートヘッダー・フッターに何も表示するものがなければレポートヘッダー・フッターを削除してもかまいません。

Qアクセエスのレコードの更新をVBAでするには?

アクセスで、一覧表のフォームにボタンを取りつけています。レコードの内容を変更したら、ペンの形のマークが現れますね。これは変更中ということですが、そこでボタンを押しても変更は確定されないから、更新確定させたいのです。

それで、DoCmd.Requery を最初の行に入れてみたら、元の一覧表は最初のレコードに飛んでしまう。

元の一覧表の位置を動かさないために、Ctrl+Enter キーを押して更新確定させたような状態をVBAで実現する方法あるのでしょうか?

よろしくお願いします。

Aベストアンサー

No1 です。
今回の場合には
Docmd.RunCommand acCmdSaveRecord の方が良かったですね
文字通りレコードを保存します。
Requery に引きづられてしまいました (^_^;)

Recalc、Refresh、Requery の使い分けは下記が参考にはなりますか?
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

QAccessのフォーム上にレコード数とレコード番号の表示

Accessでクエリを元に表示するフォーム上で、テキストボックス等に関数を使って、レコード数とレコード番号を表示する方法がありましたら教えてください。

フォームの書式設定で「移動ボタン」の表示をすれば目的の事は出来るのですが、表示の大きさが調整できない為、とても見難いのです。

以上よろしくお願いします。

Aベストアンサー

レコード番号のコントロールソースを
=[CurrentRecord]
レコード数のコントロールソースを
=Count("*")-[NewRecord]
としてみてください。

Qアクセスのレポートでレコード数をカウントしたい

お世話になります。
アクセスで、クエリで抽出した結果のレコード数をカウントし、レポートに出力させたいのですが、うまくいきません。
各クエリのレコード数が、レポートを見て分かればいいのですが、
出来ればXXXX/総レコード数XXXXという形で出力できれば尚嬉しいです。

宜しくお願いします。

Aベストアンサー

ごめんなさい。
コントロールボックスじゃなくてテキストボックスですね。
変な説明になってしまいました。

まず、必要に合わせてページヘッダー
又はレポートヘッダーにテキストボックスを作ります。
そのテキストボックスにカウント関数”=Count([****])”を入力し
****に詳細にあるフィールドを何でも良いので指定します。
(何を指定しても、レコード数は同じなので何でも大丈夫だと思います。)
そうすると、そのフィールドのレコード数が
カウントされて出てくると思うのですが。

braidalさんがどのようにレポートを作っているかが
分からないので、よく分からないのですが
総レコート数というのは、抽出する前のレコード数ということでしょうか?
でも、この場合最初にも書きましたが
クエリで既に抽出されたデータだけしか
レポートには出て来ていませんので
総数=抽出されたレコード数となります。

レポートでXXXX/総レコード数XXXXというのを
表示させる方法は、分かりません。
クエリで抽出をしていなければ
(全データを表示してレポートを作っている場合)
グループフッターでグループごとにカウントさせ(上記と同じ方法です)
またレポートフッターでカウントさせる方法は出来ますが。
もしかしたら、VBAなどで出来るかもしれません・・・

詳しい方法は、こちらを参考にしてみて下さい。
また、カウントと検索するとカウント関数のやり方も分かります。
http://www.mahoutsukaino.com/ac/ac97/basic/nyumon_r3.htm

ごめんなさい。
コントロールボックスじゃなくてテキストボックスですね。
変な説明になってしまいました。

まず、必要に合わせてページヘッダー
又はレポートヘッダーにテキストボックスを作ります。
そのテキストボックスにカウント関数”=Count([****])”を入力し
****に詳細にあるフィールドを何でも良いので指定します。
(何を指定しても、レコード数は同じなので何でも大丈夫だと思います。)
そうすると、そのフィールドのレコード数が
カウントされて出てくると思うのですが。

braidalさんが...続きを読む

Q【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには

バージョン:Access2002

フォーム「frm01」にテキストボックス「tb01」が作ってある場合、
Forms.frm01.tb01.Value="あいう"
とすれば、フォームもコントロールも指定できるのですが、
Dim strTxt As String
strTxt = "tb01"
Forms.frm01.strTxt.Value="あいう"
だと、文字列型変数"strTxt"が展開されないのでフォーム「frm01」のコントロール「strTxt」を探してしまいエラーになってしまいます。

文字列型変数でフォームやコントロールを指定するには、どのようにすればよいのでしょうか?

Aベストアンサー

フォームの場合
 Forms(strFrm)

フォームのコントロールの場合
 Forms(strFrm).Controls(strTxt)


これでも参照できますが、普通ここまで省略しませんね。
 Forms(strFrm)(strTxt)

あとで見たとき、訳がわからなくなりそう。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング