Adicionar campos en formularios Access

Estoy trabajando una base de datos en Access para cargar cursos y sus participantes. Tengo una tabla "cursos" donde estan los datos generales (fecha, tipo, modalidad, etc) y otra tabla "participantes" con datos de los participantes como un sub formulario. El tema es que deseo que cuando entren el numero de identificación tome el nombre de la tabla "empleados" y lo despliegue pero no lo grabe en la tabla "participantes".

Para este fin estoy colocando la siguiente instrucción:

Nombre = DLookup("[Nombre]", "[Empleados]", "Cedula=" & Cedula)

Ahora bien, como hay mas de un participante, cada vez que coloco en nuevo numero de identificación, se despliega en todos el ultimo nombre:

Cedula              Nombre

111111             Pedro Perez

222222             Pedro Perez

333333 Pedro Perez

1 respuesta

Respuesta
2

Ronald: Si trabajas con un Formulario Continuo, eso te va a ocurrir, salvo que:

1.- Guardes el Nombre en la Tabla y pongas como Origen de control ese campo.

2.- Si no quieres guardarlo, has de poner algo parecido a lo que tienes en el Origen del Control, de manera que te quedaría: Si tienes la versión en Inglés

= DLookup("[Nombre]", "[Empleados]", "[Empleados]![Cedula]=" & [Cedula])

Si tienes la versión en Español: Ponlo Igual y te lo traducirá a>>

= DBúsq("[Nombre]", "[Empleados]", "[Empleados]![Cedula]=" & [Cedula])

Un saludo >> Jacinto

Hola Jacinto:

Gracias por tu colaboración. Me sigue desplegando en todos los campos el nombre del ultimo registro.

Saludos 

Ronald: La verdad es que no sé de donde puede venir ese error.

No me comentas que has hecho. Si te extiendes un poco en la solución que has adoptado e incuso lo apoyas con una imagen de Form/Subform en vista de diseño quizá te pueda ampliar la respuesta. Mis saludos >> Jacinto

Hola Jacinto. Excelente idea de anexarte la imagen

Cada vez que introduzco un nuevo DNI (cédula) me cambia todos los nombres.

Espero me puedas ayudar. Saludos y gracias

Ronald: Pon el SubFormulario en Vista de Diseño. Marca el "Control" que se refiere al Nombre.

Abre las Propiedades, te vas a la Pestaña Datos y en ella pones la Fórmula según te muestro en la imagen.

Si los Nombres son esos en cada línea debe aparecerte el Nombre correspondiente.

En la imagen falta un paréntesis de cierre y la Fórmula es:

= DLookup("[Nombre]", "[Empleados]", "[Empleados]![Cedula]=" & [Cedula])

Sin poner delante Nombre, pero si el signo = (Igual). Un saludo >> Jacinto

Excelente!!!!!

Gracias vale, muy buen experto.

Ahora bien, para que quede totalmente depurado, desearía quitarle ese mensaje de error que aparece en el campo del registro que no se ha introducido.

Te lo coloco en la imagen

Ronald: Dependerá si quieres que te salga un valor por omisión o simplemente no quieres que salga nada.

Para el Primer caso

= SiInm(EsNulo([Cedula]);"Pendiente de Informar";DLookup("[Nombre]"; "[Empleados]"; "[Empleados]![Cedula]=" & [Cedula]))

Para el segundo caso

SiInm(EsNulo([Cedula]);"";DLookup("[Nombre]"; "[Empleados]"; "[Empleados]![Cedula]=" & [Cedula]))

Un saludo >> Jacinto

Hola Jacinto.

¿Y esta instrucción la coloco como un sub en la sección de VBA o a continuación de lo colocado anteriormente?

Ronald: La colocas en lugar de... la anterior.

Ten en cuenta que según tu configuración los ; "Punto y Coma", pueden ser comas (,)

También se puede simplificar lo que te he enviado con la Función Nz.

Te pongo el Ejemplo para que no te muestre nada

= Nz(DLookup("[Nombre]"; "[Empleados]"; "[Empleados]![Cedula]=" & [Cedula]);"")

Un saludo >> Jacinto

Hola Jacinto.

Reemplace los ; por , porque me daba un error, pero me sigue mostrando el mensaje de error.

Saludos y gracias

Ronald: Ponme por favor el texto exacto que tienes en ese control, o toma una imagen de la pestaña datos >> Origen del control. Un saludo >> Jacinto

=Nz(DBúsq("[Nombre]","[Empleados]","[Empleados]![Cedula]=" & [Cedula]),"")

Ronald: La verdad es que veo correcta la Fórmula.

Es posible que si la has copiado y pegado, las Comillas no coincidan, porque las que se escriben aquí, la mayoría de las veces no son adecuadas. Ignoro la Causa.

Haz otra prueba con el SiInm, quitandole algo:

= SiInm(EsNulo([Cedula]);"Pendiente de Informar";DLookup("[Nombre]"; "[Empleados]"; "Cedula=" & [Cedula]))

y ésta otra

=Nz(DBúsq("[Nombre]","[Empleados]","Cedula=" & [Cedula]),"")

Pero escribelas tu. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas