Access 报表秘诀
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Access 报表秘诀:避免常见错误
作者:Luke Chung
FMS 总裁
2002 年4 月(修订日期:2002 年6 月)
适用于:
Microsoft® Access (2.0、95、97、2000、2002)
摘要:本篇文章可提供开发人员一些小秘诀,避免犯下建立Access 报表时常见的错误。
本篇文章适用于Microsoft Access 资料库(.mdb) 和Microsoft Access 专案(.adp)。
本篇文章假设您已经具备建立Access 报表的知识。
内容
简介
常见错误
其他资源
结论
简介
Access 报表具有超强功能,且Access 一向被视为Microsoft Windows® 的最佳报表产生器。
但是有一些开发人员常犯的错误,可能会导致报表执行错误或执行不当。
以下是设计报表时常见的问题清单。
完成报表前,开发人员应该先核对是否有这些问题。
常见错误
发布报表前,请先根据这些项目检查您的报表:
∙请使用报表标题。
如果没有标题,报表会以报表名称显示,而您也许不想让使用者看见报表名称。
∙请确定使用者看见的标签和标题皆正确无误。
∙如果您使用说明档,请确定说明档名称和说明内文识别码正确。
∙请确定每个已指定[Event Procedure] 的事件都具有已定义的事件程序。
常见的错误之一就是指定物件后,却没有写入程式码。
当您更改控制项的名称后,如果忘记将连结至旧名称的事件程序更名,也可能发生相同的错误。
请一并检查区段层次的事件。
∙请确定将每个群组标题的[保持在一起] 属性都设定为[用第一个详细资料] 或[整个群组],请勿设定为[否]。
如此可避免列印报表时,群组标题单独出现在页尾,而没有任何详细记录。
正确地设定此属性即可将标题移至下一页,才不会单独出现。
如果您的群组大小超过一页,请勿使用[整个群组],以免列印资料时插入一张空白页。
∙使用Access 2002 时,请确定将[自动置中] 属性设定为[是]。
[自动置中] 可让报表开启时保持在萤幕的中央位置,无论报表储存时的位置为何,或使用者的萤幕解析度为何。
∙请确实为每个报表指定一个「NoData」事件,以便应付没有资料的情况。
「NoData」事件必须设定「Public Boolean」变数,并取消报表的开启动作。
呼叫程序应该张贴一段讯息,有礼貌的告知使用者该报表中没有资料。
例如,以下是报表的「NoData」事件中包含的程式码范例:
Private Sub Report_NoData(Cancel As Integer)
gfReportHasNoData = True
Cancel = True
End Sub
其中gfReportHasNoData 是「Public」变数,可在模组的宣告区段中定义,范例如下:
Public gfReportHasNoData As Boolean
预览和列印报表的程式码如下:
Public Function PrintPreviewReport(pstrRptName As String, _
pfPreview As Boolean) As Boolean ' 注解: 列印或预览报表。
等待完成。
' In : pstrRptName - 待列印/预览的报表名称
' pfPreview - 预览为True,列印为False
' Out : 成功则True;不成功则False
Dim fOK As Boolean
Dim lngSaveErr As Long
Dim intDoEvents As Integer
fOK = True
' 没有资料时变成True。
gfReportHasNoData = False
' 预览或列印报表。
On Error Resume Next
lngSaveErr = 0
If pfPreview Then
DoCmd.OpenReport pstrRptName, acViewPreview
lngSaveErr = Err.Number
If Not gfReportHasNoData Then
' 设定焦点至报表,并将报表最大化。
DoCmd.SelectObject acReport, pstrRptName, False
DoCmd.Maximize
End If
Else
DoCmd.OpenReport pstrRptName, acViewNormal
lngSaveErr = Err.Number
End If
fOK = (lngSaveErr = 0)
On Error GoTo 0
' 是否已成功列印或预览报表?
If fOK Then
If pfPreview Then
' 等候报表关闭。
Do While (SysCmd(acSysCmdGetObjectState, acReport, pstrRptName) > 0)
For intDoEvents = 1 To 3
DoEvents
Next intDoEvents
Loop
End If
ElseIf gfReportHasNoData Then
MsgBox "报表没有资料。
"
End If
PrintPreviewReport = fOK
End Function
如此一来,当报表没有资料时,Access 不会显示或列印没有记录(资料) 的报表,
而是显示讯息方块,来通知使用者报表中没有资料。
其他资源
您可能需要花费时间和心力,逐一检验每个可能出错的项目,以确认报表的设计是否正确。
特别是当您接手别人的工作,或需要设计大量报表时,检查的工作更加费时费力。
幸好您还可以利用一些工具来应付此处提到的常见错误,这些工具会检查您所有的报表,然后反白显示找到的错误。
工具之一是FMS, Inc. 提供的Total Access Analyzer:/Products/analyzer/index.html。
Total Access Analyzer 是功能完备的Access 资料库分析工具,还能处理报表以外的程式。
除了无法验证使用者看见的精确画面以外,Total Access Analyzer 的报表分析功能可以侦测本篇文章所述的所有常见错误。
Total Access Analyzer 适用于Access 2.0、97、2000 和2002。
工具之二也是FMS, Inc. 提供的Total Access Speller:/Products/speller/index.html。
Total Access Speller 是拼字检查工具,可检查使用者所见的表单、报表和其他物件。
您可以轻松检查所有标题和标签,以确定拼法是否正确。
Total Access Speller 适用于Access 2.0、97、2000 和2002。
结论
开发应用程式需要花费许多心力。
千万别让小错误毁了您的应用程式,让您在老板或客户面前出糗。
即使是单纯的打字错误也可能摧毁使用者对您的应用程式、工作及细心度的信任。
通常每个报表只需要花几分钟进行检查,就可以确保使用者不会发现明显的错误。
花费一些时间来维护您的工作品质和信誉,绝对是明智的抉择。
使用这份检查清单来检查您的报表,作为品质确认的基础程序。
如果您发现其他错误,可以将它加入这份清单中,以免重蹈覆辙。
犯错是难免的;但一再犯错就表示不知记取教训。
祝您好运。
Luke Chung 是FMS Inc.的总裁及创始人,此知名供应商为Microsoft Access 使用者和开发人员提供协力厂商产品。