Duda sobre formularios en Access

Tengo cuatro tablas (Vehículos - Clientes - Compradores - Vendedores) en la tabla Clientes con campo DNI como clave principal, lógicamente voy cargando los datos de cada persona que ingresa, a su vez esa persona es comprador o vendedor de un vehículo o sea una misma persona puede ser comprador y vendedor de diferentes vehículos. Yo necesito crear un formulario que contenga datos del vehículo y datos del comprador y vendedor, la pregunta es si hay manera de realizarlo sin Sub-formularios o sea en un mismo formulario tener el campo DNI Comprador y DNI Vendedor y que saque los datos de una misma tabla que es Clientes, para que a su vez llevarlo a un informe y poder imprimirlo. Espero que se entienda y que alguien pueda darme una mano.

1 respuesta

Respuesta
1

Si en la tabla vehículos relacionas los dos campos DNI con el campo DNI de la tabla clientes )por ejemplo poniendo como tipo de datos de los campos "asistente para búsquedas) al hacer el formulario ya te aparecerán los campos DNI comprador y DNI vendedor como cuadros combinados con los datos que ya tengas en la tabla clientes. A partir de aquí, puedes modificar esos cuadros combinados para añadir más columnas si lo deseas, y/o cambiarlos por cuadros de lista.

Otra opción es hacerlo todo "artesanalmente", es decir, clic derecho en el cuadro de texto DNI Comprador -> Cambiar a... -> Cuadro combinado, y luego, sacas las propiedades del cuadro combinado, y en la pestaña Datos, configuras el "Origen de la fila" con una SQL de este estilo: "SELECT * FROM Clientes", o "SELECT DNI, NOMBRE FROM Clientes ORDER BY Nombre" o bien, en el botón de los 3 puntos que aparece a la derecha de esa fila, construyes la consulta que mostrará el cuadro combinado.

Con el campo DNI Vendedor tendrías que repetir los mismos pasos.

Un saludo.


Hola primero que nada muchas gracias por tu respuesta, te hago una aclaración que no la puse en la pregunta, al realizar esta solución que vos me planteas, yo quisiera seleccionar un dni en la lista desplegable "Comprador" me traiga los datos como nombre, domicilio, etc; y luego seleccionar un dni en la lista desplegable "Vendedor" me traiga los mismo datos, nombre, domicilio, etc. , o sea que ambos datos aparezcan en cada uno de los campos que correspondan.

Gracias y Saludos.

Pues también muy fácil, pero depende un poco de cómo hayas configurado el cuadro combinado. Te doy dos posibilidades:

1º/ Que en los cuadros combinados solo tengas el campo DNI de la tabla clientes (en el origen de la fila tendrás "SELECT DNI FROM Clientes"):

Tendrás que programar el evento "después de actualizar" el cuadro combinado y usar la función DLookUp() para traer el resto de datos. Por ejemplo, para rellenar los cuadros de texto NombreC y DireccionC:

Private Sub DNI_Comprador_AfterUpdate()
Me.NombreC=DLookUp("Nombre","Clientes","DNI='" & Me.DNI_Comprador & "'")
Me.DireccionC=DLookUp("Direccion","Clientes","DNI='" & Me.DNI_Comprador & "'")
End Sub

Es decir, en el primer parámetro de la función pones el nombre del campo de la tabla que quieres buscar ( Nombre, Direccion...), en el segundo el nombre de la tabla (Clientes), y en el tercero el criterio (que el DNI sea el seleccionado en el combinado)

2º/ La otra posibilidad es que en el cuadro combinado tengas más de una columna: el dni y los otros datos que te interesen de la tabla clientes (tendrías una SQL tal que así "SELECT * FROM Clientes" o " SELECT DNI, Nombre, Direccion FROM Clientes"). En este caso puedes usar la propiedad Column del cuadro combinado para rellenar los otros cuadros:

Private Sub DNI_Comprador_AfterUpdate()
Me.NombreC=Me.DNI_Comprador.Column(1)
Me.DireccionC=Me.DNI_Comprador.Column(2)
End Sub

Lo único que debes tener en cuenta es que la primera columna se indica como Column(0), la segunda como Column(1) y así sucesivamente.

Hola, Excelente!; solo una cosa mas, yo tome la 2da. opcion y en este formulario he creado cuadros de texto para mostrar los datos que necesito seleccionando el dni del cuadro combinado de acuerdo si es comprador o vendedor, ejemplo nombre, direccion, etc y tengo un boton para abrir un informe con esos mismos datos que tiene el siguiente codigo (DoCmd.OpenReport "F1057", acViewPreview, , "ID1057=" & Nz(Me.ID1057, 0), pero cuando me abre el informe los cuadros de textos me aparecen en blanco, lo mismo me sucede cuando cierro el formulario y vuelvo abrir los registros que fui creando, solo me muestra los dni seleccionados en cada cuadro combinado pero los cuadros de textos están en blanco. Muchas gracias.

Lo del formulario lo solucionas poniendo el mismo código del evento "después de actualizar" de los combinados en el evento "al activar registro" del formulario.

En el informe lo resuelves igual, pero poniendo el código en el evento "al dar formato" de la sección en la que tengas los cuadros de texto independientes (por lo general será la sección Detalle)

En el formulario funciona perfecto, pero en el informe sigue abriéndolo con los cuadros de texto en blanco y he colocado el código en el evento "al dar formato" en la sección "Detalle", cual podrá ser el error?

En el informe, para que el código actúe, tienes que abril en vista preliminar, y seguramente tu lo estas abriendo en vista informe

Hola, perdón pero de ninguna de las dos formas me muestra los datos, no entiendo en que puedo estar errando.

Pues sin verlo no te podría decir, pero es muy raro que no te funcione, porque así como te indico, es como yo siempre lo hago y siempre me funcionó...

Por explorar otra posibilidad, en vez de hacerlo por código, pon la parte del DLookup() en el origen de control del los cuadros de texto (en cada cuadro de texto, el DLookup correspondiente), a ver si así te resulta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas