4.2 设置和转换字段的数据类型
字段的数据类型是字段的一个重要属性,它指明了在字段中可以存储哪类数据。在创建字段时,如果没有明确指定字段的数据类型,Access会将字段的数据类型自动设置为“短文本”。本节将介绍在Access中为字段提供的数据类型及其设置方法,还将介绍在转换字段的数据类型时需要注意的问题。
4.2.1 设置字段的数据类型
字段的数据类型决定在字段中可以存储什么类型的数据,例如文本、数字、日期等。数据类型还决定字段包含哪些其他的属性,而属性控制着字段的外观和行为,数据类型实际上也是字段的一个属性。具体来说,字段的数据类型决定字段的以下重要特性:
- 字段的格式。
- 字段中存储数据的大小。
- 在表达式中使用字段的方式。
- 是否可为字段设置索引。
表4-1列出了Access支持的数据类型,本章后续内容将会对其进行详细介绍。
表4-1 Access支持的数据类型
注意:.mdb文件格式的数据库不支持“附件”和“计算”两种数据类型。
与4.1节介绍的字段的基本操作类似,设置字段的数据类型也可以在数据表视图或设计视图中完成。
1.在数据表视图中设置字段的数据类型
在数据表视图中设置字段的数据类型的操作步骤如下:
(1)在数据表视图中打开表,然后单击要设置数据类型的字段所在列中的任意一个单元格。
(2)在功能区的“表格工具|字段”选项卡的“数据类型”下拉列表中选择所需的数据类型,如图4-11所示。
图4-11 在数据表视图中设置字段的数据类型
2.在设计视图中设置字段的数据类型
在设计视图中设置字段数据类型的操作步骤如下:
(1)在设计视图中打开表,然后单击“数据类型”列中要设置数据类型的字段对应的单元格。
(2)单击单元格右侧的下拉按钮,在打开的下拉列表中选择所需的数据类型,如图4-12所示。
图4-12 在设计视图中设置字段的数据类型
4.2.2 文本
“文本”数据类型分为“短文本”和“长文本”两种,“短文本”数据类型可以存储最多不超过255个字符的内容,“长文本”数据类型可以存储超过255个字符的内容。
用户可以指定文本字段的大小,该属性决定在文本字段中可以存储的最大字符数,Access会根据用户在该字段中实际输入的内容的长度来决定内容占用的存储空间大小:
- 如果输入内容的字符数小于文本字段的大小,则将按照内容的实际字符数进行存储。例如,如果将文本字段的字符数指定为16个字符,而实际输入的内容的字符数只有10个,则按照10来存储,这样可以避免浪费额外的存储空间,而且又能为可能包含较多字符数的项目预留足够的存储空间。
- 如果输入内容的字符数大于文本字段的大小,则自动将超出字符数上限的部分删除。
设置文本的格式可以用不同方式显示文本,文本格式的设置方法将在4.4.2节进行介绍。
4.2.3 数字
“数字”数据类型存储除货币值之外的其他数值,这些数值可以参与计算。“数字”数据类型包含多种子类型,这些子类型控制在“数字”数据类型中存储数值的方式,如图4-13所示。
表4-2列出了“数字”数据类型包含的子类型及其特性。
图4-13 “数字”数据类型
表4-2 “数字”数据类型包含的子类型及其特性
注意:如果要将字段与另一个表中的自动编号字段建立关联,则需要将该字段设置为长整型。
在指定“数字”数据类型的子类型时,应该确保所选择的子类型能够容纳实际可能使用到的最大值,否则会出现溢出问题而导致数据库崩溃。
设置数字的格式可以用不同方式显示数值,数字格式的设置方法将在4.4.3节进行介绍。
4.2.4 日期/时间
“日期/时间”数据类型存储日期和时间,可以选择不同的日期和时间格式,如图4-14所示。日期和时间可以参与计算,例如计算两个日期之间相隔的天数。设置日期和时间的格式可以用不同方式显示日期和时间,日期和时间格式的设置方法将在4.4.4节进行介绍。
图4-14 “日期/时间”数据类型
4.2.5 货币
“货币”数据类型存储货币值,可以选择不同的货币格式,如图4-15所示。“货币”类型的数据在小数点左侧可以精确到15位,在小数点右侧可以精确到4位,计算时不会自动进行舍入。
图4-15 “货币”数据类型
4.2.6 自动编号
“自动编号”数据类型存储从1开始的自然数序列,其值由Access自动维护,用户无法对其进行修改。一旦在表中创建了“自动编号”数据类型的字段,每次添加新记录时编号值都会自动递增,即使删除现有记录,以后添加的新记录中的编号仍然持续递增,不受已删除记录的影响。
在每个表中只能有一个“自动编号”数据类型的字段,如果存在多个该类型的字段,在保存表时将显示如图4-16所示的提示信息。Access会自动将“自动编号”数据类型的字段设置为表的主键,这是因为“自动编号”字段中包含的都是不重复的自然数,可以唯一确定表中的每一条记录。
4.2.7 是/否
图4-16 表中包含多个“自动编号”
字段时显示的提示信息
“是/否”数据类型存储只有两种值的组合,如图4-17所示,包括以下3种。
- 真/假:“真/假”的值显示为True或False。
- 是/否:“是/否”的值显示为Yes或No。
- 开/关:“开/关”的值显示为On或Off。
4.2.8 OLE对象
图4-17 “是/否”数据类型
“OLE对象”数据类型以链接或嵌入的形式在表中存储由其他程序创建的文件,这些文件可以是现有文件或新建的空白文件。
“链接”是指Access表的“OLE对象”字段中的值只存储源文件的位置信息,而不包括源文件中的内容,只有对源文件进行修改,Access表中的字段值才会进行相应的更新。“嵌入”是指在Access表中插入其他程序文件,这些文件已经成为表的一部分,而不再与源文件有任何关联,“嵌入”形式会增加Access数据库文件的大小。
为“OLE对象”数据类型的字段设置值的操作步骤如下:
(1)在数据表视图中右击“OLE对象”字段中的单元格,然后在弹出的菜单中选择“插入对象”命令,如图4-18所示。
(2)打开Microsoft Access对话框,选中“新建”单选按钮将显示如图4-19所示的界面,从列表中选择要新建文件的源程序;选中“由文件创建”单选按钮将显示如图4-20所示的界面,单击“浏览”按钮选择要添加到表中的文件,选中“链接”复选框则以链接的形式将文件插入Access表中,否则以嵌入的形式插入文件。
图4-18 选择“插入对象”命令
图4-19 插入新建的空白文件
图4-20 插入现有文件
(3)单击“确定”按钮,根据在第(2)步中的选择将新建的空白文件或现有文件插入当前的Access表中。
在表中插入OLE对象后,双击该对象,即可在其源程序中打开它,如图4-21所示的“程序包”就是插入了OLE对象的字段。
图4-21 在表中插入OLE对象
4.2.9 超链接
“超链接”数据类型以超链接格式存储字段值,在该数据类型的字段中输入网址,单击该网址将自动在浏览器中打开相应的网页,如图4-22所示。
图4-22 单击“超链接”字段中的网址将打开相应的网页
4.2.10 附件
与“OLE对象”数据类型类似,在“附件”数据类型中也可以存储由其他程序创建的文件。与“OLE对象”数据类型的区别在于,“附件”数据类型可以存储多个文件,并支持更多的文件类型。
为“附件”数据类型的字段设置值的操作步骤如下:
(1)在数据表视图中右击“附件”字段中的单元格,然后在弹出的菜单中选择“管理附件”命令,或者直接双击“附件”数据类型的单元格,如图4-23所示。
(2)打开“附件”对话框,单击“添加”按钮,如图4-24所示。
图4-23 选择“管理附件”命令
图4-24 单击“添加”按钮
(3)打开“选择文件”对话框,双击要作为附件插入的文件,如图4-25所示。
图4-25 选择要插入的文件
(4)将文件添加到“附件”对话框中,如图4-26所示。使用相同的方法可以继续添加所需的文件,完成后单击“确定”按钮。
(5)添加附件后的效果如图4-27所示,曲别针符号右侧括号中的数字表示当前添加的附件的数量。
图4-26 将文件添加到“附件”对话框中
图4-27 添加后的附件数据
用户可以在“附件”对话框中管理表中的附件,包括对附件执行打开、另存和删除等操作。打开附件时,将在其源程序中打开。
4.2.11 计算
“计算”数据类型存储计算结果,可以使用表达式生成器创建用于计算的表达式。在设计视图中将字段的数据类型设置为“计算”时将立即打开“表达式生成器”对话框,在上方的文本框输入表达式的各个部分,在下方的3个列表框中选择要在表达式中使用的计算项和运算符。
在图4-28中有一个创建好的表达式,该表达式计算“单价”字段与“销量”字段的乘积。单击“确定”按钮将创建“计算”字段,并得到计算结果,如图4-29所示。注意,不能直接修改“计算”字段中的值,而只能通过改变在表达式中出现的其他字段的值来得到新的计算结果。
图4-28 “表达式生成器”对话框
图4-29 “计算”字段可以自动对现有字段的值进行计算
4.2.12 查阅向导
“查阅向导”数据类型可以在一个下拉列表中显示一系列由用户指定的值,或者从其他表或查询中检索的值。在下拉列表中选择某一项,即可将该项数据输入表中,这样就可以限制输入数据的范围,防止用户输入无效的数据。
为“查阅向导”数据类型的字段设置值的操作步骤如下:
(1)在设计视图中将字段的数据类型设置为“查阅向导”时将立即打开“查阅向导”对话框,如图4-30所示。选择为查阅列表添加值的方式,此处选中“自行键入所需的值”单选按钮,然后单击“下一步”按钮。
(2)进入如图4-31所示的界面,指定添加到查阅列表中的值。创建的查阅列表默认只有一列,用户可以通过“列数”选项改变查阅列表的列数,输入好所需的值后单击“下一步”按钮。
(3)进入如图4-32所示的界面,对查阅列表进行更多控制方面的设置。例如,可以选中“限于列表”复选框,以便限制用户只能从查阅列表中选择一个值,而不能手动输入列表以外的值。在“请为查阅字段指定标签”文本框中设置的是该字段的名称。
图4-30 选择为查阅列表添加值的方式
图4-31 指定查阅列表中的值
图4-32 设置查阅列表的更多选项
(4)完成所需的设置后单击“完成”按钮,则完成“查阅向导”字段的设置。保存表的设计结果,然后切换到数据表视图,在“查阅向导”字段的任意一个单元格中都可以访问设置好的查阅列表,如图4-33所示,从中选择一项即可将其输入单元格中。
图4-33 从查阅列表中选择预先设置好的值
4.2.13 转换数据类型
Access提供了数量众多的数据类型,在这些数据类型之间进行转换时可能会出现一些意想不到的问题。下面列出了常用的数据类型之间的转换方式和注意事项:
- 所有数据类型都不能转换为“自动编号”数据类型。
- “短文本”数据子类型可以正确转换为“长文本”数据子类型,但是“长文本”数据子类型能否正确转换为“短文本”数据子类型要看“长文本”数据子类型中的字符数是否超过“短文本”数据子类型的字符上限,如果未超过,则可以正确转换,否则会删除超出的部分。
- “数字”数据类型可以正确转换为“文本”数据类型,但是在将“文本”数据类型转换为“数字”数据类型时,如果“文本”数据类型中包含非数字的内容,转换将会失败并自动删除整个内容。“文本”数据类型转换为“日期/时间”“货币”和“是/否”等数据类型时也具有类似的情况。
- 在将“数字”数据类型转换为“货币”数据类型时,由于“货币”数据类型使用固定的小数位,所以将删除超出部分的小数位,导致精度上的损失。在将“货币”数据类型转换为“数字”数据类型时,如果“货币”数据类型包含小数位,而“数字”数据类型使用的是“字节”“整型”或“长整型”等子类型,则将删除“货币”数据类型的小数部分。
- 在将“自动编号”数据类型转换为“数字”数据类型时,如果“数字”数据类型使用的是“整型”子类型,则大于32 767的自动编号超出了“整型”子类型的数字范围的上限,因此超出的部分将被删除。在将“自动编号”数据类型转换为“文本”数据类型时也具有类似的情况。