Средства разработки приложений


Access - часть 2


Но не всегда такое решение допустимо - особенно если печатается финансовый документ. Поэтому можно поменять значение этого свойства на "Нет" - тогда Примечание будет начинаться сразу после вывода последней записи. Это решает рассматриваемую проблему, но не до конца. Может возникнуть ситуация, когда одна подпись (например, Директора) окажется на одной странице (последней с данными), а другая перенесется на следующую,- тоже плохо. Более приемлемым решением в этом случае - с небольшой высотой Примечания - было бы его размещение полностью на отдельной странице, но так, чтобы к нему сверху автоматически добавлялись несколько последних строк с данными. И вот тут без обращения к VBA уже не обойтись. Вариантом решения этой задачи может оказаться следующий текст Модуля класса с кодами обработки событий:

Option Compare Database Option Explicit Dim I1 As Integer, KolZap As Integer, KolZ As Integer Dim dd As Database, zap As Recordset, Private Sub Report_NoData (Cancel As Integer) MsgBox (" А нету записей!") Cancel = True End Sub Private Sub Report_Open (Cancel As Integer) Set dd = CurrentDb Set zap = dd. OpenRecordset (" TELEFKOD", dbOpenDynaset) If Not zap. BOF Then zap. MoveLast KolZap = zap. RecordCount End If zap. Close KolZ = 0 End Sub Private Sub ВерхнийКолонтитул_Format (Cancel As Integer, FormatCount As Integer) Me![EndStr1]. Visible = False I1 = 0 End Sub Private Sub ОбластьДанных_Format (Cancel As Integer, FormatCount As Integer) I1 = I1 + 1 KolZ = Me. CurrentRecord If I1 > 39 Then If KolZap - KolZ < 3 Then Me![EndStr1]. Visible = True End If End If End Sub

Во-первых, здесь по ходу дела задействовано интересное свойство Report_NoData - обработка ситуации, когда в таблице-источнике данных нет записей. Текст процедуры почти стандартен, строка Cancel = True приводит к прекращению печати отчета.

Рис. 3. Размещение элемента управления Конец страницы в Области данных

Во-вторых, в Области данных установлен элемент управления Конец страницы (рис. 3), действие которого контролируется в модуле класса.




- Начало -  - Назад -  - Вперед -