Access - Error 3075, al usar IsNull y consultar usando DLookup

   
Vista:

Error 3075, al usar IsNull y consultar usando DLookup

Publicado por pedro (10 intervenciones) el 03/08/2015 00:53:59
Buenas comunidad, tengo un error el cual no se como resolver, supongo que debe estar en que access de una u otra manera almacena valores en alguna especie de memoria temporal, mientras el formulario esta abierto o algo al respecto.

Cuando abro el formulario y digito un documento para buscar un registro, si el registro esta lo muestra, pues si no esta obvio que no mostrara nada, el problema radica que cuando limpio el campo de consulta y presiono el boton Buscar me sale el error, solo sucede este error desde de haber digitado un valor antes no, pero si borro el valor a mano, el error no persiste, solo cuando lo hago mediante codigo vba, a continuacion colocare el codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim Docu As Variant
    Docu = Me.txtidenreg.value
 
    If IsNull(Docu) = True Then
 
        MsgBox "Debe digitar un documento para la busqueda"
 
    Else
 
        LimpiarCampos
 
        Dim res As Variant
        Dim opcion As String
        Dim Nombres, Apellidos, Barrio, Direccion, Estrato, Genero, Profesion, _
            Ocupacion, Labor, Sisben, Salud, Vivienda, Observacion As Variant
        'Dim Fecha As Date
 
        res = DLookup("Nombres", "Persona", "Identificacion= " & Docu)

el codigo del boton cancelar es el siguiente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub btncancelar_Click()
 
    Dim opcion As String
    opcion = MsgBox("Se cancelara la operacion y se limpiaron los campos, desea seguir?", vbYesNo Or vbQuestion Or vbDefaultButton1)
 
    If (opcion = vbYes) Then
 
        LimpiarCampos
        LimpiarCampoConsulta
        BloquearCampos
        BloquearBotones
 
    End If
 
End Sub

en la funcion limpiar campos consulta sucede esto

1
2
3
4
5
6
Public Function LimpiarCampoConsulta()
 
    Me.txtidenreg.value = ""
    Me.txtidenreg.SetFocus
 
End Function

Quisiera saber por que si dejo el campo vacio mediante codigo me lanza el error, y cuando el doy al boton consulta, asume que hay un valor ya y pasa directo a la consulta sin preguntar nada, pero si limpio el campo manualmente no me sale ese error, agredeceria que me ayudaran me urge, gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error 3075, al usar IsNull y consultar usando DLookup

Publicado por Enrique Heliodoro (1663 intervenciones) el 03/08/2015 07:31:22
No es lo mismo un valor NULL (implica que al objeto no se le asigno valor esto es su actual estado es: Empty) con tener una cadena vacía (de longitud CERO) que ya no es un valor NULL.

Se tendrían que verificar AMBOS estados y alguno mas (por ejemplo que solo contenga espacios y se le considere vacío a 'primer golpe de vista')

Propongo:

If IsNull(Docu) = True Then ===> If Trim(Nz(Docu,"")) = "" Then


Si se admite la sugerencia:
Cuando se dimensionan variables y NO se les asigna un tipo, por defecto asumen que son VARIANT y las variant además de ocupar mas espacio y de admitir el valor NULL, tienen el inconveniente de que son 'de libre interpretacion' por parte de Access.

Recomendaría asignar el tipo correcto en función del dato que deberán asumir y lo mas probable que se gane en seguridad (además de en espacio y rendimiento al no precisar 'conversiones de tipo' en su manejo)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Error 3075, al usar IsNull y consultar usando DLookup

Publicado por pedro (10 intervenciones) el 05/08/2015 05:45:34
gracias lo solucione con algo parecido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar