○環境
Access2007or2010
Windows7Pro

Accessで、帳票をPDFファイルにして出力することを考えています。

VBAのコードで

DoCmd.OutputTo acOutputReport, (オブジェクト名), acFormatPDF, (ファイルのパス)

と書けば出力できることを確認しました。

さらに、10ページあるレポートならば、10のPDFファイルに分割して出力したいと考えています。
が、そこまで方法を書いたページが見つかりません。

別ソフトと組み合わせてもいいので、何か方法をご存じの方はお教えください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

追伸


もし無ければレポートの適当なところに、不可視でも構わないので
テキストボックスを1個配置して、コントロールソースに
=[Pages]
と設定して置いてください。
    • good
    • 0
この回答へのお礼

詳細なアドバイスありがとうございます。
結局、これとは違う方法で解決することにしました。

上記レポートはデータベースをselectした結果を出力するものなのですが、
そこに繰り返し処理を加えてDoCmd.OutputToをページ数ぶん繰り返すことにしました。

今回は使いませんでしたが、nicotinismさんの回答が他の方の助けになればと思います。

お礼日時:2011/04/25 14:30

Adobe の Acrobat はお持ちでは無いでしょうか。


これを購入して・・
とてもお高いので。。私は下記の PDFCreator を使わせてもらっています。
http://sourceforge.jp/projects/pdfcreator/

簡単な説明は上記リンクをご覧いただくとして
オプションの AutoSave にチェックを入れ Filename には <Title> として
おいて置けば自動的に保存されます。
※ただし日本語(全角文字)は使えません
なので別名で保存した後で、ファイル名を書き戻す必要が無いかも?
(詳しくは最後の方に)

Sub pdfPrint(rptName As String)
'1ページずつPDFで印刷
'rptNameにはレポート名(※PDFCreatorで出力するように設定してあること)
  Dim rpt As Report
  Dim printCount As Integer
  Dim i As Integer

  DoCmd.OpenReport rptName, acViewPreview, windowmode:=acIcon
  Set rpt = Reports(rptName)
  
  If MsgBox(rpt.Printer.DeviceName & " で印刷します", vbOKCancel) = vbCancel Then
    DoCmd.Close acReport, rpt.Name, acSaveNo
    Set rpt = Nothing
    Exit Sub
  End If
  
  printCount = rpt.Pages
  
  Do Until i > printCount
    i = i + 1
    rpt.Caption = rpt.Name & Format(i, "-000")
    DoCmd.PrintOut acPages, i, i
  Loop
  
  DoCmd.Close acReport, rpt.Name, acSaveNo
  Set rpt = Nothing
  MsgBox rptName & " の印刷終了"

End Sub

なお、YU-TANG さんが詳しい解説をされています。
レポートを PDF 出力する方法~ PDFCreator 編~
http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
また、日本語化を行った有志の方を紹介されています。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

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

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

QAcccess レポートをグループ別に出力する

クエリ「納品書」を元にしたレポート「納品書」(※'クエリ名とレポート名は同名)は
フィールド「顧客番号」(テキスト型)でグループ設定をしています。

レポートをPDF出力する際、グループごとにファイルを保存したいと思います。
しかし、VBA実行時に「パラメータが少な過ぎます。7を指定して下さい。」と
エラーが出てしまい、行き詰まっています。
VBAの知識もほとんど無い為、どこで躓いているか教えていただけないでしょうか。

また、
他サイトで申し訳ありませんが・・・、
●ACCESSVBA レポートをグループ毎に別のPDFファイルとして保存
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14108043684
こちらの回答を参考に、以下のように作成しました。
(以下、レコードソース)
---------------------------
Const TBL_NAME = "納品書"
Const RPT_NAME = "納品書" 
Const PDF_PATH = "C:\Users\Desktop\

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

rs.Open "SELECT DISTINCT 顧客番号 FROM 納品書", CurrentProject.Connection, adOpenStatic, adLockReadOnly
Do Until rs.EOF

pdfName = rs!顧客番号
DoCmd.OpenReport RPT_NAME, acViewPreview, ,"顧客番号=" & rs!顧客番号, acWindowNormal
DoCmd.OutputTo acOutputReport, RPT_NAME, acFormatPDF, PDF_PATH & Format(date,"yyyymmdd") & ".pdf"
DoCmd.Close
rs.MoveNext

Loop
---------------------------

クエリ「納品書」を元にしたレポート「納品書」(※'クエリ名とレポート名は同名)は
フィールド「顧客番号」(テキスト型)でグループ設定をしています。

レポートをPDF出力する際、グループごとにファイルを保存したいと思います。
しかし、VBA実行時に「パラメータが少な過ぎます。7を指定して下さい。」と
エラーが出てしまい、行き詰まっています。
VBAの知識もほとんど無い為、どこで躓いているか教えていただけないでしょうか。

また、
他サイトで申し訳ありませんが・・・、
●ACCESSVBA レポートをグルー...続きを読む

Aベストアンサー

どの程度改善できるかは不明です。単なる思いつきなので試していません。

フォームを一つ作成します。仮に名前を「F_PDF出力」にします。
F_PDF出力のレコードソースを、SELECT DISTINCT 顧客番号 FROM 納品書 にします。
レコードセットはスナップショットにします。
フォーム上に顧客番号のテキストコントロールを置きます。
もう一つ非連結のテキストボックスを置き、コントロールソースには
=[CurrentRecord] & " / " & Count(*) とします。
上はどこまで進んでいるか確認するためです。
あとは、コマンドボタンを一個。

レポートのレコードソースをパラメータークエリにして
上記フォームの顧客番号を参照するようにします。

コマンドボタンのクリック時イベントなどに
Const TBL_NAME = "納品書"
Const RPT_NAME = "納品書" 
Const PDF_PATH = "C:\Users\Desktop\

Docmd.GoToRecord acDataForm,me.name,acFirst
  Do
DoCmd.OutputTo acOutputReport, RPT_NAME, acFormatPDF, PDF_PATH & Format(date,"yyyymmdd") & ".pdf"
    If Me.Recordset.RecordCount = Me.CurrentRecord Then
      MsgBox "最終レコードまで出力しました。"
    Exit Sub
    End If
    Docmd.GoToRecord acDataForm,me.name,acNext
  Loop
とします。
これで上手く行けばプレビューにかかる時間が短縮できるはずです。

どの程度改善できるかは不明です。単なる思いつきなので試していません。

フォームを一つ作成します。仮に名前を「F_PDF出力」にします。
F_PDF出力のレコードソースを、SELECT DISTINCT 顧客番号 FROM 納品書 にします。
レコードセットはスナップショットにします。
フォーム上に顧客番号のテキストコントロールを置きます。
もう一つ非連結のテキストボックスを置き、コントロールソースには
=[CurrentRecord] & " / " & Count(*) とします。
上はどこまで進んでいるか確認するためです。
あとは、コマンドボ...続きを読む

QACCESS2010 レポートを分割しPDF化

ACCESS2010にて、数百件の宛先に向けた通知書を作成しています。

いくつかのテーブルから必要な部分をクエリで抽出し、それをレポートの落とし込む形式です。
レポートは宛先名称等が入ったヘッダーと詳細欄で構成しています。

作成した通知書を、それぞれの宛先ごとにメールへ添付し送付したいのですが、
レポートから印刷でPDF化すると全ての通知書が一つのPDFファイルとして出力されてしまいます。
そのため、メールに添付する際にはひとつひとつ手作業でPDFファイルファイルを分割しなければなりません。
これを一度の印刷作業でヘッダー毎にファイルが作成されるようにはできないのでしょうか。
マクロ、VBAも多少は扱えますのでコードを記述していただいても構いません。

イメージとしては、
【宛先】   A社     B社     C社
【通知書】  A通知書.pdf B通知書.pdf  C通知書.pdf
と出せるようにしたいです。

よろしくお願いいたします。

Aベストアンサー

参考になるかと
http://oshiete.goo.ne.jp/qa/8228404.html
とそのリンク先。

QAccessのレポートからPDFをページ毎に作成

Acrobat StandardがインストールされたマシンでAccessのレポート機能を使って、印刷を行うときに、出力先をAdobePDFにしたいのですが、ページ毎にファイルを分けて印刷を行いたいと考えています。

1ページずつページ指定をして出力するような手動方式ではなく自動で行う方法はありますか。

Aベストアンサー

Sub t()
Dim rpt As Report
Dim rptName As String
Dim printCount As Integer
Dim i As Integer
rptName = "あれを"
DoCmd.OpenReport rptName, acViewPreview ', wherecondition:=""
Set rpt = Reports(rptName)
printCount = rpt.Pages

Do Until i > printCount
DoCmd.PrintOut acPages, i, i
i = i + 1
Loop

DoCmd.Close acReport, rpt.Name
MsgBox "fin"

End Sub
とかで総ページ数を取得して・・
ところで、AdobePDFでは同名の既存ファイルがあった場合、
ファイル名に連番を付加するとか、
既定ファイル名を出力日時にするとかのオプションは
無いのですかね?
当方持ち合わせておりませんので分かりませんが。

あるいは妥協してスナップショットでしたらファイル名を指定できますが・・
DoCmd.OutputTo acOutputReport, "R発注書", "SnapshotFormat(*.snp)", strFileName,

Sub t()
Dim rpt As Report
Dim rptName As String
Dim printCount As Integer
Dim i As Integer
rptName = "あれを"
DoCmd.OpenReport rptName, acViewPreview ', wherecondition:=""
Set rpt = Reports(rptName)
printCount = rpt.Pages

Do Until i > printCount
DoCmd.PrintOut acPages, i, i
i = i + 1
Loop

DoCmd.Close acReport, rpt.Name
MsgBox "fin"

End Sub
とかで総ページ数を取得して・・
ところで、AdobePDFでは同名の既存ファイルがあった場合、
ファイル名に連番を付加す...続きを読む

QAccessVBAでレポートをPDFで出力

いつもお世話になっております。

現在、AccessVBAを使用して、簡単なレポートを、PDFとして出力するプログラムを立てているのですが、レポート出力をループで回して、VBAよりPDFファイルを自動的に保存したいのですが・・・。

'(テーブル情報のIDが1の情報のみ、PDFで出力)
DoCmd.OpenReport "レポート名", acNormal, , "ID=1"

以上のロジックを、実行すると、「ファイルの保存先ダイアログ」が勝手に開きます・・。

プリンタの設定は事前にAcrobatに設定してあるので、PDF化は容易に出来るのですが、上記のロジックを実際には(IDの数だけ)ループで回しているので、毎回「名前を付けて保存」ダイアログが開くのがとても煩わしいです(:_;)。

VBA上で、保存先を指定して、「名前を付けて保存」ダイアログが開かないようにする方法はないでしょうか?
今日一日調べても有力な手がかりが無かったので、どなたかご教授下さい。

Aベストアンサー

> 開発環境はAccess2000なのですが、PrinterオブジェクトはAccess2002~
> 実装されているオブジェクトのようです。

その通りです。Access2000 ですか...

ほぼ同程度の情報取得関数を自前で用意するしかなさそうですね。
WMI を使ってます。それと MyDocument のパス取得に手抜きで WSH を
使ってますのでご注意を。

2つの関数+使い方サンプルです。
WinXP + Access2002 VBA で動作確認しましたが、多分 Excel や Word VBA
でも動きます。もちろん 多分 Access2000 でも。

自分の限られた環境でしかテストしてないので、できれば動作報告して
いただけると助かります。

Option Explicit

' プリンタ情報を保持する構造体
Public Type PRINTER_STRUCT
  PrinterName  As String  ' プリンタ名
  PortName    As String  ' ポート名
  DriverName   As String  ' ドライバー名
  DefaultPrinter As Boolean ' 通常使うプリンタか?
End Type

' // プリンタを列挙する(WMI版)
Public Function EnumPrinters(ByRef uPrinter() As PRINTER_STRUCT) As Long
  
  ' 引 数: uPrinter PRINTER_STRUCT ここにプリンタ情報が返る
  ' 戻り値: Long 成功時/インストールされたプリンタ数 失敗時: -1
  
  Dim Printers  As Object
  Dim Prt     As Object
  Dim lPrtCount  As Long
  Dim i      As Long
  Set Printers = CreateObject("WbemScripting.SWbemLocator").ConnectServer _
          .ExecQuery("Select * From Win32_Printer")
  lPrtCount = Printers.Count
  ReDim uPrinter(lPrtCount - 1)
  i = 0
  For Each Prt In Printers
    With uPrinter(i)
      .PrinterName = Prt.Caption
      .PortName = Prt.PortName
      .DriverName = Prt.DriverName
      .DefaultPrinter = CBool(Prt.Default)
    End With
    i = i + 1
  Next Prt
  If lPrtCount > 0 Then EnumPrinters = lPrtCount
  Set Printers = Nothing
  Exit Function
ERROR_HANDLER:
  EnumPrinters = -1
End Function

' // PDF プリンタのポート名からデフォルトの保存先パスを取得
Public Function GetPDFSavePath() As String
  
  ' 戻り値: 成功時/PDF プリンタの保存先パス 失敗時/""(長さ0の文字列)
  ' 注 意: 戻り値の終端に¥(パスセパレータ)があるかどうか要チェック
  
  Dim uPrinter() As PRINTER_STRUCT
  Dim lRet    As Long
  Dim lCnt    As Long
  Dim sTmp    As String
  Dim i     As Long
  GetPDFSavePath = ""
  lRet = EnumPrinters(uPrinter)
  If lRet > 0 Then
    lCnt = UBound(uPrinter)
    For i = 0 To lCnt
      ' ドライバー名で PDF プリンタか判定
      If UCase$(uPrinter(i).DriverName) Like "*PDF*" Then
        sTmp = uPrinter(i).PortName
        If UCase$(sTmp) Like "MYDOCUMENT*" Then
          sTmp = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
        Else
          sTmp = Left$(sTmp, InStr(sTmp, "*.pdf") - 1)
        End If
        GetPDFSavePath = sTmp
        Exit For
      End If
    Next i
  End If
  Erase uPrinter
End Function

Sub 使い方()
  ' EnumPrinters 関数
  Dim uPrinter() As PRINTER_STRUCT '<-- 構造体を配列で渡す
  Dim lRet    As Long
  Dim i     As Long
  lRet = EnumPrinters(uPrinter)
  Debug.Print "Installed Printer Device: " & CStr(lRet)
  For i = 0 To lRet - 1
    Debug.Print "----------------------------------------------------------"
    Debug.Print " Name  : " & uPrinter(i).PrinterName
    Debug.Print " Port  : " & uPrinter(i).PortName
    Debug.Print " Driver : " & uPrinter(i).DriverName
    Debug.Print " Default: " & CStr(uPrinter(i).DefaultPrinter)
  Next i
  Erase uPrinter
  Debug.Print "----------------------------------------------------------"
  ' GetPDFSavePath 関数
  Dim sPath As String
  sPath = GetPDFSavePath()
  If sPath = "" Then
    Debug.Print "PDF プリンタ発見できず...orz"
  Else
    Debug.Print "PDF Printer Save Dir Path"
    Debug.Print " " & sPath
  End If
End Sub

> 開発環境はAccess2000なのですが、PrinterオブジェクトはAccess2002~
> 実装されているオブジェクトのようです。

その通りです。Access2000 ですか...

ほぼ同程度の情報取得関数を自前で用意するしかなさそうですね。
WMI を使ってます。それと MyDocument のパス取得に手抜きで WSH を
使ってますのでご注意を。

2つの関数+使い方サンプルです。
WinXP + Access2002 VBA で動作確認しましたが、多分 Excel や Word VBA
でも動きます。もちろん 多分 Access2000 でも。

自分の限られた環境...続きを読む

QAccessフォーム全レコードをPDFで個別保存

使用MS Access 2010

以前から何度かここでお世話になっております。よろしくお願いします。

「受注一覧」という表形式フォームに日々の受注客百件程度が表示されています。レコードのフィールドに[ID]という受注IDコードがあります。
受注確認のメールにPDFの添付ファイルを作成するための「受注確認PDF」というレポートがあり、
それを使って"受注確認書(受注ID:" & [ID] & ")"というファイル名で"C:\PDF"フォルダーに一件(1ページ)づつ保存するボタンを作成する必要に迫られておりますが、ネットでいろいろ調べて、もう少しというところでなかなうまくいきません。

「受注一覧」フォーム上のボタンに レポートを開くマクロの実行(2000回)-次のレコード としたマクロを登録し、「受注確認PDF」レポートの”開くとき”イベントに

Private Sub Report_Open(Cancel As Integer)
DoCmd.OutputTo acOutputReport, "受注確認PDF", acFormatPDF, "C:\PDF"
Reports!受注確認PDF.Caption = "受注確認書(受注ID:" & [ID] & ")"

と書きました。
マクロは上から順にPDFは開いているようなのですが、フォルダーにはPDFが一枚も保存されません。
どうも開いているだけで保存されないようです。
またマクロも最後のレコードになったときのアクションを書いていないため、「次のレコードがありません」というエラーメッセージで終わります。

フォーム上の全件を"受注確認書(受注ID:" & [ID] & ")"という名前で"C:\PDF"に別々にPDFで保存し、最後のレコードになったら完了するVBAを完成したいのですが、どなたか助けていただける方がいたらお願いいたします。当方、VBAは見よう見まねで書いているだけで意味はあまり理解できないレベルです。

使用MS Access 2010

以前から何度かここでお世話になっております。よろしくお願いします。

「受注一覧」という表形式フォームに日々の受注客百件程度が表示されています。レコードのフィールドに[ID]という受注IDコードがあります。
受注確認のメールにPDFの添付ファイルを作成するための「受注確認PDF」というレポートがあり、
それを使って"受注確認書(受注ID:" & [ID] & ")"というファイル名で"C:\PDF"フォルダーに一件(1ページ)づつ保存するボタンを作成する必要に迫られておりますが、ネットでいろいろ...続きを読む

Aベストアンサー

間違いがいくつかあります。

DoCmd.OutputTo acOutputReport, "受注確認PDF", acFormatPDF, "C:\PDF"

上記のコードで、出力ファイル名が指定されていない。
ちゃんと拡張子も含めてファイル名を指定する必用があります。
さらにファイル名には、: は使用できません。

レポートを開くときのイベントでOutputToを実行してますが、このイベントではOutputToは実行できません。フォーム上のボタンのイベントプロシージャで OutputTo を実行しましょう。

「一件(1ページ)づつ保存する」ということですが、具体的にはどのように1件だけ抽出しているのでしょうか。レポートのレコードソースをパラメータクエリにしているのでしょうか。それともレポートを開くアクションで Where条件式を設定しているのでしょうか。

パラメータクエリで、受注一覧フォームの受注IDを参照しているとして回答します。

また、マクロとイベントプロシージャを混在させるのは煩雑ですので、イベントプロシージャのみで記述します。

受注一覧フォーム上のコマンドボタン(コマンド1)のクリック時のイベントプロシージャ

Private Sub コマンド1_Click()
DoCmd.GoToRecord acActiveDataObject, , acFirst
Do
If Me.Recordset.RecordCount = Me.CurrentRecord Then
MsgBox "最終レコードまで出力しました。"
Exit Sub
End If
DoCmd.OutputTo acOutputReport, "受注確認PDF", acFormatPDF, "C:\PDF\受注確認書(受注ID " & Me.顧客コード & ").pdf"
DoCmd.GoToRecord acActiveDataObject, , acNext
Loop
End Sub

間違いがいくつかあります。

DoCmd.OutputTo acOutputReport, "受注確認PDF", acFormatPDF, "C:\PDF"

上記のコードで、出力ファイル名が指定されていない。
ちゃんと拡張子も含めてファイル名を指定する必用があります。
さらにファイル名には、: は使用できません。

レポートを開くときのイベントでOutputToを実行してますが、このイベントではOutputToは実行できません。フォーム上のボタンのイベントプロシージャで OutputTo を実行しましょう。

「一件(1ページ)づつ保存する」ということですが、具体的...続きを読む

QAccessのレポート上のテキストボックス値を設定したい

AccessのVBAを使っているのですが、作成したレポートに貼り付けたテキストボックスに値を入れることができません。

Report名.textbox名 = "設定したいデータ"

↑とすると「このオブジェクトに値を代入することはできません。」とエラーメッセージが出ます。
どのようにすれば、値を代入することができるのか教えてください。

Aベストアンサー

質問の意図が不明ですので、複数の回答を・・・。

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
  Me.テキスト0 = "AAA"
End Sub

Private Sub コマンド0_Click()
  DoCmd.OpenReport "レポート1", acViewDesign
  Reports("レポート1").Controls("ラベル0").Caption = "AAA"
  DoCmd.Close acReport, "レポート1", acSaveYes
End Sub

前者は、テキストボックスにレポートを表示、印刷する際に"AAA"を代入しています。
後者は、テキストボックスではなくラベルコントロールを利用して"AAA"をフォームのコマンドボタンで代入しています。

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

こんにちは。

Access初心者です。

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

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

Aベストアンサー

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

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

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


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

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

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

Me.CurrentRecord

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

QAccessでのレコード存在チェック

下記のような仕様のAccessで機能追加したく
どうしてもうまくいかないので方法を教えてください。

フォーム:申込書(データソースは申込テーブル)

テーブル:申込テーブル
----------
申込番号
申込氏名
申込日
----------

フォームの申込書からはフリーテキストで
ユーザが申込書番号を入力しますが、
すでに申込テーブルに存在している場合は
エラーメッセージを表示させたいと思っています。

よろしくお願いいたします。

Aベストアンサー

フォームの申込番号のプロパティを開き更新前処理のイベントに下記をコピーしてください。
(フォームの申込番号のコントロール名が申込番号で良ければそのまま違う場合は変更してください。)

Dim Rs As ADODB.Recordset
Dim strSQL As String

Set Rs = New ADODB.Recordset
strSQL = ""
strSQL = strSQL & " Select * From 申込テーブル "
strSQL = strSQL & " Where 申込番号 = 申込番号"

Rs.Open strSQL, CurrentProject.Connection

If Not Rs.EOF Then
MsgBox "重複しています", vbCritical, "登録エラー"
Cancel = True '更新をキャンセル
Me!申込番号.Undo '入力を元に戻します

End If
Rs.Close: Set Rs = Nothing

これで出来るはずです。

フォームの申込番号のプロパティを開き更新前処理のイベントに下記をコピーしてください。
(フォームの申込番号のコントロール名が申込番号で良ければそのまま違う場合は変更してください。)

Dim Rs As ADODB.Recordset
Dim strSQL As String

Set Rs = New ADODB.Recordset
strSQL = ""
strSQL = strSQL & " Select * From 申込テーブル "
strSQL = strSQL & " Where 申込番号 = 申込番号"

Rs.Open strSQL, CurrentProject.Connection

If Not Rs.EOF Then
MsgBox "重複しています", vbCriti...続きを読む

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

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ヘッダ」の上でプロパティ
を表示し、「改ページ」を「カレントセクションの後」
に設定します。

以上です。


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

人気Q&Aランキング

おすすめ情報