《Access 2007开发指南(修订版)》一一2.5 字段属性操作

  1. 云栖社区>
  2. 博客>
  3. 正文

《Access 2007开发指南(修订版)》一一2.5 字段属性操作

异步社区 2017-05-02 10:15:00 浏览1667
展开阅读全文

本节书摘来自异步社区出版社《Access 2007开发指南(修订版)》一书中的第2章,第2.5节,作者: 【美】Alison Balter,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.5 字段属性操作

Access 2007开发指南(修订版)
在表中添加了字段之后,就应该自定义它们的属性。可以使用字段属性来控制数据的存储方式,以及什么样的数据可以输入到字段当中。根据所选定字段类型的不同,字段的属性也会有所不同。“文本”字段类型的字段属性列表具有一定的代表性(如图2.8所示)。以下各节就专门讨论各个字段属性。

image

2.5.1 字段大小:限制对字段的输入

第1个属性是字段大小,它只适用于文本和数字字段。如前所述,应该使字段大小尽可能小。对数字字段来说,字段越小,对存储空间的要求就越低,而操作处理速度则越快。

练习:使用以下字段及其相应的类型创建一个表。

CompanyID:自动编号。

CompanyName:文本。

State:文本。

PhoneNumber:文本。

ContactDate:日期/时间。

CreditLimit:货币。

(1)为将State字段的“字段大小”属性设为两个字符,应该先单击字段,然后在“字段大小”属性中输入“2”。

(2)切换到数据表视图。这时系统会提示保存表。将其命名为“tblCustomers”。如果没有为上表指定主键,系统还会提示指定主键。当在State字段中输入数据时,只能输入两个字符。

注 意

这个例子及本章中的其他例子均可在下载的示例代码的Chap2Trlt.ACCDB文件中找到。如果要验证自己所创建表的结构是否正确,请参考这个文件。
2.5.2 格式:决定数据的显示方式
第2个属性是格式,它适用于除OLE对象字段和附件字段之外的所有字段。利用它可以指定Access如何显示数据。Access允许从预定义的格式中进行选择,或者使用自己创建的自定义格式。字段的数据类型不同,可选的格式也就不同。例如,在Access当中,可以选择不同的日期/时间格式,包括“短日期”(如07-7-7)、“长日期”(如2007年7月7日,星期六)、“短时间”(如7:17)和长时间(如7:17:11 AM)。货币字段的格式包括“货币”(如¥1,767.25)、“固定”(如1767.25)和“标准”(如1,767.25)。

练习:将ContactDate字段的格式属性设定为常规日期。然后切换到数据表视图,并且以不同的格式如07/04/07和2007年7月4日输入日期。注意,不管以何种方式输入日期,当将光标移离那个字段的时候,日期将以yy-mm-dd的格式把日期显示为07-7-4。

注意

“短日期”和“长日期”格式是由“控制面板”中“区域选项”控制的。

提示

Access 2007支持多次“撤消”和“恢复”操作。可以在Microsoft数据库(MDB)表和查询、ACCDB窗体、报表、数据访问页面、宏,以及模块的“设计视图”中进行多次“撤消”和“恢复”操作。利用这个功能可以像在Word或Excel中操作文档一样,在“设计视图”中向前一步或向后一步查看改变的状况。

利用快捷键“Ctrl+>”、“Ctrl+.(句号)”、“Ctrl+<”和“Ctrl+,(逗号)”可以方便地在不同表视图间切换。“Ctrl+>”和“Ctrl+.”可以显示下一张视图。“Ctrl+<”和“Ctrl+,”可以显示前一张视图。
2.5.3 输入掩码:决定何种数据能进入字段
另一个重要的属性是输入掩码属性,它适用于文本、数字、日期/时间和货币字段。格式属性决定数据的显示格式,而输入掩码属性用来控制可以存储在字段当中的数据。可以使用输入掩码属性按字符来控制什么类型的字符(如数字和字母数字等)可以存储在字段当中,以及什么样的字符又是所要求的。图2.9所示的是“输入掩码向导”对话框,它可以帮助创建在文本和日期字段中常用的输入掩码。为了访问“输入掩码向导”,应该单击输入掩码字段右边的按钮。

image

注意

只有在安装的时候选择了“附加向导”组件,输入掩码向导才可以使用。如果没有,Access会在用户第一次使用它时提示安装。
例如,输入掩码000-00-0000;;(当将光标移离这个属性时,它就会转换为000-00-0000;;)就可以控制输入一个有效的社会保障号码。分号前面的字符表达了实际上的掩码。其中的0用于限制输入的0~9位。当用户输入数据的时候,其中的破折号会在控件内显示。在第1个和第2个分号之间输入的字符决定了字母字符(这里是指破折号)是否可以存储在字段当中。如果在这个位置输入一个“0”,那么字母字符就存储在字段当中;若是输入一个“1”或者将其留为空白,那么字母字符就不存储。最后一个位置(即第2个分号之后)表示要显示什么样的字符来说明用户输入的空格(这里使用的是下划线)。

这里有一个更为清楚的例子:在掩码 (999") "000-0000;;_当中,第1个斜杠使得跟在它后面(即括号中)的字符显示为字母。3个9表示可以输入数字或空格。两个引号之间的括号显示为字母。首先出现的3个0表示要求的值是0~9。第2个斜杠之后的破折号是显示为字母。然后又要求另外的4个数字。由于两个分号之间什么也没有,因此字母字符不存储在字段当中。第2个分号之后跟了一个下划线,因此用下划线表示用户接下来输入的空格。

练习:使用“输入掩码向导”来为PhoneNumber字段添加一个掩码,应该将这个字段设定为文本字段。以下是该过程的步骤。

(1)先单击PhoneNumber字段中任意处,然后单击“输入掩码”属性。

(2)单击“输入掩码”属性右边的省略号(在中文版中,没有默认的电话号码输入掩码,所以,可直接在输入掩码属性中输入需要的掩码 (999") "000-0000,以代替(2)、(3)步,译者注)。

(3)从一列可选的掩码中选择电话号码,在向导询问“您愿意如何保存该数据?”时,选择不将字母字符存储到字段当中。

(4)切换到数据表视图,并输入一个电话号码。请注意光标是怎样在字母字符之间移动的。然后试着让地区代码留为空白。Access是允许用户这样操作。

(5)接下来,试着在某个位置输入一个字母。Access将阻止用户这样操作。

(6)然后,试着将7位电话号码的某个字符留为空白。Access也将阻止这种操作。

提示

当使用了输入掩码后,用户总是处在“改写”模式。这是Access的一个特点,用户不能对其进行更改。
2.5.4 标题:节省时间
另一个属性是标题属性。这个属性中的文本将成为字段在数据表视图当中的标题。当把数据绑定控件添加给窗体和报表时,Access会将它用作与数据绑定控件相关联的附加标签的标题。只要命名字段时不使用空格,标题属性都是非常重要的。在数据表视图、窗体和报表当中,标题属性将覆盖字段名。

注意

术语“数据绑定控件”是指一个绑定到表或查询中的字段的控件。术语“附加标签”用于表示附加到数据绑定控件的标签。

提示

在创建使用某个字段的窗体和报表之前,应该事先设定字段的标题属性。当一个窗体或报表创建完之后,Access注重的是当前的标题。如果在以后对标题进行添加或修改,那么现有窗体和报表上的字段标题不会得到修改。
2.5.5 默认值:节省数据输入时间
另一个重要的属性是“默认值”属性,它用来表示当用户在表中添加新的记录时,Access将在字段中置放何种默认值。默认值可以是文本,也可以是表达式,它可以为数据输入人员节省大量时间。但是,它不能为字段中的输入作任何有效性验证。

提示

默认值会自动反映到包含相应字段的窗体和报表当中。这与标题属性是不一样的,不管默认值是在窗体和报表的创建之前设定,还是在它们创建之后设定,都会是这样。

如果打算将Access数据库升迁到客服/服务器数据库上,那么必须注意,默认值不总是能够被移动到服务器上,即使服务器支持它们。可以直接在服务器上设置默认值,但是这些值在用户给表添加新记录时不会自动出现,除非用户在没有给包含默认值的字段添加数据的情况下保存了该记录。和在自动编号中一样,可以在窗体级执行默认值,并且也有同样的缺点。如果使用Access 2007的“升迁向导”将数据移动到Microsoft SQL服务器,那么Access就会将默认值导出到服务器数据库中,只要可以将它们转换为常值或T-SQL(Transact SQL)。
练习:为State、ContactDate和CreditLimit字段输入以下默认值。

State:CA
ContactDate:=Date ( )
CreditLimit:1000

切换到数据表视图,并添加一条记录。注意State、ContactDate和CreditLimit字段出现的默认值。需要的话,用户可以覆盖这些默认值。

注意

Date( )是Visual Basic for Applications(VBA)的内部功能,用于返回日期。当用于字段的默认值时,Access会在用户给表添加新行的时候,将当前日期输入到该字段中。
2.5.6 有效性规则:控制字段的输入
默认值属性为用户提示了一个值,有效性规则属性则不然,它实际上限制了用户对字段的输入。不要企图修改有效性规则,数据库引擎对它有严格的规定。同默认值属性一样,这个属性可以包含文本,也可以包含Access中有效的表达式,但是,用户定义的函数不能包含到有效性规则属性当中。在有效性规则属性当中,也不能包含对窗体、查询和表的引用。

提示

如果设置了有效性规则属性,而没有设置有效性文本属性(在下一节中介绍),那么当违反有效性规则的时候,Access会自动显示一个标准的错误消息。为了显示自定义的消息,应该在有效性文本属性中输入消息文本。

提示

如果计划将Access数据库升迁到一个数据库服务器上,那么就应该注意,不能总是简单地将有效规则导出到服务器上。有时必须使用服务器上的触发器重新创建它们。当违反服务器上的有效规则时,会显示非Access定义的错误信息。应该编码用户的应用程序,用以提供适当的错误信息。在窗体级也可以执行有效规则,但是如果有其他方式访问数据,是不能强制使用它们的。如果使用Access 2007的“升迁向导”将数据移动到Microsoft SQL服务器,那么该向导就会将有效规则导出到服务器数据库。
练习:对表中的字段添加以下有效性规则(当将光标从这个属性上移开的时候,Access会为State的缩写添加引号)。

State:In ( CA, AZ, NY, MA, UT )
ContactDate:<=Date ( )
CreditLimit:Between 0 And 5000

(1)切换到数据表视图。如果表中已经包含了数据,那么当存储改动的时候,便会显示如图2.10所示的消息。

image

注意

在这个例子中,表达式<=Date()用于限制输入给字段的值必须是当前日期或之前的日期。因为Date()表达式总是返回当前日期,所以无论是用户添加新的行还是修改现有的行,有效规则都会被应用。
如果单击“是”按钮,那么Access便将使用新的规则来验证以前所有的数据。如果有错误发生,系统便会给出提示。但是,并不能知道究竟是哪一条记录与规则发生了冲突(如图2.11所示)。用户必须创建一个查询才能找出与规则发生了冲突的记录。

如果单击“否”按钮,Access便不会使用新的规则来验证以前的数据,当然,这时也就不会出现问题。

image

(2)在进入数据表视图之后,试着在State字段中输入一个无效的州名,这时将显示一个如图2.12所示的消息框。可以看出这些消息并不友好,因此,要使用有效性文本属性来创建自定义消息。

vimage

提示

有效性规则会自动地反映到包含相应表的窗体和查询当中。不管有效性规则是在窗体和查询的创建之前设定,还是在它们创建之后设定,都会是这样。当为字段创建了有效性规则之后,Access便不会允许Null值输入字段,这就意味着字段不能留为空白。如果要允许Null值进入字段,就应该将其添加到有效性表达式In ( CA, AZ, NY, MA, UT ) Or Is Null中。

2.5.7 有效性文本:为用户提供错误消息

有效性文本属性用于声明错误消息,当用户违反有效性规则的时候,他们便会看到这些消息。有效性文本属性包含的必须是文本,表达式在有效性文本属性中是无效的。

练习:添加State、ContactDate和CreditLimit字段的有效性文本属性。

State:The State Must Be CA, AZ, NY, MA, Or UT
ContactDate:The Contact Date Must Be On Or Before Today
CreditLimit:The Credit Limit Must Be Between 0 and 5000

试着输入3个字段的无效值,然后检查错误消息。

2.5.8 必填字段属性:强制用户输入字段值

必填字段属性是非常重要的,它决定是否要在字段中输入值。当要确保将数据输入到字段中时,这个字段对外部键字段非常实用。对一些包含与商务有关的信息(如CompanyName)的字段,它也是至关重要的。

注意

外部键字段就是指在另一个表中的可查询字段。例如,对于客户表和订单表来说,它们都包含一个客户ID字段。在客户表中客户ID是主键字段。而在订单表中,客户ID是外部键字段,因为它的值可在客户表中查到。
练习:将CompanyName和PhoneNumber字段的必填字段属性设为“是”。然后切换到数据表视图并添加一条新的记录,这时让CompanyName和PhoneNumber两个字段留为空白。不过在其他字段中至少要输入一个值。这样,当将光标移离记录时,将出现如图2.13所示的错误消息。

image

2.5.9 允许空字符串:适应无数据的情况

允许空字符串属性与必填字段属性相似。使用它可以决定是否允许用户输入0字长的字符串("")。空字符串与Null(是指不输入)是不一样的,它表示对某一特定的字段来说,数据不存在。例如,外籍雇员可能没有社会保障号码。通过输入一个空字符串,数据录入人员便可以表示无社会保障号码的情况。

练习:添加一个名为“ContactName”的字段,并将其不会必填字段属性设为“是”。然后,试着添加一条新记录,在ContactName字段中输入两个引号。这时将不会出现错误消息,因为在Access 2007中,允许空字符串属性默认为“是”。当移出该字段时,空字符串就会出现。再回到表的设计过程,将“允许空字符串”属性设为“否”,然后进入数据表视图,并再次在ContactName字段中输入两个引号。这时用户应该会看见如图2.14所示的错误信息,表示操作失败。

image

警告

在Access以前的版本中,“允许空字符串”属性的默认设置为“否”。但在Access 2002、Access 2003和Access 2007中,Microsoft已经将该默认设置更改为“是”。一定要注意该默认设置,尤其是对于习惯了操作以前版本的Access用户来说。

提示

不要忘了,如果要取消对当前字段的改变,应该按一次Esc键。如果要取消对当前记录的所有改变,应该按两次Esc键。

提示

“必填字段”属性和“允许空字符串”属性是相互作用的。如果将“必填字段”属性设为“是”,而将“允许空字符串”属性设为“否”,那么就实现了对用户的严格限制。这时,用户不仅要输入一个值,而且输入的值还不能是0长度的字符串。

如果将“必填字段”和“允许空字符串”的属性都设为“是”,那么就要求用户输入一个值,而且输入的值还可以是0长度的字符串。但是,如果将“必填字段”和“允许空字符串”的属性都设为“否”,那么就相当于允许用户将字段留为“Null”(即空白),但不允许输入0长度的字符串。

最后,如果将“必填字段”属性设为“否”,而将“允许空字符串”属性设为“是”,那么就相当于允许用户将字段留为“Null”(即空白),也允许用户输入0长度的字符串,因此这时对用户是最宽容的。

2.5.10 索引:加速搜索

当用户搜索字段时,索引可以提高操作处理的速度。虽然说索引多一点比索引少一点要好,但是,索引也有它的不足之处(请参考下面的例子)。一般来说,应该为那些用于搜索、排序和查询规则的字段提供索引。

练习:将CompanyName、ContactName和State字段的索引属性设为“有(有重复)”。然后单击功能区“设计”选项卡上“显示/隐藏”组中的“索引”按钮,屏幕上将出现如图2.15所示的窗口。

为了创建非主键多字段索引,必须使用“索引”窗口,要创建一个具有一个名字但具有多个字段的索引。如图2.15所示,图中给出的索引是StateByCredit,它是基于CreditLimit字段和State字段的组合。请注意,索引中只有第1个字段才有索引名。第2个字段即State出现在第一个字段的下一行,它没有索引名。

image

索引可以加速搜索、排序和数据分组。其缺点在于它会占用大量的硬盘空间,而且会减慢数据的编辑、添加和删除过程的速度。虽然说在大多数情况下,它带来的便利大于它的不足,但是,不应该索引表中的每个字段。只须为那些要用于搜索或排序的字段或字段组合进行索引,不要为那些具有高度重复数据的字段(如一个字段具有两个不同的值)创建索引。最后,也不要为“是/否”字段创建索引。它们只占用一位的存储空间,而且又只有两个值,因此,索引不能为“是/否”字段带来什么便利。

提示

索引在数据库服务器上的作用很重要。当将Access数据库升迁到非Microsoft服务器上时,就不能创建索引了。此时必须在后端数据库服务器上重新创建所有索引。如果数据库服务器运行的是Microsoft SQL服务器,那么就可以使用Access 2007的“Access升迁向导”升迁Access数据库。该工具会在索引所处的Access表位置创建服务器表的索引。

2.5.11 Unicode压缩:压缩数据

最后一个属性是“Unicode压缩”。“Unicode压缩”属性值用于文本和备注字段。这个属性用于决定字段中数据是否使用Unicode压缩来进行压缩。在Access 2000以前的版本中,数据以DBCS的格式进行存储,这个格式用来存储针对某一特定语言如汉语的字符数据。在Access 2000及更高版本中,所有的数据都以Unicode 2字节表示格式进行存储。虽然对这种格式对各个字符来说,要求的空间更大了(是两个字节而不是一个字节),但Unicode压缩属性能使数据尽可能地得到压缩。如果所使用的字符集允许压缩,而且“Unicode压缩”属性又被设定为“是”,那么列中的数据将以压缩格式存储。

网友评论

登录后评论
0/500
评论