4章 カスタマイズ4-6モジュール関連

一括印刷のNext処理で実行する関数例


一括印刷のNext処理で印刷したレコードに対して処理を実行する例を示します。
検索したレコードに対して処理を行うにはフィルターと並べ替えをSoraフォームから継承しなければなりません。
下記サンプルの以下の部分に処理するフォーム名を記述します。
    Set frmMain = Forms![顧客サブ1] '処理対象フォーム名
下記サンプルの以下の部分にレコード単位の処理内容をコーディングします。
        '処理を記述
'        MsgBox ![DANO]   'Debug
'        .Edit   '更新
'        '更新処理
'        .Update


<関数プロシージャの例>
Public Function Sample1()
'フォームの全レコードに対して処理を行う
On Error GoTo Err_Sample1
    Dim rstMain As Recordset   'レコードセットオブジェクト変数定義
    'フィルターと並び替えをフォームより引き継ぐ
    Dim frmMain As Form
    Set frmMain = Forms![顧客サブ1] '処理対象フォーム名
    Dim strName As String
    Dim strFilter As String
    Dim strOrderBer As String
    strName = frmMain.RecordSource
    If frmMain.FilterOn Then
        strFilter = frmMain.Filter
    Else
        strFilter = ""
    End If
    If frmMain.OrderByOn Then
        strOrderBer = frmMain.OrderBy
    Else
        strOrderBer = ""
    End If
    Dim strSQL As String
    If strFilter = "" Then
        If strOrderBer = "" Then
            strSQL = "SELECT * FROM " & strName & ";"
        Else
            strSQL = "SELECT * FROM " & strName _
                        & " ORDER BY " & strOrderBer & ";"
        End If
    Else
        If strOrderBer = "" Then
            strSQL = "SELECT * FROM " & strName _
                        & " WHERE " & strFilter & ";"
        Else
            strSQL = "SELECT * FROM " & strName _
                        & " WHERE " & strFilter _
                        & " ORDER BY " & strOrderBer & ";"
        End If
    End If
    Set rstMain = CurrentDb().OpenRecordset(strSQL)   '「ファイル指定」
'    MsgBox strSQL   'Debug
    With rstMain
    Do Until .EOF
        '処理を記述
'        MsgBox ![DANO]   'Debug
'        .Edit   '更新
'        '更新処理
'        .Update
        .MoveNext   '次のレコードへ
    Loop
    .Clone
    End With
    Set rstMain = Nothing

Exit_Sample1:
    Exit Sub

Err_Sample1:
    MsgBox "Sample1 Err / " & Err.Description
    Resume Exit_Sample1
    
End Function

<処理メニューに登録する>
[Next処理]で実行する場合は、プロシージャをSoraマクロとして処理メニューに登録する必要があります。
Soraマクロ処理」の[属性]に新規のレコードを追加し、下記の内容を設定します。
上記関数は、一括処理、単処理に関係なく1回だけ実行します。[初期処理名]だけに実行する関数名を記述します。
  1. [連番]
    表示する順序(昇順)を設定します。
  2. [表示種別]
    処理メニュー表示”を設定します。
  3. [項目名]
    メニューの表題を記述します。
  4. [説明]
    メニューの説明を記述します。
  5. [起動種別]
    マクロ処理”を選択します。
    実行する処理を表わします。
  6. [機能種別]
    ”プロシージャ”を選択します。
  7. [主処理名]
    空白にします。
  8. [初期処理名]
    Sample1関数名を記述します。
    主処理の前に1回実行します。一括処理、単処理に関係なく1回だけ実行したい場合[初期処理名]だけに実行する関数名を記述します。
  9. [後処理名]
    空白にします。
  10. [Next処理]
    空白にします。