窗体、查询、报表、宏的联合使用
将窗体、查询、报表、宏联合使用可以解决许多问题,是一项重要的技巧。
1、从窗体中获得查询中的条件
对于这个问题这里以成绩表的打印为例来说明。我们要打印不同班级的成绩表,首先建立相应报表的查询,在查询中的班级字段下的条件中输入条件:Between [forms]![打印表格]![开始班号] And [forms]![打印表格]![结束班号]。然后再建立一个“打印表格”窗体,在窗体中添加两个组合框控件,即“开始班号”、“结束班号”两个组合框控件,并且通过“打印表格”窗体中的命令按钮来执行报表的打印,则报表所依赖的查询中的班级条件可以从“打印表格” 窗体中的“开始班号”、“结束班号”两个组合框中所输入的数据而获得。
2、从窗体中获得宏中所需要的条件
对于这个问题现以主副成绩比较查询为例来说明。我们可以为不同的科目建立不同的主副成绩比较查询,然后再建立相应的宏,在宏中根据不同的条件如 [选择科目]=“语文”来打开相应科目的查询。然后再建立一个“主副比较”窗体,在窗体中添加一个组合框控件,即 “选择科目”组合框控件,并且通过“主副比较”窗体中的命令按钮来执行相应的宏,则宏所依赖的条件可以从“主副比较” 窗体中的“选择科目”组合框中所输入的数据而获得。
报表的生成技巧
1、运用查询生成报表
如何产生报表在前面已经讲过,应以查询为基础来建立报表,这样灵活方便。具体来说就是先由基表生成一个查询,将条件设置好,再用报表生成器以该查询为基础生成报表,不需要的字段可以从报表中删去,若以后需要可再在报表中添上,报表中需要的表头信息若经常变动,也可从窗体中来获得表头中所需的信息,可参见前面所述。
2、表格线的制作
报表中若需要表格线,不能再用制表符来构造,可以在报表的设计视图中用画线工具来制作,程序中不便画表格线。
模块的使用技巧 Access最重要的特征就是一般不必去写程序,然而可能因为要执行复杂或专业的操作而必须在模块中用Visual Basic编写程序,然后通过窗体中的命令按钮来执行相应的程序完成相应的任务。比如排名次、分段统计等。在编写Visual Basic程序时要注意以下一些问题和技巧。
1、变量的运用
①对象变量的运用
在Access中运用Visual Basic编写程序,需要运用其数据访问对象。它包括数据库引擎(DBEngine)、工作空间(Workspace)、数据库以及数据库对象中的表、查询、记录集等对象。如缺省工作空间:DBEngine.Workspaces(0),当前数据库:DBEngine.Workspaces(0).Databases(0)。我们可以用一个对象变量来表示一个对象,这样将为编程带来很大方便。为对象变量赋值要用Set语句,而不要直接赋值。例如:
Dim thedb As Database
Set thedb = DBEngine.Workspaces(0).Databases(0)
②Variant 数据类型的运用
Variant 数据类型是所有没被显示声明(如 Dim、Private、Public 或 Static等语句)为其他类型变量的数据类型。Variant 是一种特殊的数据类型,除了定长 String 数据及用户定义类型外,可以包含任何种类的数据。Variant 也可以包含 Empty、Error、Nothing 及 Null特殊值。Empty 值用来标记尚未初始化(给定初始值)的 Variant 变量。内含 Empty 的 Variant 在数值的上下文中表示 0,如果是用在字符串的上下文中则表示零长度的字符串 ("")。Null 表示未知数据或丢失的数据,即无效数据。不应将 Empty 与 Null 弄混。Null 是表示 Variant 变量确实含有一个无效数据。
当有些量可能出现Null值时,可将该变量定义为Variant 数据类型。Variant 数据类型为编程者提供很大的灵活性,但牺牲了代码的速度和长度。
③通过变量来间接引用数据库对象及限定条件
为了增加灵活性,提高控制能力,减少代码的重复和运用循环语句,在程序中应充分运用变量来间接引用数据库对象和限定条件。比如各个年级学生成绩排名次的处理程序,只是各年级的成绩表名不同,我们可以将程序中的成绩表名用一个变量如“bzcjb”来表示,具体处理时再替换为具体的表名,如替换为高一年级的成绩表名“g1cjb”。
在具体运用中有一些问题要注意,如:
Dim thedb As Database
Set thedb = DBEngine.Workspaces(0).Databases(0)
Dim thecsb As Recordset
Set thecsb = thedb.OpenRecordset(bzcjb, DB_OPEN_DYNASET)
这里“bzcjb”可代表任意一个成绩表,若“bzcjb”本身就是一个已存在的数表名,则上述最后一个语句中的“bzcjb”应加上引号,如下所示:
Set thecsb = thedb.OpenRecordset("bzcjb", DB_OPEN_DYNASET)
再比如Dcount 函数可用于确定特定记录集中的记录数。可以在 Visual Basic、宏、查询表达式,或计算控件中使用 DCount 函数。
语法是:DCount(expr, domain[, criteria])
其参数如下:
expr 表达式,用于标识将统计其记录数的字段。可以是一个标识表或查询中字段的字符串表达式。 Expr可为字段的名称或“*”,除非是“*”, Dcount 函数对包含空字段的记录不记数,若为“*”,Dcount 函数计算记录总数。domain字符串表达式,代表组成域的记录集,可以是表的名称或查询的名称。criteria 可选的字符串表达式,用于限制 DCount 函数执行的数据范围。对于其限制条件criteria 可用一个变量来代替,比如要统计表“g1cjb”中字段“语文”分数大于等于80分的人数,可用下式来完成:
DCount("*", "g1cjb", " [班级]>=80")
假若用数字型变量“n”来替换“80”则如下:
DCount("*", "g1cjb", " [班级]>=" & n)
假若用字符型变量“n”来替换“80”则如下:
DCount("*", "g1cjb", " [班级]>='" & n & "'")
要注意替代的形式是不同的。上面的符号“&”是连接运算符。
2、如何产生程序运行进度框
若在程序运行时能产生一个程序运行进度框将会增加不少乐趣,Access可以实现这一要求。本人在实践中摸索出一种简单的方法,就是通过在窗体中建两个文本框,一个大一点的长条形文本框(填充色为白色),作为外框,一个窄一点的长条形文本框(填充色为其他彩色,长度取为0.011厘米),作为产生程序运行流水线用,它们的初始状态均为不可见。然后在程序中控制其属性为可见的且修改进度流水线文本框的宽度来显示程序的进展情况。要注意的是为了让进度框在程序运行时能及时显示出来必须用SetFocus 方法将焦点移动到进度框上,并且要调整好流水线文本框与外框文本框的初始位置。注意,在用Width 属性改变控件宽度时其单位为“Twip”,1Twip=1/1440英寸,约为1/567厘米。
各子系统集成的技巧 1、选项组、开关按钮、组合框等控件的运用
在窗体上将这些控件巧妙地加以运用可以有机地将有关系统通过一个窗体来控制,这些控件选择值可以传递到查询、报表及宏中的条件中去,从而使得对查询、报表及宏的控制显得灵活方便。
2、选项卡控件的运用
在Access 97 版中新增加了“选项卡”控件,这更使Access可以在有限的窗体中集成更多的子系统。比如在“打印表格”窗体中就可集成“成绩表”、“十分段统计表”、单科每分段统计表“等子系统”,每个子系统对应一个标签页。
3、开关面板窗体的运用
运用开关面板窗体可以将所有的子窗体集成到一起。开关面板窗体可以运用新建一个窗体并在其上放置各命令按钮来集成各子系统窗体的方法来建立。开关面板窗体可以说就是一个系统主窗体,它可以指引用户选择所需进行的操作。我们也可以运用Access中的“开关面板管理器”来建立开关面板窗体。具体方法如下:
①单击“工具”、“加载项”,然后单击“开关面板管理器”命令。
②如果 Microsoft Access 询问是否要新建开关面板时,请单击“是”按钮。
③在“开关面板管理器”对话框中,单击“编辑”按钮。
④在“编辑开关面板页面”对话框中的“开关面板名”框中输入开关面板的名称,然后单击“新建”按钮。
⑤在“编辑开关面板项目”对话框的“文本”框中,为第一个开关面板按钮输入相应的文本,然后在“命令”框中单击所需的命令。如在“文本”框中输入“打印表格”,然后单击“命令”框中的“以编辑方式打开窗体”命令。
⑥Microsoft Access 是否会在“命令”框下显示另一方框取决于单击的命令。如果有必要,请单击该方框中的项目。例如,如果在步骤 5 的“命令”框中单击了“以编辑方式打开窗体”命令,可以在“窗体”框中单击要打开的窗体名称,例如“打印表格”,然后单击“确定”按钮。
⑦重复步骤 4 至 6,直到已经在开关面板中添加了所有要添加的项目。如果要编辑或删除项目,可以在“开关面板上的项目”框中单击该项目,然后单击“编辑”或“删除”按钮。如果要重新安排项目,可以在框中单击项目,然后单击“往上移”或“往下移”按钮。
⑧单击“关闭”按钮。
其它技巧
1、经常压缩数据库
当对数据库进行了不断的增加、删除对象等修改工作后,数据库可能会变成碎片保存,并且不能有效地使用磁盘空间。定期压缩数据库可以重组文件并释放磁盘空间,提高效率。方法:单击“工具”、“数据库实用工具”、“压缩数据库”命令。据有关资料介绍,新版Access 2000能在每次关闭数据库文件时自动完成这项工作,这将给我们带来很大的方便。
2、多用户下的设置
如果想让数据库在网络上共享,比如在网络上同时由几个人输入、或者修改数据,则必须设置好多用户选项。
设置多用户选项的方法是:
①在“工具”菜单上单击“选项”命令。
②单击“高级”选项卡即可进行设置。
3、加密及生成“.mde”文件
为使数据库系统不被它人破坏,可以加密数据库或将数据库生成为“.mde”文件。将数据库保存为 “.mde” 文件将编译所有模块、删除所有可编辑的源代码并且压缩目标数据库。Visual Basic 程序代码将继续执行,但是不能进行查看或编辑,并且数据库的大小将因程序代码的删除而减少。除此之外,内存将优化使用,这将有助于提高性能。将数据库保存为 “.mde” 文件可防止下列操作:在“设计”视图中查看、修改或创建窗体、报表或模块,不能进行查看或编辑Visual Basic 程序代码。生成 “.mde” 文件的方法是:
①关闭数据库。如果正在多用户环境中工作,请确保所有其他用户已经关闭数据库。
②在“工具”菜单上,指向“数据库实用工具”,然后单击“生成 MDE 文件”命令。
③在“保存数据库为 MDE”对话框上,指定要另存为 MDE 文件的数据库,并且单击“生成 MDE”按钮。
④在“保存 MDE 为”对话框上,指定数据库的名称、驱动器以及文件夹。
结束语
Access是一个功能强大的数据库管理系统,由于篇幅所限本文就谈到这里,愿这点经验体会能对有兴趣的朋友提供一点帮助。