一括印刷の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回だけ実行します。[初期処理名]だけに実行する関数名を記述します。
- [連番]
表示する順序(昇順)を設定します。
- [表示種別]
”処理メニュー表示”を設定します。
- [項目名]
メニューの表題を記述します。
- [説明]
メニューの説明を記述します。
- [起動種別]
”マクロ処理”を選択します。
実行する処理を表わします。
- [機能種別]
”プロシージャ”を選択します。
- [主処理名]
空白にします。
- [初期処理名]
Sample1関数名を記述します。
主処理の前に1回実行します。一括処理、単処理に関係なく1回だけ実行したい場合[初期処理名]だけに実行する関数名を記述します。
- [後処理名]
空白にします。
- [Next処理]
空白にします。