加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

关于Access中的NZ函数用法,很实用

(2012-07-27 08:17:24)
标签:

杂谈

分类: 杂项

在报表设计及输出效果时,经常要处理数据的空值问题,Access提供了一个很好用的函数NZ.

Nz(AA, "BB")意思是如果AA的值是空的话就用BB代替。如果AA的值不是空就不变。

比如说有一个值Variant,当Variant为Null时,可以使用Nz函数返回零、零长度字符串(" ") 或其他指定的值。例如,您可以使用该函数将Null值转换为其他值,以避免该值在表达式中传播。

 

Nz(variant, [valueifnull])

 

Nz函数具有下列参数。

 

参数 说明

variant 数据类型为Variant的变量。

valueifnull 可选(除非是用在查询中)。Variant型,如果 variant 参数为Null,此参数提供要返回的值。使用此参数,可以返回一个非零或零长度字符串的值。

注释如果在查询中的表达式中使用Nz函数,而没有使用 valueifnull 参数,将在包含 null 值的字段中生成一个零长度的字符串。

 

如果 variant 参数的值为Null,Nz函数将返回数值零或零长度字符串(当用在查询表达式中时,始终返回零长度字符串),这取决于上下文指示该值应是数值还是字符串。如果包含了可选的 valueifnull 参数,Nz函数将在 variant 为Null的情况下返回由该参数指定的值。用在查询表达式中时,NZ函数应始终包含 valueifnull 参数,

 

如果 variant 的值不是Null,Nz函数将返回 variant 的值。

 

说明

Nz函数对于可能包含Null值的表达式来说,非常有用。若要强制表达式计算为非Null值(即使它包含一个Null值),请使用Nz函数返回零、零长度字符串或自定义返回值。

 

例如,当VariantvarX为Null时,表达式2 + varX将始终返回一个Null值。然而,2 + Nz(varX)将返回 2。

 

通常,可以使用Nz函数作为IIf函数的替代方法。例如,在下列代码中,两个包含IIf函数的表达式是返回所需结果所必需的。第一个包含IIf函数的表达式用于检查变量的值,如果其值为Null,则将其转换为零。

 

varTemp = IIf(IsNull(varFreight), 0, varFreight)

varResult = IIf(varTemp > 50, "High", "Low")

在下一个示例中,Nz函数将提供与第一个表达式相同的功能,而只需一步(而非两步)即可得到所需结果。

 

varResult = IIf(Nz(varFreight) > 50, "High", "Low")

如果为可选参数 valueifnull 提供了一个值,该值将在 variant 为Null的情况下被返回。通过包含该可选参数,可以避免使用包含IIf函数的表达式。例如,下面的表达式将在varFreight的值为Null的情况下,使用IIf函数返回一个字符串。

 

varResult = IIf(IsNull(varFreight), "No Freight Charge", varFreight)

在下一个示例中,提供给Nz函数的可选参数将在varFreight为Null的情况下,提供要返回的字符串。

varResult = Nz(varFreight, "No Freight Charge")

 

在ACCESS中控制打印记录个数

方法一:利用工具箱,报表主体中加一个分页符PageBreak1,在报表的代码界面里面写入以下代码:
Option Compare Database
Dim row As Long
Dim RowsInPage As Integer
Private Sub 主体_Format(Cancel As Integer, FormatCount As Integer)
    RowsInPage = 7
    row = row + 1
    If row >= RowsInPage Then
        Me.PageBreak1.Visible = True
        row = -1
    Else
        Me.PageBreak1.Visible = False
    End If
End Sub


方法二:

在报表的代码界面里面写入以下代码:
Option Compare Database
Dim row As Long
Private Sub 主体_Format(Cancel As Integer, FormatCount As Integer)
    row = row + 1
    If Me.Section(acDetail).ForceNewPage = 1 Then
        Me.Section(acDetail).ForceNewPage = 0
    Else
        If row Mod 7 = 0 Then
            Me.Section(acDetail).ForceNewPage = 1
            row = 0
        End If
    End If
End Sub

 

0

阅读 收藏 喜欢 打印举报/Report
前一篇:求EXCEL的末行
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有