プレビュー印刷で確認しながら並べ替えしてメール送信するには (Access 2000)

レポートをプレビュー印刷で確認しながら、並べ替えしてメール送信する方法を解説します。
  1. Accessを起動してNorthwind.mdbを開きます。

  2. データベースウインドウが表示されたら、クエリタブをクリックして新規作成ボタンをクリックします。クエリの新規作成ダイアログが表示されたら、デザインビューを選択してOKをクリックします。テーブルの表示ダイアログが表示されたら、何も選択しないで閉じるのボタンをクリックします。選択クエリのデザインビューが表示されたら、メニューからSQLのアイコンをクリックしてリスト1のSQLコマンドをコピー&ペーストしてqry得意先別売上高の名称で保存します。

    リスト1-qry得意先別売上高のSQLコマンド
    SELECT 得意先.得意先名, 得意先.フリガナ, 得意先.都道府県, 
    Sum(CCur([受注明細].[単価]*[受注明細].[数量]*(1-[受注明細].[割引]))) AS 売上高
    FROM 得意先 INNER JOIN (受注 INNER JOIN 受注明細 
    ON 受注.受注コード = 受注明細.受注コード) ON 得意先.得意先コード = 受注.得意先コード
    GROUP BY 得意先.得意先名, 得意先.フリガナ, 得意先.都道府県;
                


    qry得意先別売上高のクエリを保存したら、新規作成ボタンをクリックしてクエリのデザインビューを表示させます。メニューからSQLのアイコンをクリックしてリスト2のSQLコマンドをコピー&ペーストしてqry得意先別売上高2の名称で保存します。

    リスト2-qry得意先別売上高2のSQLコマンド
    SELECT qry得意先別売上高.得意先名, qry得意先別売上高.売上高, 
    qry得意先別売上高.フリガナ, qry得意先別売上高.都道府県
    FROM qry得意先別売上高;
                


    リスト2のクエリを実行すると、図1のように得意先別の売上高が表示されます。

    図1-クエリ得意先別売上高2の実行結果


  3. データベースウインドウからレポートタブをクリックして新規作成のボタンをクリックします。レポートの新規作成ダイアログが表示されたら、qry得意先別売上高2を選択します。次にレポートウィザードを選択してOKをクリックします。レポートウィザードの指示に従って図2に示すようなレポートを作成して rpt得意先別売上高 の名称で保存します。


    図2-得意先別売上高のレポートレイアウト


  4. データベースウインドウからフォームタブをクリックします。新規作成ボタンをクリックして図3に示すようなポップアップメニューを作成します。ポップアップメニューには、3個のトグルボタンから構成されるオプショングループ、チェックボックスそしてコマンドボタンを作成します。

    オブジェクト プロパティ 設定値
    オプショングループ 名前 grpSort
    1-得意先名
    2-都道府県名
    3-売上高
    既定値 2
    チェックボックス 名前 chkDescending
    コマンドボタン 名前 cmdSnapshot
    標題 メール送信
    フォーム ポップアップ はい
    標題 ポップアップメニュー



    図3-ポップアップメニューのレイアウト


  5. ポップアップメニューの各種イベント処理にリスト3のVBAコードをコピー&ペーストします。


    リスト3-ポップアップメニューの各種イベント処理とサブルーチン
    
    Option Compare Database
    Option Explicit
    
    Private Const conReportName = "rpt得意先別売上高"
    
    ' ************************************
    Private Sub chkDescending_AfterUpdate()
      Call SortReport
    End Sub
    
    ' *****************************
    Private Sub cmdSnapshot_Click()
      On Error Resume Next
      DoCmd.SendObject _
      ObjectType:=acSendReport, _
      ObjectName:=conReportName, _
      OutputFormat:=acFormatSNP
    End Sub
    
    ' *********************
    Private Sub Form_Load()
      DoCmd.OpenReport conReportName, acViewPreview
    End Sub
    
    ' *******************************
    Private Sub grpSort_AfterUpdate()
      Call SortReport
    End Sub
    
    ' **********************
    Private Sub SortReport()
      On Error Resume Next
      Dim strOrderBy As String
    
      With Reports(conReportName)
        strOrderBy = Choose(grpSort, _
          "[フリガナ]", "[都道府県]", "[売上高]")
        If chkDescending Then
          strOrderBy = strOrderBy & " DESC"
        End If
        .OrderBy = strOrderBy
        .OrderByOn = True
      End With
    End Sub            


  6. メニューからフォームビューのアイコンをクリックしてポップアップメニューを表示させます。得意先別売上高のプレビュー印刷上にポップアップウインドウが表示されますので、並べ替えのオプショングループから得意先名、売上高をクリックして並べ替えされるか確認します。売上高を選択したとき、降順のチェックボックスをクリックすると売上高の高い順に並べ替えします。

    メール送信のボタンをクリックすると、スナップショット形式で保存してメールを送信することができます。


    図4-プレビュー印刷にポップアップメニューを表示させた例

     

  7. 結果を確認したら、フォームを frmポップアップメニューの名称で保存してAccessを終了します。