Autorrellenar en un form. De introduccion de datos

En primer lugar te digo que mi nivel es MUY BÁSICO. Mi problema está en que en un formulario para introducción de datos tengo (entre otros campos) NOMBRE y DNI, el NOMBRE es un cuadro combinado para poder elegir los nombres que tengo en una tabla, o bien introducir yo el que quiera con lo cual está sin limitar a la lista. Bien, ahora lo que me gustaría es que el cuadro de texto DNI se rellenase automáticamente si el nombre está en la lista y si no que se quedase en blanco para introducirlo yo. También me valdría dado que el dni también lo visualizo en el cuadro combinado NOMBRE(tiene dos columnas) que siempre que eligiese un nombre del cuadro combinando, el cuadro de texto DNI no fuera visible, y que si en el cuadro combinado yo escribiera cualquier otro nombre me permitiera introducir el DNI.(Se hiciera de nuevo visible)
MI INTENCIÓN ES EVITAR DUPLICADOS EN DNI(Cuando selecciono un nombre de la lista ya dispongo de su DNI pro medio de una consulta), En una tabla ya tengo los NOMBRES y DNI habituales pero hay otros que no me interesa tener en la tabla porque solo los registraré una vez y por eso quiero introducir yo su nombre y dni. Perdón por el rollazo.
1

1 Respuesta

115.250 pts.
Para hacer un campo visible, unas veces si y otras no, tienes que utilizar código VBA que deberás incluir en el evento después de actualizar del campo NOMBRES.
El método es muy sencillo, se trata de encontrar una condición, en tu caso es la existencia del Nombre en la tabla que utilizas, y emplearla para que muestre el campo DNI cuando se cumpla, o que no lo muestre cuando no se cumpla.
NOMBRES_AfterUpdate()
IF [Condición] then
[DNI].Visible = False
ELSE
[DNI].Visible = True
ENDIF
End Sub
Lo más complejo de tu pregunta es encontrar la forma de interpretar la condición, ya que desconozco si el formulario donde estas trabajando depende de un origen de registros como el que correspondería a la tabla, o por el contrario es un formulario independiente que muestra información a partir de la selección que realizas en el cuadro combinado. Tampoco me indicas que haces con los datos después de actualizar. Supongo que algo registras para después sacar un informe, o algo así.
Bien en cualquier caso, yo voy a interpretar que es un formulario independiente y que después de actualizar en el cuadro combinado buscas un registro, si este registro existe, ocultamos el DNI y si no existe le mostramos.
NOMBRES_AfterUpdate()
Dim sql as string
sql="SELECT * FROM [Tabla1]"
sql = sql & " WHERE [Tabla1].[NOMBRE]=' & [NOMBRES] & "'"
Dim DB as DATABASE
Set DB = CurrentDB()
Dim T1 as Recordset
SET T1 = DB.OpenRecordset(sql)
IF T1.Recordcount>0 then
[DNI].Visible = False
ELSE
[DNI].Visible = True
ENDIF
T1.Close
Exit Sub
End Sub
Como podrás observar en el código, utilizamos la base de datos actual (Currentdb) para abrir un recordset (T1) mediante una consulta (sql), la condición de que se muestre o no el DNI, depende de que el recordcount (número de registros que tiene el recordset) sea mayor que cero.
Por otra parte te recomiendo que crees un indice sin duplicados en el campo DNI de tu tabla, de esa forma garantizaras que en la tabla no se creen registros duplicados, y sera Access quien controle esto, indicándote con un error cuando intentes incluir un registro duplicado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas