Rellenar campos según valor de un combo

Tengo una tabla llamada "Clientes" con los siguientes datos:

IDCliente - Clave principal. Autonumérico

Nombre - Nombre del cliente

Dirección - Dirección del cliente

Tengo otra tabla llamada "Facturas" con los siguientes datos:

IDFactura - Clave principal. Autonumérico

Artículo - artículo comprado

IDCliente - campo numérico con el IDCliente de la tabla Clientes

Precio - Precio del artículo

Lo que estoy intentando hacer es lo siguiente:

Un formulario que me presente una lista desplegable con todos los clientes. Según yo seleccione el nombre en cuestión, me muestre los campos Dirección de la tabla "Clientes" pero que además lo relacione con la tabla "Facturas" y según ese IDCliente de la tabla "Clientes" me muestre los datos de la tabla Facturas de ese cliente, como son el artículo o artículos que haya comprado y el precio de cada artículo.

1 respuesta

Respuesta
1

Este es un ejemplo donde intervienen 3 tablas:

- Tblclientes

- Tblfacturas

- Tblarticulosfactura

Si selecciono un CLIENTE muestra en el cuadro de lista las facturas de este, esto a la consulta SQL del evento Después de actualizar el combo box. Al hacer clic sobre una factura se muestran en el cuadro de lista "ARTÍCULOS DE LA FACTURA" las facturas con la información.

EVENTO "DESPUÉS DE ACTUALIZAR" (Combo box)

Private Sub cbocliente_AfterUpdate()

Dim strSQL As String
strSQL = "SELECT tblfacturas.idfactura, tblfacturas.idcliente," & vbCrLf
strSQL = strSQL & "tblfacturas.fechafactura , tblfacturas.vrfacturaconiva" & vbCrLf
strSQL = strSQL & "FROM tblfacturas WHERE idcliente=" & Me.cbocliente & " ORDER BY tblfacturas.fechafactura;"

Me.lstFacturas.RowSource = strSQL

' Al cambiar de cliente desactivo los articulos de la factura
Me.lstArticulos.RowSource = ""

End Sub

EVENTO "AL HACER CLIC" (Cuadro de lista facturas)

Private Sub lstFacturas_Click()

Dim strSQL As String

strSQL = "SELECT tblarticulosfactura.idfactura, tblarticulosfactura.idarticulo," & vbCrLf
strSQL = strSQL & "tblarticulosfactura.cantidad, tblarticulosfactura.vrarticulo, [cantidad]*[vrarticulo] AS valor" & vbCrLf
strSQL = strSQL & "FROM tblarticulosfactura WHERE tblarticulosfactura.idfactura =" & Me.lstFacturas & vbCrLf
strSQL = strSQL & " ORDER BY tblarticulosfactura.idfactura, tblarticulosfactura.idarticulo;"

Me.lstArticulos.RowSource = strSQL

End Sub

Si quiere escríbame a [email protected] y le suministro el ejemplo. Hay más formas de hacerlo.

Mirando su pregunta me doy cuenta que solo tiene 2 tablas, en este caso la tabla Facturas le falta un campo donde guarde el número de la factura, toda vez, que el IDfactura no se puede repetir. Por esto observe el ejemplo, utilizo 3 tablas, esto es un sistema relacional.

Muchísimas gracias. Voy a ver si lo he entendido y te cuento. Si no te escribo al e-mail. Gracias!!! 

Hola. No logro hacerlo. Te agradecería me reenviaras los archivos a mi email [email protected] Como tú bien dices pero el sistema que tienes en el formulario con los dos cuadros de listas me gusta. No sé si utilizando solo dos tablas me complicaré mucho la historia para mostrar los datos en esos dos cuadros de lista.

Gracias por tu interés y atención 

Listo revise su correo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas