2023年11月23日发(作者:)

Access中更改控件的默认属性

Lisa Friedrichsen, 欧弗兰帕克,堪萨斯州

如果您在设计一个Microsoft Access窗体时,想自定义所使用的文本框标签,

本技巧将向您示范如何做到这一点:

1. 在设计视图中打开一个窗体。

2. 单击 工具箱 上的 文本框 工具。

3. 单击 窗体设计 工具栏上的 属性按钮 ,以打开 文本框 的属性表。

4. 自动标签 框中,单击

您可以用相同的技术更改任意控件的默认属性。

转换您的Access数据库以获得更好的性能

Daniel Jang, Vancouver, 不列颠哥伦比亚,加拿大

Access 2002自动以Access 2000格式存储所有的数据库文件,这一点对于较小

的数据库来说非常重要并且使您能够和Access 2000用户共享您的数据库文件。

但是,如果您不打算与Access 2000用户共享您的数据库,或者您正在创建一个

大数据库,您可以通过把数据库转换成新Access 2002格式来获取更好的性能。

Access 2002将用新格式为您创建一个单独的数据库文件,而对您的原始数据库

依然保持原样。

把您的数据库转换成Access 2002文件格式,方法如下:

1. 工具 菜单上,指向 数据库实用工具

2. 指向 转换数据库

3. 单击 转为Access 2002文件格式

Access 2002中打印报表的关系图

Regina Fortuniewicz, Ossining,纽约

报表的正确设计以及它们之间的关系对于构造一个良好的数据库非常关键。

Access 2002能够通过为数据库中的报表关系生成图形化的表示来帮助您评估您

的设计良好与否。

1. 工具 菜单中,单击 关系

2. 文件 菜单中,单击 打印关系 随即生成一份报告,显示它们在关系

窗口中所表现出的关系。

3. 如果需要的话,可以保存或打印这份报告,然后关闭报告窗口。

4. 关闭“关系”窗口。

Office家族成员中,人们对于Access 2000的了解,往往只局限在它的操作

界面中,对于数据库管理的功能仍只是停留在建立表、数据输入、使用窗体向导、

报表向导、数据访问页向导等一些简单的应用上。其实Access 2000的功能十分

强大,且超乎你的想像。它是微软自公布Access以来功能最全面、与Windows

Internet结合最紧密的数据库软件,是一个功能非常强大,而且简单易用的

数据库管理系统(DBMS),即对数据库进行存储、处理和管理的系统。

管理工作组信息文件

对于数据库而言,由于其中保存大量的数据,因此如何提高其安全性是一个

相当重要的问题。Access 2000有一个默认名为的工作组信息文件,

该文件存放了Access数据库的全部安全信息,包括用户账号和组账号。

需要注意的是,原工作组信息文件是不安全的。因为在安装

Access的同时,安装程序自动将默认的工作组定义在其创建的工作组信息文件

中。在用户还没有使用“工具组管理器”指定其他的工作组信息文件之前,再次

启动Access时,都使用默认的工作组信息文件。在工作组信息文件中,用户可

以存储所设置的安全账号。

因此,在设置安全账号之前,用户应该选择好存储这些账号的Access工作

组信息文件,并且必须确定所选择的工作组信息文件是使用惟一的工作组标识符

(WID)创建的。默认状态下原工作组信息文件之所以不安全,是因为

它的工作组标识符(WID)是空白的,任何人都可以获得该工作组信息文件定义的

管理员账号,具有访问数据库的各种权限,这对数据库来讲是很不安全的。所以

用户可以使用位于Access所在目录中的“工作组管理员”程序

(),来对工作组信息文件进行管理。

组和用户管理

数据库管理员有权增加、删除组和用户。最好把开发同一个项目的成员设计

成为一个组。Access将用户归类到各种组中,所以数据库安全管理可以得到极

大的简化,也就是为组而不是为单个用户指定权限,然后通过将用户添加到组中

或从组中删除的方式来更改单个用户的权限。对于处于同组的用户授予新权限,

只要执行一个操作,即可对该组账号授予新的权限。为了数据库的安全,对不再

使用数据库的用户和组,应做到及时删除。

设置管理员口令

在使用新的工作组信息文件后,可以设置管理员口令,以防止他人进入你的

数据库系统。设置管理员口令按下列步骤进行。

1单击“工具/安全/用户与组账号”,调出用户与组账号“窗口”(见图)

2、单击“更改登录密码”标签,调出更改密码的对话框。对话框中要求输

入旧密码。第一次输入时,由于管理员尚无密码,故在该框中保留空白,不必输

入。在一新密码和验证框内两次输入新密码,单击[确定]按钮。

重新启动Access会出现“登录”框,要求输入名称及密码,在你分别输入

后,单击[确定]按钮即可。需要注意的是,密码区分大小写字母,应牢记密码,

否则将无法进入数据库。

如要更改用户的密码,则在登录对话框内输入用户名,如果该用户名尚无密

码,故在第一次进入数据库时,无需提供密码;如果已设有密码,需提供原密码。

打开数据库,按照上述的步骤设置用户的新密码,下次启动数据库时,使用更改

后的用户名称登录时,需提供更改后的新密码才能打开数据库。

数据库的权限

Access 2000中,用户所具有的数据库访问权限有两种类型:显式权限和

隐式权限。显式权限是指直接授予某一用户账号的权限,这是该用户账号专用的,

与其他用户无关。隐式权限是指授予组账号的权限,即用户加入到组中的同时被

赋予的组的权限。如果一个用户同时具有上述两种权限,当该用户对设置了安全

性的数据库进行访问时,那么,他所具有的权限就是两种权限的交集。

Access数据库中,对组和用户访问数据库权限的设置工作,只能通过管

理员完成。设置的权限包括:“打开/运行”,读取设计、修改设计、管理、读

取数据,更新数据、插入数据和删除数据。

设置和修改用户权限

以管理员身份登录,启动数据库。单击“工具/安全/用户与组的权限”,

出“用户与组的权限”窗口,该窗口中间有“用户”和“组”两个单选按钮,

别用来更改用户或组的权限。组的权限包含了用户的权限,如果组的权限允许更

新数据,则用户有权更新数据,不管用户的权限中是否选中该项许可权。在对象

类型中选择设置权限的对象,包括表、查询、窗体、报表、宏和模块。在对象名

称框内列出了对象的全部内容。例如,如果对象的类型是表,则列出全部表的名

称,可以选择一个、多个或全部表。设置权限只要单击窗口下部的复选按钮(

查框)即可,选择完毕后,单击[确定]按钮。通过修改组的权限,一个组的全部

用户便具有相同的权限。例如要撤消用户组的修改设计权限,那么属于用户组的

用户进入数据库后,就无权修改设计。

加密数据库

安全保护措施越多,数据库就越安全。Access会根据用户的设置对数据库

进行加密处理。如果用户新数据库存放于原来的位置,并和原来的数据库同名的

话,那么Access会自动用加密后的数据库将原来的数据库替换掉。如果由于磁

盘空间不足等原因而造成无法存储加密后的数据库,Access将保留原有的数据

库。

加密数据库按以下步骤进行:

1、使用相应的工作组信息文件启动Access,关闭所有打开的数据库并保证

网上所有用户不再使用该数据库。

2、单击“工具/安全/加密/解密数据库”,此时出现“加密解密”对话框。

3、在对话框中,用户可以指定需加密的数据库,此数据库同时必须是一个

设置安全机制的数据库。然后单击[确定]按钮。出现“数据库加密后另存为”对

话框。

4、在该对话框中,用户需要指定加密后的数据库名称,以及有效数据库的

位置,然后单击[确定]按钮。

最后需要说明的是,Access 2000是对数据库进行操作的应用程序,因此需

要有较好的配置。安装Access 2000的用户,需要的硬件配置如下:

access做应用程序,往往做成"数据""程序"两个数据库,"数据"数据库中

只存放数据表,"程序"数据库中存放所有的formquery,report,module等,

过表联接"程序"数据库可以访问所有"数据"数据库中的表。

当我们的应用程序更换存储位置的时候往往失去正确的表联接,造成运行错误。

下面的一段程序可以自动找回表联接。在我的应用中"程序"数据库名字是

,"数据"数据库名字是

注意: 该程序仅限于"程序""数据"存放在同一个目录而且是对应单个"数据"

文件的情况。

Function ReAttachTable()

Dim MyDB As Database, MyTbl As TableDef

Dim cpath As String

Dim datafiles As String, i As Integer

On Error Resume Next

Set MyDB = CurrentDb

cpath = trimFileName()

datafiles = ""

ass True

For i = 0 To - 1

Set MyTbl = efs(i)

If utes = DB_ATTACHEDTABLE And Left(t, 1) = ";"

Then

t = ";DATABASE=" & cpath & datafiles

hLink

If Err Then

If vbNo = MsgBox(ption & ",继续吗?", vbYesNo) Then Exit For

End If

End If

Next i

ass False

msgbox "Tables relink finish."

End Function

'绝对路径中去掉文件名,返回路径

Function trimFileName(fullname As String) As String

Dim slen As Long, i As Long

slen = Len(fullname)

For i = slen To 1 Step -1

If Mid(fullname, i, 1) = "" Then

Exit For

End If

Next

trimFileName = Left(fullname, i)

End Function

在程序启动或者按钮动作中调用即可。

开发一个好的数据库管理系统,关键是要确保录入数据的完整性和准确性。

Access提供了很多检查录入数据有效性的手段,笔者这里就简单介绍两种常用的

方法。

一、 利用字段属性

1. 数据类型属性 :数据类型决定了用户能保存在此字段中值的种类,如

果用户键入的数据与字段规定的类型不一致,Access就不会存储该数据。如

/时间字段,只允许输入有效的日期与时间格式。

2. 字段大小属性 :对于数字型字段,通过设置字段的大小控制输入值

的类型和范围;而对文本字段,可以设置可输入的最大字符数(最大为255

3. 必填字段属性 :数据库中除自动编号字段外(该字段可自行生成数

据)的其它字段,都可利用设置必填字段属性值为,要求字段中必须有数据

输入,以避免一些重要信息的遗漏。

4. 输入掩码属性 :该属性可帮助用户按照正确的格式输入数据。如创建

输入掩码显示电话号码的括号、空格及连接符,输入时只要在空格中填入即可。

5. 有效性规则属性 :字段有效性规则属性用于在用户离开字段时,检查

输入字段的值是否符合要求。

表有效性规则与字段有效性规则不同,当需要设置涉及表中多个字段的有

效性规则属性时,可以设置表属性的有效性规则。

二、 使用事件过程

在某些情况下,当有效性规则含有复杂的条件,并且需根据条件执行不同的操

作时,往往很难写出有效性规则,这时可以通过对如下的事件过程编写代码来代

替有效性规则进行检查。

BeforeUpdate Ondelete 窗体事件是在保存记录中的新数据或修改后的数据

之前和在删除记录之前触发; BeforeUpdate onExit 控件事件是在保存控件

上的新数据或修改后的数据之前和离开控件之前触发。

ACCESSAPPLICATION对象有两个我自己认为比较的方法,其中一个是

SaveAsText, 另一个是那就是→LoadFromText.我记得是刚学ACCESS不久,当时

在研究FMS一个分析工具时,跟踪发现它总会产生一些临时文件,对这些临时文

件分析,发现它与VB里的窗体文件差不多的格式,所以估计微软可以将ACCESS

的窗体转换为文本格式,并提供一种逆相转换的方法。所以发现了深厚的兴趣,

后来就找到这两个方法。

虽然微软还有其它一些比较好用的未公开的属性,但我在这两个方法上花的时间

还是最多的,因为它的确有使用价值,所以说说自己多年来的使用心得。

这两个方法在以后的ACCESS版本中并不一定支持,所以我并不建议大家使用,

但因为有些功能如果使用它来实现,可以节省比较多的时间,所以,在某些情况

下,我还是会使用它,至少现有的ACCESS版本都支持这个方法。如果同样的功

能你可以通过ACCESS正常的方法来实现,我则建议你使用微软公开的方法。切

记!

用途1

使用

text acForm,"我的窗体","c:"

将整个窗体导出到一个文本文件,将其打包发送给朋友,让朋友再使用

omtext acForm,"我的窗体","c:"

再导回去。你可以压缩打包传送。

用途2

可以将窗体保存到文本文件,然后把文本文件存储到OLE字段里,这样整个窗体

的界面与代码都可保存到ACCESS数据表里,这个方法对编写 代码库管理器

常有用。在使用时,还可即时将文本文件还原到一个窗体,让使用者即时预览到

这个技巧产生的效果

用途3

将窗体保存到一个文件文件,使用正则表达式对代码进行分析,可以分析语法,

代码结构、语法错误、字数统计等等,你可参考一下FMS的一个ACCESS分析工

具,它有的功能,你花个半年,做出来应该也没有大问题啦。记得让我试用一下

源码哦。

用途4

真正的全局替换,一般我们需要全局替换窗体里一个属性的名称或内容,需要逐

个逐个修改,而无法实现像代码中的全局替换,现在将窗体导出到文本文件,

文本文件里进行全局替换,完成后再导回窗体。

用途5

繁简转换,中英转换,一般对控件标题、提示文字、默认值等进行文字上繁简转

换后并不能真正实现繁简转换,在转换后相应的环境中打开还会出现ACTIVEX

控件找不到或者OLE错误,将窗体或其它对象转换为文本文件后再进行繁简转

换,然后再转换相应的字符集、字体名称、节的繁简对应名称、CRC校验码等之

后,再导回ACCESS相应对象,就可完成整个ACCESS程序的转换,相应的程序效

果可参见我做的繁简转换通用程序,记住简体一般是134 繁体是136 英文你打

开就知了。我奉劝,如果你想做同样的功能,那你最好就别做了,用我的就得了,

免得断我财路,我提成20%给你就得了,等两年后积到100元我再一次汇给你:

用途6

中英转换,虽然还需要进行少量手工转换,但已经节省了不少时间,但如何使用

正式表达式来正确区别哪些是标题、提示文字、消息框还需要一些技巧。

用途7

改变控件的默认属性

除了我们在设计状态修改控件的默认属性之外,使用修改文本文件的内容也可达

到修改控件默认属性的效果,当窗体或报表导出到文本文件之后,所有的窗体、

控件属件以及默认控件属性都在文本文件中体现出来,通过修改这个文本文件里

有关默认属性的设置即可达到目的。

什么是默认属性?举个例子,你从国外下载一个程序,为什么往窗体里面添加控

件,控件字体总是Serif,而在简体中文环境下新建的窗体控件,字体都是"宋体

",在繁体中文环境下新建的窗体控件,字体都是"新细明体",就是因为这个控

件的默认属性导致的

用途8

实现自动创建窗体模板的效果,将做好的具备基本功能的窗体导出到文本文件保

存起来,到需要使用的时间,直接导入回来马上就可能产生一个已具备常用功能

的窗体,不需要从头来过,再做得自动化一点,做一个丰富的窗体功能代码库,

可让用户选择各种不同的功能,然后从这些代码库里选择想要的代码按照窗体文

本文件的格式创建一个文本文件,再由这个文本文件自动组合出一个完善的窗

体,不需要用户去编程,他只要选择字段,选择窗体功能、选择样式、选择模板

就可实现各种录入窗体、查询窗体、分析窗体、报表统计等等,写程序就变成了

组装程序。到时大家没事干了,就开发各个专用组件吧。注意,在文本文件中复

制功能和代码,在自动编程化方面,相对窗体里复制控件和代码,具有更大的弹

性和可塑性。

用途9

如果窗体或报表里有图片或OLE对象,在导出的文本文件里会包含它们的二进制

文件,使用正则表达式或其它方法提取这部分内容再将其还原到相应的图片文件

中,即可实现将窗体和报表的图像保存取文件(ACCESS不支持直接将图像控件

的图片保存到文件)

用途10

实现将ACCESS窗体和报表转换到VB程序中,现在有一些专业程序提供这种功能,

我想基本思路应该是出于此,将窗体和报表导出到文件文件,然后分析它与VB

窗体文件之间的分别,然后修改文本文件以适应VB窗体的需要即可实现,只是

我没有足够的时间来做这些了:当然如果你举一反三,你也可能做一个工具,

实现将VB的窗体反向转换到ACCESS程序中,毕竟VB的资源和丰富的技巧对

ACCESS来讲有很大的利用价值

用途11

一次性修改ACCESS对象里面所用的字体名称 字体大小或其它属性,连窗体的数

据表的字体及其它属性也可更改到。

用途12

查看窗体和控件的GUID ,并用来做相应的用途

用途13

修改窗体和报表有关打印机的信息,为什么窗体的打印设置无法保存,为什么打

开报表总会提示原来默认打印机不存在,是否使用当前打印机等等,这些信息其

实都保存在窗体和报表里,打开文本文件,什么都清楚了,通过这个功能可实现

不少强大的功能,大家发挥想像吧。

用途14

如果要获取窗体和控件到底有些什么属性,通过文本文件可知道许多

用途15

创建一些新的控件,如组合框,列表框等等,都可直接在里面复制代码来创建,

而更有用的是,有些带注册信息(license)的控件,如果原来的窗体可用,但你

没有LICENSE,你复制窗体会出现错误,说你没有版权,但如果你将窗体导出到

文本文件,再导回一个新的窗体,ACCESS就给你蒙过去了,不过,这个方法可

别说是我教的:虽然我试过很多次才试出来的,不过我自己是坚决不用的:

大家都知道啦,我一般在公开场合,都是用正版的。

用途16

可以使用上述的方法对整个ACCESS的所有对象导出到文件进行备份保存,然后

想还原哪个就还原哪个,虽然这种方法有其优点,不过,把整个MDB备份可能更

实际些。用途17

可以用于版本控制,不知大家有否在ACCESS中使用过SourceSafe,我研究的时

间可以不短哦,发现,它的签入签出就是使用我上述说的方法,在SourceSafe

保存的是每个对象的文本格式。如果你有兴趣,可以写一个类似的版本控制工具,

我预计2008年会开始写它,如果你在那年之前已经写出来了,那最好寄份源码

给我,否则我控告你窃取我的点子。