2

好的,所以我对构建访问报告的 VBA 语法有一些疑问。

我知道以下函数可以插入信息CreateReportControl函数,删除信息DeleteReportControl,甚至使用部分
EX 修改部分:rpt.section(acDetail).Height=0

  1. 我想知道如何关闭页眉和页脚,而不仅仅是将 Visable 设置为 False。我想要它,所以它不能在设计视图中看到。

  2. 如何在 Vba 中复制报表并为其分配新名称/将子报表添加到主报表并移动它的位置。或者至少复制它并保持打开状态,因为我有一个重命名它的代码,如下所示:

    Public Function GetUniqueReportName() As String
    Dim intCounter As Integer
    Dim blnIsUnique As Boolean
    Dim rpt As Object
    
      For intCounter = 1 To 256
          GetUniqueReportName = "SubReport_" & Format(intCounter, "0000")
          blnIsUnique = True
          For Each rpt In CurrentProject.AllReports
              If rpt.Name = GetUniqueReportName Then blnIsUnique = False
          Next
          If blnIsUnique Then Exit Function
     Next
    
     GetUniqueReportName = ""
     End Function
    
  3. 还有其他功能可以帮助我通过 VBA 构建 Access 报告吗,您不必解释它们的作用我只想知道它们是什么,因此我可以直接搜索它们,因为没有很多信息在网上关于如何做到这一点。

所有这些信息都会有很大帮助,我假设许多其他人可以使用这些信息,而且关于这个主题的信息不多。提前致谢!:) 如果您不能回答所有问题,那么此时任何信息都是一种奖励。

4

1 回答 1

3

三、这将通过调用 rptCreateTmpReportSimple() 创建 rptTmp:

Function rptCreateTmpReportSimple()
'
  Dim lLeft As Long, lTop As Long, lWidth As Long, lHeight As Long
'
  Dim strFld As String, strRecordSource As String
  Dim strRpt As String
'
  Dim rpt As Access.Report
  Dim ctl As Access.control
'
  strRecordSource = "MyTableName"
  strRpt = "rptTmp"
'
  Set rpt = Application.CreateReport
'
  rpt.visible = False
'
' define report properties, unit is in twips.
'
  rpt.RecordSource = strRecordSource
  rpt.caption = "Special Report"
'
  rpt.DefaultView = acPreview
  rpt.Width = 9870
'
  rpt.visible = True
'
' save it with a name:
'
  DoCmd.Save acDefault, strRpt
'
' create a textbox for each field:
'
  strFld = "FieldName1"
  lLeft = 100
  lTop = 50
  lWidth = 2000
  lHeight = 250
'
  Set ctl = Application.CreateReportControl(strRpt, acTextBox, _
    acDetail, , strFld, lLeft, lTop, lWidth, lHeight)
  ctl.Name = strFld
  ctl.Fontsize = 8
'
' Create other controls...
'...
'
  DoCmd.Close acReport, strRpt, acSaveYes
'
' close ADO objects:
'
  Set ctl = Nothing
  Set rpt = Nothing
'
  rptCreateTmpReportSimple = strRpt
'
End Function

对于您的问题:

一、页眉页脚不能删除,但可以缩小到0高度。

二、将 rptTmp 复制到 rptTmp2:

DoCmd.CopyObject , "rptTmp2", acReport, "rptTmp"
于 2013-10-29T10:51:12.007 回答