Access数据库实战(二): Nz函数

(转载自新浪博客)
在报表设计及输出效果时,经常要处理数据的空值问题,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函数返回零、零长度字符串或自定义返回值。

例如,当Variant varX为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