SkipLabels: ساخت Recordset موقت و منطق چاپ برچسب
فصل ۸ — منطق Procedure SkipLabels
مسئلهٔ عملی این است که Sheet برچسب ممکن است از ابتدای صفحه چند Label مصرفشده داشته باشد. SkipLabels چند Record خالی در ابتدای منبع Report ایجاد میکند تا چاپ واقعی از اولین Label موجود شروع شود.
Parameterها و Variableها
Sub SkipLabels(ReportName As String, LabelsToSkip As Byte, _
Optional PassedFilter As String)
Dim MySQL, RecSource, FldNames As String
Dim MyCounter As Byte
Dim MyReport As Report
ReportName نام Label Report، LabelsToSkip تعداد خانههای خالی و PassedFilter شرط اختیاری است.
Copy Report و RecordSource
Procedure Report اصلی را برای جلوگیری از تغییر Object واقعی به LabelsTempReport کپی میکند، آن را در Design View باز میکند، RecordSource را میخواند و Report موقت را میبندد.
DoCmd.CopyObject , "LabelsTempReport", acReport, ReportName
DoCmd.OpenReport "LabelsTempReport", acViewDesign
RecSource = Reports!LabelsTempReport.RecordSource
DoCmd.Close acReport, "LabelsTempReport", acSaveNo
Recordset و Table موقت
ADO Recordset Source را باز میکند. Field Collection پیمایش میشود تا نام Fieldها ساخته شود و AutoNumberها برای Table موقت به Long تبدیل شوند. سپس Make-Table SQL با شرط False Table خالی همساختار ایجاد میکند.
Recordهای خالی و Append
به تعداد LabelsToSkip با AddNew/Update Record خالی ساخته میشود. بعد تمام Recordهای واقعی Source، همراه PassedFilter در صورت وجود، به LabelsTempTable Append میشوند. RecordSource گزارش موقت به Table جدید تغییر میکند و Report برای Print Preview باز میشود.
فراخوانی از Event
Form مخصوص SkipLabels میتواند ReportName و LabelsToSkip را از Controlها بگیرد و Procedure را در On Click دکمهٔ Print فراخوانی کند. این فصل زمینهٔ Dialog سفارشی فصل ۹ را فراهم میکند.
شکلها و عناصر بصری این بخش