人生最悪の忘れ物

お世話になっております。

レポートについての質問ですが、
複数の印刷順で同じ出力データを印刷したいのですが、
現在、同じレポートをコピーして、
並べ替え/グループ化の設定をそれぞれ設定した複数のレポートを作成し、
指定された印刷順の設定のしてあるレポートを印刷するようにプログラムしています。
レポートのレイアウトを変更した場合、
コピーしてあるそれぞれのレポートを修正しなければならず不便です。
フォームのようにOrderBy等の設定で並べ替えが変更できるように、
レポートもVBAから印刷順序を変更できるようにしたいのですが、教えていただけないでしょうか?
よろしくお願いいたします。

A 回答 (8件)

s_husky です。



コピーミスでした。

Private Sub コマンド_在庫一覧プレビュー_Click()
  DoCmd.OpenReport "在庫一覧", acViewDesign, , , acHidden
  With Reports("在庫一覧")
    .GroupLevel(0).Properties(0) = "小枝"  ' Field名,式
    .GroupLevel(0).SortOrder = False
    .GroupLevel(0).GroupOn = 1
    .GroupLevel(0).GroupInterval = 1
    .GroupLevel(0).KeepTogether = 2
  End With
  DoCmd.Close acReport, "在庫一覧", acSaveYes
  DoCmd.OpenReport "在庫一覧", acViewPreview
End Sub
    • good
    • 1

s_huskyです。



Private Sub コマンド_在庫一覧プレビュー_Click()
  DoCmd.OpenReport "在庫一覧", acViewDesign, , , acHidden
  With
    Reports("在庫一覧").GroupLevel(0).Properties(0) = "小枝"  ' Field名,式
    Reports("在庫一覧").GroupLevel(0).SortOrder = False
    Reports("在庫一覧").GroupLevel(0).GroupOn = 1
    Reports("在庫一覧").GroupLevel(0).GroupInterval = 1
    Reports("在庫一覧").GroupLevel(0).KeepTogether = 2
  DoCmd.Close acReport, "在庫一覧", acSaveYes
  DoCmd.OpenReport "在庫一覧", acViewPreview
End Sub

※一応、テスト済みです。
    • good
    • 0

印刷順に並べたクエリとレポートを2個ずつ作るのが一番早いかな。


いったんテーブルに書き出してもよいけれど、結局改ページも書き直さなくてはいけないし。 
    • good
    • 0
この回答へのお礼

ありがとうございます。

ただ、皆さんの回答は、クエリ等による並べ替えで、私のように、レポートのデザインにある機能「並べ替え/グループ化」で並べ替え・グループ化・同一ページ印刷(改ページ制御)等を設定していないようです。

「並べ替え/グループ化」を設定すると、クエリ等のソート順は無視され、「並べ替え/グループ化」の設定内容が優先されます。
クエリだけでは改ページを制御できません。
ちなみに私の場合、グループヘッダーの改ページプロパティに「カレントセクションの後」を設定しています。
(グループヘッダに何もオブジェクトをおかないで「カレントセクションの後」を設定すると、そのグループが印刷された後、改ページが発生します。最初グループフッタ(下の方)に設定していたのですが、そうすると必ず最後に白紙のページが1ページ印刷されてしまいします。)

お礼日時:2006/03/23 05:58

s_husky です。



別の質問への答えです。
ヒントにはなると思います。

Private Sub コマンド_在庫一覧プレビュー_Click()
  DoCmd.OpenReport "在庫一覧", acViewDesign, , , acHidden
  Reports("在庫一覧").RecordSource = "Select * from 在庫一覧 Order by 小枝"
  DoCmd.Close acReport, "在庫一覧", acSaveYes
  DoCmd.OpenReport "在庫一覧", acViewPreview
End Sub

一度、デザインでレポートを開き、

(1)レコードソースを指定する。

又は

(2)Order By を指定するか。

その後、レポートを開く。
これで、ソート順位を制御できます。
    • good
    • 0
この回答へのお礼

ありがとうございます。

私がイメージしている方法に近いですが、「並べ替え/グループ化」を設定して、保存終了した後、レポートを開きたいのですが。
よろしくお願いいたします。

お礼日時:2006/03/23 05:45

s_husky です。



私は、ややこしいやり方は嫌いです。
ですから、かかるケースでは一時テーブルを作成します。
    • good
    • 0

やり方は2つ。



1、キー情報と昇順を持ったワークテーブルを作り、それを中心にレポートソースを作る。

2、レポートを最小化で起動し、Orderbyプロパティで昇順設定し、印刷を実行する。

私なら1のやり方でします。
    • good
    • 0
この回答へのお礼

ありがとうございます。

しかし、ソートしたワークテーブルを作成しても、グループごとの改ページはどのように制御するのでしょうか?
よろしくお願いいたします。

お礼日時:2006/03/23 05:42

少し、確認です。


レポートA
レポートB
レポートC
レポートD
があって、

strReportList="レポートD,レポートB,レポートA,レポートC"

という順序を既定した変数を用意し、

strRports()=Split(strReportList, ",")
N=UBound(strRepots())
For I=0 To N
 レポートプリントコード
NExt I

のレポートプリントコードの書き方に関する質問でしょうか?
換言すれば、Reportオブジェクトの操作コードの書き方を知りたいのでしょうか?

この回答への補足

お世話様です。

ある顧客データがあり、会場コードと地区コードがあると考えてください。
フォーム上では、会場コード順・地区コード順のボタンがあり、どちらも同じデータを印刷しますが、印刷順序が違います。
しかも、並び順が違うだけでなく、印刷時に会場コード・地区コードが変わると改ページするように設定しています。
例 101 横浜会場
    1 高橋
    2 井上
    3 佐々木
改ページ
  102 川崎会場
    1 佐藤
    2 阿部

のような感じです。
改ページを設定する関係上、「並べ替え/グループ化」で会場コード・地区コードでそれぞれグループ化を設定したレポートを作成しています。
(単に印刷順序だけならいいのですが)

お分かりいただけるでしょうか?
よろしくお願いいたします。

補足日時:2006/03/22 05:43
    • good
    • 0

レポートのレコードソースをクエリにすれば良いのではないでしょうか?

この回答への補足

ありがとうございます。

しかし、レポートの場合は、クエリの「ORDER BY句」より「並べ替え/グループ化」が優先されます。
グループ化を設定したいので、クエリだけでは実現できません。
「並べ替え/グループ化」をVBAから制御できればと思っているのですが。

補足日時:2006/03/21 10:28
    • good
    • 0

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

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


おすすめ情報