文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院办公软件Access避免SQL Server和Access的空值冲突
精品推荐
特别推荐
·帮你防止Access数据库被下载的九种方法
·几种修复ACCESS数据库的实用方法
·两个未被公开Access数据库方法使用技巧
·整理:防止Access数据库被下载的9种方法
·Access中利用拆分后端数据库保存不同数据
·有关ACCESS的数据库安全问题解答
·保护Access 2000数据库的安全方法
·Excel和Access间复制、导入和导出数据
·保护Access 2000数据库的安全
·Microsoft Access技巧及陷阱讲解
·更改Excel数据导入源文件的快捷方法
·在 Access 中使用“存储过程”
热点TOP10
·安全的Microsoft的ACCESS数据库加密方法
·如何使用制表控制器简化Access对表操作
·在 Access 中使用“存储过程”
·两个未被公开Access数据库方法使用技巧
·asp.net连接Access数据库
·用ASP和SQL语句动态的创建Access表
·整理:防止Access数据库被下载的9种方法
·中文Access2000速成教程--1.7 创建索引
·使用准则进行条件查询
·让select查询结果随机排序
·掌握部署 Access项目的方法
·access下的分页方案
·Access中利用拆分后端数据库保存不同数据
·帮你防止Access数据库被下载的九种方法
·关于Access数据库4种安全方式
·几种修复ACCESS数据库的实用方法
·关于用 SQL 得到 Access 的随机记录集
·在Access数据库中使用SQL Server语句
·把Access转成SQL数据库的方法介绍
·推荐:Access数据库安全中常见问题汇总

避免SQL Server和Access的空值冲突

日期:2007年7月8日 作者: 查看:[大字体 中字体 小字体]


在链接到一个SQL Server数据库的Access项目(即.adp文件)中,你平时经常使用的Access函数通常是不支持的。但大多数时候,都可换用SQL Server支持的一个Transact-SQL(T-SQL)函数。一个特例是Access的空值(Null)函数Nz和IsNull;它们的功能相似,但并不是Access和T-SQL都能支持它们。本文要讨论在什么时候以及如何使用这两个函数来处理空值。

空值的重要性

空值是完全合法的数据库录入项,它们能提供的信息可能超过你的想象。空值指明一个值是未知的,但这并不是说该值不可接受或者不存在。空值表明一个值尚未确定,而且除非确定了合适的值,否则该值将保持未知状态,也就是为一个空值。

开发者的职责是判断空值可能在什么时候出现,并针对性地处理那些值。一个方案是在数据输入时拒绝空值,从而完全回避它们。但这样一来,你的数据将完全禁止空值,所以该方案的缺点在于,在你创建一条记录时,所有数据都必须是已知的。遗憾的是,对于大多数人来说,这个方案都不现实。以医院急诊室的数据库系统为例,是不是因为数据录入员不知道一个病人的中间名,就拒绝为其创建一条记录呢?所以,对空值进行妥善处理可提供更灵活的方案,因为即使数据录入员当时不知道所有数据,也能成功地创建记录。

认识到空值无法避免之后,你的职责就是正确处理它们,确保它们不会导致错误。正确处理空值有两方面的好处:

可与用户共享有意义的信息。

可提前捕捉空值,避免空值在后续的表达式中返回错误。

Access 中的空值

Access提供大量工具来操纵空值:

Is Null——在条件表达式和SQL WHERE子句中使用Is Null。

IsNull——将IsNull用于Visual Basic for Applications(VBA)。

Nz——遇到空值时,用Nz返回除Null之外的其他值。

以上函数在本质上存在细微差异。Is Null和IsNull捕捉空值;而Nz函数处理空值。换言之,如果想返回的不是实际存储的空值,就使用Nz。例如,你可显示一个简单字符串(例如"N/A"),让用户知道数据对于当前记录来说“不可用”。另外,当空值在表达式中使用之前,你可以捕捉空值,因为空值经常会返回错误。

通过链接表或者Access项目来使用Access和SQL Server时,会产生一个问题,因为Access和SQL Server不是用相同的函数来判断空值。因此,你必须知道要使用什么函数,以及在什么时候使用。

在.mdb文件中使用Nz

大多数Access用户和开发者都熟悉Nz函数,它在遇到空值时返回除空值之外的其他值。该函数的形式如下,其中variant代表Variant数据类型,而valueifnull是一个可选参数,它负责在variant为空值时提供真正的返回值。

Nz(variant[, valueifnull])

如省略valueifnull,Nz返回值0或一个零长度字符串(""),具体由variant的数据类型决定。

图A的查询展示了如何使用Nz及其结果。该查询基于Access示例数据库Northwind中的Employees表。

避免Access和SQL Server的空值冲突

图A

两个Nz函数都返回字符串数据类型,因为Region的数据类型为Text。如图B所示,两个Nz函数都返回字符串值,而不是空值,但具体的字符串是不同的。第一个表达式返回字符串"N/A"来取代空值:

WithOptional: Nz([Region],"N/A")

通过返回一个实际的字符串或者值,可为用户提供比空值更多的信息。字符串"N/A"明确指出:当前记录没有合适的值。相反,如返回空值,那么一个空白的字段可能使不熟悉的用户产生误解。

避免Access和SQL Server的空值冲突

图B

Nz返回一个实际的值,而不是容易使人产生误解的空值.第二个表达式返回零长度的字符串来取代空值:

WithoutOptional: Nz([Region])

虽然这样为用户提供的信息较少,但却有效防止了在后续的表达式中使用空值,从而避免数据库出错。图C显示的新表达式证明了这一点。

避免Access和SQL Server的空值冲突

图C

表达式可能不能像预期的那样处理空值,两个表达式都直接或间接依赖于Region字段中的值。第一个表达式直接引用Region字段:

RegionString: IIf([Region]="","N/A",[Region])

只看表达式,你可能认为结果记录集的每个字段中都应该出现一个字符串。图D展示了实际结果,它和你设想的不符,并不是每个字段都包含一个字符串。事实上,只有在字段包含零长度字符串("")的前提下,表达式才会返回字符串"N/A"。我们知道,这些看似空白的字段包含空值,而不是零长度的字符串。但是,错误是可以理解的,也是能避免的。

避免Access和SQL Server的空值冲突

[1] [2] 下一页 




上一篇:通过Oracle平台依赖性进行系统优化

下一篇:用SQL服务器内置的查询分析器寻找错误

避免SQL Server和Access的空值冲突 相关文章:
·避免SQL Server和Access的空值冲突
避免SQL Server和Access的空值冲突 相关软件:

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn