Ayuda con código

Me gustaría saber si puedes ayudarme con un código. Tengo una base de datos para administrar tramites de vehículos con una sola tabla llamada DATOS con los campos marca - modelo - motor - dnitit - titular - domiciliotit - localidadtit - dnicomp - comprador - domiciliocomp - localidadcomp - dnivend - vendedor - domiciliovend - localidadvend y estoy haciendo un formulario con varias hojas en donde en cada una de ellas ubico los campos de la tabla (o sea vehículos - titulares - compradores - vendedores) en el campo dnitit tengo el siguiente código:
Private Sub DNITIT_AfterUpdate()
Me.TITULAR = DLookup("[titular]", "[datos]", "[dnitit]= " & Me.DNITIT)
Me.DOMICILIOTIT = DLookup("[Domiciliotit]", "[datos]", "[dnitit]= " & Me.DNITIT)Me.LOCALIDADTIT = DLookup("[localidadtit]", "[datos]", "[dnitit]= " & Me.DNITIT)
end sub
Para que cuando coloque en dni del cliente me autorrellene los datos para no volver a cargarlos, pero mi idea es modificar el código para que también busque en dnicomp y dnivend, pero no logro conseguirlo. No se si seré claro en la explicación y si se puede lograr.
1

1 respuesta

Respuesta
1
Yo haría lo siguiente: La función Dlookup devuelve nulo cuando no encuentra el registro, por lo que añadiría a tu código la función nz()
Me.TITULAR = nz(DLookup("[titular]", "[datos]", "[dnitit]= " & Me.DNITIT),"")
Con ello me aseguro que el titular esta en blanco si no encuentra el DNI.
A continuación comprobaría si ha encontrado al titular a través del 'dnitit' y, en caso de no estar, lo buscaría por otro de los campos.
if me.TITULAR="" then Me.TITULAR = nz(DLookup("[titular]", "[datos]", "[dnicomp]= " & Me.DNITIT),"")
Y si no aparece con 'dnicomp' probamos el otro.
if me.TITULAR="" then Me.TITULAR = nz(DLookup("[titular]", "[datos]", "[dnivend]= " & Me.DNITIT),"")
No sé si he entendido bien el problema, pero creo que es eso lo que buscas.
Hola Amigo, primero que nada gracias por contestar, he cambiado el código por el que tu me has pasado y te comento que lo puse en el campo dnitit en el evento después de actualizar, he probado ingresar un dni ya existente que es titular y funciona bien (el único inconveniente es que solamente me autorrellena el apellido y no me coloca domicilio, localidad, etc), cuando coloco un dni ya existente pero que es comprador o vendedor el código me devuelve error "3464 no coinciden los tipos de datos en la expresión" y cuando hago clic en depurar me resalta en amarillo esta parte del código:
If Me.TITULAR = "" Then Me.TITULAR = Nz(DLookup("[titular]", "[datos]", "[dnicomp]= " & Me.DNITIT), "")
Perdona mi ignorancia, pero hace muy poco que comencé a utilizar access, así que espero sepas comprender... muchas gracias nuevamente y espero tu respuesta.
Saludos, Gustavo.
El error que indicas suele deberse a que estás comparando (o realizando operaciones) con tipos de datos incompatibles.
Si el campo 'dnicomp' es de tipo texto y lo comparas con un número te daría ese tipo de error (supongo que irá por ahí el problema).
Para buscar en un campo de texto tienes que poner el valor entre comillas, por lo que la instrucción quedaría así:
If Me.TITULAR = "" Then Me.TITULAR = Nz(DLookup("[titular]", "[datos]", "[dnicomp]= '" & Me.DNITIT & "'"), "")
Para que te rellene la dirección tendrás que buscarla con una instrucción similar a las anteriores: Me.Direccion = nz(DLookup("[Direccion]", "[datos]", "[dnitit]= " & Me.DNITIT),"")
Y con el resto de campos igual.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas