vincular texto poner microsoft lista insertar formulario dependiente datos cuadros cuadro con como combinados combinado busqueda autocompletar ms-access vba access-vba

ms access - poner - Cuadro de texto nulo problema



cuadro de texto busqueda access (8)

Creo que es posible que deba volver a marcar "", la cadena vacía, y no Null.

Tengo un cuadro de texto y un botón en mi formulario de acceso. En el evento de clic del botón, quiero ver si el cuadro de texto está vacío, si está, no se ejecutará nada. Entonces yo uso

If Me.textbox.Value = Null Then Exit Sub End if

Pero no funciona ... Verifiqué el textbox.value en la ventana de ejecución y es Null, pero la cláusula if simplemente no funciona ... ¿Por qué?

EDITAR: @Dimse, intenté "", no funciona. Y también textbox.text = Null, aparece un error que indica que el cuadro de texto no está activo. Muy extraño.


Expande tu sub como así:

If is null(Me.textbox.Value) Or (Me.textbox.Value = "") Then Exit Sub End if


No pude hacer que esto funcionara, ya que estaba usando el evento KeyUP. Así que en cambio, esto es lo que funcionó para mí.

If(Textbox.Text = '''') ...

Como Textbox.Value solo se actualiza en el evento de cambio, no se actualizó en keyup, por lo que Textbox.Text es lo que está actualmente en el cuadro.

Resumen: Alternativamente, use la propiedad .Text


Null no es igual a otro Null;)

intente If isNull (Me.textbox.Value) Then


Null nunca es igual a nada, ni siquiera Null. Utilice la función IsNull() .

If IsNull(Me.textbox.Value) Then

Si quiere que Me.textbox tratado de la misma manera cuando contiene una cadena vacía como cuando es Nulo, concatene una cadena vacía y verifique la longitud de la cadena combinada:

If Len(Me.textbox.Value & "") = 0 Then

También puede usar la constante nombrada, vbNullString , en lugar de la cadena literal, "" , para una cadena vacía.

If Len(Me.textbox.Value & vbNullString) = 0 Then

El uso de la cadena literal requiere que VBA construya esa cadena desde cero cada vez. Con la constante mencionada, VBA solo necesita hacer referencia a ella, por lo que debe ser más rápido y usar menos memoria. Sin embargo, en muchos (probablemente la mayoría) de los casos, la ventaja de rendimiento con vbNullString sería tan pequeña que no notaría la diferencia. También vea el comentario a continuación de David-W-Fenton .

Para mí, la razón más convincente para usar vbNullString es que es reconocible al instante por mis ojos envejecidos. A la inversa, con la cadena literal, me lleva (un poquito) más tiempo confirmar que "" no es realmente otra cosa ... como " " o "''" . El único inconveniente de vbNullString , IMO, es que requiere más escritura que "" .

Y finalmente, aunque no es necesario que haga referencia explícita a la propiedad Value (ya que es la propiedad predeterminada de un cuadro de texto), la dejé porque la tenía de esa manera y porque también prefiero ser explícita con Value . :-)


Pido disculpas si estoy despertando a los muertos, pero solo para completar, voy a dar el código de cómo probar los espacios (visiblemente ''en blanco / vacío'') también :

If IsNull(Me.Textbox) Or Trim(Me.Textbox) = vbNullString Then If Trim(Me.Textbox & vbNullString) = vbNullString Then ''Shorter version If Len(Trim(Me.Textbox) & vbNullString) = 0 Then ''Shortest version

Vine aquí buscando cómo manejar espacios, vacíos / ZLS, y NULL''s


Solo usa un segundo criterio, eso funcionará !!
En este caso solo una palabra simple como "chequear".

If Forms![Basic]![Table.Item] & "check" = "check" Then MsgBox "Field Empty" Else MsgBox "Field Not Empty" End If


También me disculpo por estar despertando a los muertos, pero me pregunto que nadie ha considerado el uso de la Función Nz ( @MSDN ), muy popular en VBA, también utilizable en Access / SQL y en mi opinión la más conveniente, Solución concisa y potente para valores anulables en expresiones.