Puede usar la función Nz para devolver cero, un valor cadena de longitud cero (" "), u otro valor especificado cuando un valor Variant es Null. Por ejemplo, puede usar esta función para convertir un valor Null en otro valor y evitar que se propague a través de una expresión.
Sintaxis
Nz ( variant [, valueifnull ] )
La sintaxis de la función Nz consta de los siguientes argumentos:
Argumento |
Descripción |
variant |
Necesario. Variable de tipo de datosVariant. |
valueifnull |
Opcional (a menos que se use en una consulta). Tipo de datos Variant que proporciona el valor que se va a devolver si el argumento variant es Null. Este argumento permite devolver un valor distinto de cero o una cadena de longitud cero. Nota: Si usa la función Nz en una expresión de una consulta sin usar el argumento valorSiEsNulo, el resultado será una cadena de longitud cero en los campos que contengan valores nulos. |
Si el valor del argumento variant es Null,la función Nz devuelve el número cero o una cadena de longitud cero (siempre devuelve una cadena de longitud cero cuando se usa en una expresión de consulta), dependiendo de si el contexto indica que el valor debe ser un número o una cadena. Si se incluye el argumento valueifnull opcional, la función Nz devolverá el valor especificado por ese argumento si el argumento variant es Null. Cuando se usa en una expresión de consulta, la función NZ siempre debe incluir el argumento valueifnull,
Si el valor de variant no es Null, la función Nz devuelve el valor de variant.
Observaciones
La función Nz es útil para expresiones que pueden incluir valores Nulos. Para forzar que una expresión se evalúe como un valor no nulo incluso cuando contiene un valor Null, use la función Nz para devolver cero, una cadena de longitud cero o un valor devuelto personalizado.
Por ejemplo, la expresión 2 + varX siempre devolverá un valor Null cuando lavarX variant sea Null. Sin embargo, 2 + Nz(varX) devuelve 2.
A menudo puede usar la función Nz como alternativa a la función IIf. Por ejemplo, en el código siguiente, son necesarias dos expresiones, incluida la función SiI, para devolver el resultado deseado. La primera expresión que incluye la función IIf se usa para comprobar el valor de una variable y convertirla en cero si es Null.
varTemp = IIf(IsNull(varFreight), 0, varFreight)
varResult = IIf(varTemp > 50, "High", "Low")
En el siguiente ejemplo, la función Nz proporciona la misma funcionalidad que la primera expresión y el resultado deseado se obtiene en un paso en lugar de dos.
varResult = IIf(Nz(varFreight) > 50, "High", "Low")
Si proporciona un valor para el argumento opcional valorifnull, ese valor se devolverá cuando variant sea Null. Al incluir este argumento opcional, es posible que pueda evitar el uso de una expresión que contenga la función IIf. Por ejemplo, la siguiente expresión usa la función IIf para devolver una cadena si el valor de varFreight es Null.
varResult = IIf(IsNull(varFreight), _
"No Freight Charge", varFreight)
En el siguiente ejemplo, el argumento opcional proporcionado a la función Nz proporciona la cadena que se devolverá si varFreight es Null.
varResult = Nz(varFreight, "No Freight Charge")
Ejemplos de consulta
Expresión |
Resultados |
SELECT ProductID, NZ(Discount,"No Detail Available") AS Expr2 FROM ProductSales; |
Devuelve "ProductID" en la columna Expr1, evalúa los valores "Nulos" en el campo "Descuento" y devuelve "Sin detalles disponibles" para todos los valores Nulos (devuelve los valores no nulos tal y como están). |
SELECT ProductID, NZ(Discount,"No Detail Available") AS ReplaceNull FROM ProductSales; |
Devuelve "Id_producto" en la columna Producto, evalúa los valores "Nulos" en el campo "Descuento" y devuelve "Sin detalles disponibles" para todos los valores Nulos (devuelve los valores no nulos tal y como están) y se muestra en la columna ReplaceNull. |
Ejemplo de VBA
Nota: Los ejemplos siguientes muestran el uso de esta función en un módulo Visual Basic para Aplicaciones (VBA). Para obtener más información sobre cómo trabajar con VBA, seleccione Referencia para desarrolladores en la lista desplegable junto a Buscar y escriba uno o más términos en el cuadro de búsqueda.
En el ejemplo siguiente se evalúa un control en un formulario y se devuelve una de las dos cadenas en función del valor del control. Si el valor del control es Null,el procedimiento usa la función Nz para convertir un valor Null en una cadena de longitud cero.
Public Sub CheckValue()
Dim frm As Form
Dim ctl As Control
Dim varResult As Variant
' Return Form object variable
' pointing to Orders form.
Set frm = Forms!Orders
' Return Control object variable
' pointing to ShipRegion.
Set ctl = frm!ShipRegion
' Choose result based on value of control.
varResult = IIf(Nz(ctl.Value) = vbNullString, _
"No value.", "Value is " & ctl.Value & ".")
' Display result.
MsgBox varResult, vbExclamation
End Sub