LEADERSOFT.ru Разработка на заказ программ и сайтов
Раздел обучения информационным технологиям
Разработка программ на Access
11. Используя этот пример, Вы можете добавить поля даже в файлы, которые не изменяются в конструкторе.
Свойства продукта

 Microsoft Office: 2000,2002,2003,2007,2010  Архив с файлами: Перейти
 Операционная система: Windows XP,Vista  Применение: Базы данных Access
 Продажа: Купить  Файл исходника: ..\Access\08 Отчеты\la_report1.mdb
 Язык интерфейса: Русский

   

Dim rstRpt As Recordset 'Запрос отчета
Dim x0 As Single 'Крайняя правая точка

'===============================================================
' Открываем запрос отчета и определяем параметры секции
Private Sub Report_Open(Cancel As Integer)
Dim dbs As Database, c As Control
    Set dbs = CurrentDb 'Выбираем базу данных
    Set rstRpt = dbs.OpenRecordset(Me.RecordSource) 'Открываем запрос
    'Находим последнее поле в отчете
    x0 = 0 'Инициализация
    For Each In Me.Section(acDetail).Controls 'Просматриваем всю секцию
       If x0 < c.Left + c.Width Then _
               x0 = c.Left + c.Width 'Крайняя правая точка в отчете
    Next c
End Sub


'===============================================================
' Находим запись отчета и печатаем текст
'
Private Sub ОбластьДанных_Print(Cancel As Integer, PrintCount As Integer)
Dim rpt As Report
    On Error GoTo 999
    'Находим в запросе нужную запись
    rstRpt.FindFirst "[Номенклатура]=" & Me.Controls("Номенклатура")
    'Форматируем поле и добавляем в отчет после всех полей
    funDrawControl Me, 567 * 2, Format(rstRpt!Цена, "# ##0.00"'Добавляем в ячейку текст
999:
    Err.Clear
End Sub


'===============================================================
' Рисуем элемент управления для отчета
'   myWidth - ширина поля
'   strDate - данные поля
'   Внимание! TextWidth может вернуть неправильный результат,
'             требуется пакет обновления SR-1
Private Function funDrawControl(rpt As Report, myWidth As Single, strDate) As Long
Dim As Control
    
    'Пример текста в поле, который строится по образцу
    'Set c = Me.Section(acDetail).Controls("Номенклатура") 'Образец шрифта
    'Me.FontName = c.FontName  'Назначаем шрифт ячейки
    'Me.FontSize = c.FontSize  'Назначаем высоту текста
    'Me.ScaleMode = 1 'Назначаем масштаб в твипах
    
    'Расчитываем позицию текста и печаем его
    rpt.CurrentY = (rpt.Height - rpt.TextHeight("0")) / 2 'y-координата текста
    rpt.CurrentX = x0 + myWidth - rpt.TextWidth(strDate) 'x-координата текста
    rpt.ForeColor = RGB(255, 0, 0) 'Цвет текста
    rpt.Print strDate 'Печатаем текст
    
    'Рисуем прямоугольник вокруг поля
    rpt.ForeColor = RGB(255, 0, 0) 'Назначаем цвет
    rpt.Line (x0, 0)-(x0 + myWidth, rpt.Height), , B 'Прямоугольник
End Function


'===============================================================
' Закрываем запрос отчета
Private Sub Report_Close()
    rstRpt.Close
End Sub


Copyright © 2002-2015 ООО Лидер Эксэсс
Сайт работает под управлением: ASP.NET, Access