Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница:

 

  Вопрос: Создание отчета MS Access средствами VBA? Добавлено: 08.10.02 12:55  

Автор вопроса:  Maximus

День добрый.

Суть проблемы в следующем: необходимо с помощью кода VBA создать отчет MS Access. И вроде бы все хорошо, только почему-то вместо нормально отформатированного вывода (границы полей, закраска, линеечки-полосочки там всякие и т. д.) на предварительный просмотр выводятся голые числа из раздела данных. И больше ничего. Подскажите, каким образом я могу создать отчет с графическими прибамбасами, с нормальным заголовком и т. п.

Вот простой примерчик кода того, как я реализую задачу. Что здесь не так?

    Dim appAccess As New Access.Application

    Dim intLeft As Integer
    intLeft = 0

    Dim rpt As Access.Report
    Dim ctlText As Access.TextBox
    Dim ctlLabel As Access.Label
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld As DAO.Field
   
    appAccess.OpenCurrentDatabase ("c:\Reports.mdb")
    Set db = appAccess.CurrentDb
    Set tdf = db.TableDefs!Table1
    Set rpt = appAccess.CreateReport(, "Report")
    rpt.RecordSource = tdf.Name

    For Each fld In tdf.Fields
        Set ctlText = appAccess.CreateReportControl(rpt.Name, acTextBox, acDetail, , fld.Name, intLeft, , , Int(567 / 2))
        intLeft = intLeft + ctlText.Width
        ctlText.BorderColor = acColorIndexBlack
        ctlText.BorderStyle = acSolid
        ctlText.BorderWidth = 1
    Next fld

    intLeft = 0
    For Each fld In tdf.Fields
        Set ctlLabel = appAccess.CreateReportControl(rpt.Name, acLabel, acHeader, fld.Name, , intLeft, , , Int(567 / 2))
        ctlLabel.Caption = CStr(fld.Name)
        intLeft = intLeft + ctlLabel.Width
        ctlLabel.BorderColor = acColorIndexBlack
        ctlLabel.BorderStyle = acSolid
    Next fld
'    ctlText.SizeToFit
'    rpt.Section(acDetail).CanShrink = True
'    rpt.Section(acHeader).CanShrink = True
   
    rpt.Section(acHeader).Height = Int(567 / 2)
    rpt.Section(acDetail).Height = Int(567 / 2)
    appAccess.DoCmd.OpenReport rpt.Name, acViewNormal 'Preview
    appAccess.DoCmd.Restore
'    appAccess.DoCmd.Close
'    AppActivate "Microsoft Access"

Заранее благодарен.

Ответить

  Ответы Всего ответов: 0  

Нет ответов

Страница:

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам