Ayuda para crear formulario

Por favor experto, necesito ayuda lo más rapido que puedas con esto, recién estoy empezando y te molesto para resolver lo siguiente:
Estoy haciendo un formulario que tiene un cuadro de texto donde se escribe el dato del dni. También tengo un botón que al hacer click debe buscar el caso en una consulta ParaAltaConsulta. Lo que tengo que lograr es que si el caso se encuentra en la consulta me muestre el dato del apellido en el campo apellido del formulario y si no me muestre un mensaje. Hice hasta acá el siguiente código:
Private Sub Comando3_Click()
Dim db As Database
Dim sql As Recordset
Dim DNItc As String
Set db = CurrentDb
DNItc = Me.dnicaso
Buscar = "select * from ParaAltaConsulta where DNI ='" & DNItc & "'"
Set sql = db.OpenRecordset(Buscar)
Form_Formulario2.APELLIDOS.Value = Apellido
End Sub
Pero no se si funciona (osea si selecciona el caso) porque no me muestra nada en el campo APELLIDOS de mi formulario, ni tampoco me da mensaje de error.
Gracias espero haber sido clara y espero la respuesta todo lo más rapido que puedas.

1 respuesta

Respuesta
1
Te doy dos formas de hacerlo:
1) Utilizando un RecordSet
Dim db As DAO.Database, rs As DAO.Recordset
Dim Buscar As String
Buscar = "select DNI, Apellido from ParaAltaConsulta where DNI ='" & DNItc & "'"
Set db = CurrentDb()
Set rs = db.OpenRecordset(Buscar)
If rs.RecordCount > 0 Then
APELLIDOS.Value = Apellido
Else
MsgBox "No existe esta persona", vbOKOnly + vbCritical, "Aviso"
End If
rs.Close
Set db = Nothing
2) Utilizando la funcion DLookup
Buscar = Nz(DLookup("[Apellido]", "ParaAltaConsulta", "[DNI] = '" & p_DNItc & "'"))
If IsNull(Buscar ) Or Buscar = "" Then
MsgBox "No existe esta persona", vbOKOnly + vbCritical, "Aviso"
Else
APELLIDOS.Value = Buscar
End If
NOTA: la busqueda y la definicion de la variable Buscar las hago como texto, si fuera numérico la busqueda sería = " & p_DNItc & ""
Experto, te agradezco sumamente la respuesta que fue completísima, pero te pido algo más:
La solución 2 funciona perfectamente, pero la solución 1 (que es la que más me interesa) funciona parcialmente.
Note que cuando vos escribís el código no pones la siguiente linea:
DNItc = Me.dnicaso.value
(Que me pareció una omisión porque obviamente es obligatorio para cualquiera de las dos soluciones que me brindaste)
Entonces como lo tuve que agregar, descubrí que (en la solución 2) si lo escribo:
Me.dnicaso.value = DNItc, todos los casos existan o no me traen el aviso de que no existe, en cambio si lo escribo al reves
DNItc = Me.dnicaso.value, el aviso lo trae para los casos que verdaderamente no existen y para los otros no, aunque en el campo APELLIDOS del formulario no trae nada.
¿Me podrás ayudar con esto último por favor? Muchas gracias
Busca directamente del Me. Dnicaso, la verdad como lo hice medio rápido no me di cuenta cuando cargas la variable, otra cosa el p_DNItc en el DLookup no se de donde lo saque, tal ves error de dedo, prueba así
Buscar = "select DNI, Apellido from ParaAltaConsulta where DNI ='" & Me.dnicaso& "'"
Buscar = Nz(DLookup("[Apellido]", "ParaAltaConsulta", "[DNI] = '" & Me.dnicaso& "'"))

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas