cuadro de lista multiple

Cuestiones y dudas acerca de lenguajes de programación diversos.

Moderador: Moderadores

houesalvaro
Novat@
Mensajes: 3
Registrado: Jue Feb 24, 2011 9:50 pm

cuadro de lista multiple

Mensaje por houesalvaro » Jue Feb 24, 2011 9:52 pm

Buenas noches, tengo una duda que me esta bloqueando para seguir haciendo la base de datos. Os comento:

Estoy haciendo una base de albaranes y facturación. Tengo una tabla de clientes, albaranes, albaranes detalles y facturas. Tengo un formulario de albaranes vinculado a un subformulario (albaranes detalles) en el que cada vez que entro me da un numero de albaran (campo autonumérico) y puedo meter uno o varios registro en el subformulario albaranes detalles.

Luego tengo un formulario facturas vinculado al (subformulario albaranes detalles), en el que tengo un campo de buscar albaran (cuadro combinado de la tabla albaranes) y de ahí hago la factura que me da otro numero (campo autonumérico) el problema le tengo aquí, tal como lo tengo hecho solo puedo hacer una factura por albaran, yo querría saber si puedo hacer una factura con varios albaranes.
He leído por ahí que con un cuadro de lista con selección múltiple (en el campo de buscar albaran que le tengo con cuadro combinado) se puede hacer, pero el problema es como selecciono en el formulario facturas en el campo buscar factura varios albaranes y que dichos albaranes me les muestre en el subformulario albaranes detalles que tengo vinculado y así me da otro numero de factura, y claro y que todos esos albaranes seleccionados en la propia tabla figuren con el numero de factura que me haya dado.

ESTRUCTURA

Te explico
TABLA CLIENTES:
- Cliente: texto
- Dirección: texto
etc.…
TABLA ALBARANES:
- Numero albaran: autonumérico
- Cliente: texto (cuando combinado de tabla clientes)
TABLA ALBARNES DETALLES sin clave principal para que me deje meter mas de un registro.
- Cliente: texto (cuando combinado de tabla clientes)
- Fecha albaran: fecha/hora
- Servicios
- Concepto
- Precio servicio
- Total servicios
- Numero albaran: numero
- Facturado: Si/no

TABLA FACTURAS
- Numero albaran: numero (cuadro combinado de tabla albaranes)
- Fecha factura: fecha/hora
- Numero factura: autonumérico
En negrita clave principal

RELACIONES

- TABLA CLIENTES (campo cliente) A TABLA ALBARANES (campo cliente) (uno a varios)
- TABLA ALBARANES (numero albaran) A TABLA ALBARANES DIARIOS (numero albaran) (uno a varios)
- TABLA FACTURAS (numero albaran) A TABLA ALBARANES DIARIOS (numero albaran) (uno a varios sin integridad referencial)

FORMULARIOS

FORMULARIO ALBARAN con subformulario albaranes diarios unidos por el campo cliente y número de albaran
FORMULARIO FACTURAS con subformulario albaranes diarios unidos por el campo numero de albaran.

No se si la estructura estar bien realiza llevo poco tiempo con Access

Un saludo,

Avatar de Usuario
Pitufo
Administrador foro
Mensajes: 646
Registrado: Dom Dic 03, 2006 3:39 pm
Contactar:

Re: cuadro de lista multiple

Mensaje por Pitufo » Jue Feb 24, 2011 10:32 pm

Con Access desconozco como se trabaja, pero en la estructura de las tablas se me ocurren dos opciones para soportar que una factura tenga múltiples albaranes:

1.- Agregar un campo factura en la tabla albaranes. En principio sería lo más simple y optimizado, pero desconozco la lógica que se sigue con los formularios en Access.

2.- Agregar una tabla que relacione facturas y albaranes. El campo con el nº de albarán seria la clave primaria por ser el que no se puede duplicar.

El campo "- Facturado: Si/no", no debería ir en la tabla albaranes-detalle, si no en la albaranes. Si de un albarán pueden estar pagados unos servicios y otros no, entiendo habría que mantenerlos separardos en varias facturas, y en ese caso, en lugar de las propuestas anteriores actuando sobre la tabla de albaranes, sería sobre la albaranes detalles, para relacionarlo cada uno con su factura, espero que sea comprensible lo expuesto.

houesalvaro
Novat@
Mensajes: 3
Registrado: Jue Feb 24, 2011 9:50 pm

Re: cuadro de lista multiple

Mensaje por houesalvaro » Lun Mar 07, 2011 11:12 pm

Buenas, pitufo estoy haciendo un base de datos con acces 2003 de facturacion con albaranes.
tengo una tabla de clientes, otra de albaranes, otra de albaranes detalles y otra de facturas.
la tabla albaranes tengo un numero de albaran(clave principal y contador numerico) y otro campo de cliente, unido a la tabla de albranes diarios a traves de formularios ya que un albaran puede tener uno o varios registros diarios, y cada vez que hago uno me da un numerode albaran.
la tabla de facturas tengo un campo Numero de factura ( clave principal y contador numerico) y otro campo de cliente.
el problema le tengo aqui que no se como unir la tabla facturas a la tabla albaranes... no se si habra que hacer algun tipo de consulta especial..
ya que un cliente puede tener varias facturas, una factura puede tener uno o varios albarnes y un albaran puede tener uno o varios registros diarios.

he estado dandole vueltas a lo que dices y no me sale. te lo he vuelto a explicar haber si me das una solución.

un saludo

Avatar de Usuario
Pitufo
Administrador foro
Mensajes: 646
Registrado: Dom Dic 03, 2006 3:39 pm
Contactar:

Re: cuadro de lista multiple

Mensaje por Pitufo » Lun Mar 07, 2011 11:57 pm

Si a la tabla albaranes le pones un campo que sea el número de factura, cuando hagas una consulta por facturas has de hacer que te salgan incorporados los albaranes cuyo número de factura sea el mismo de la factura que estás consultando, y ya el contenido de cada uno de esos albaranes completando la factura.

En SQL sería algo similar a esto:

SELECT * FROM albaranes_detalles WHERE numero_albaran IN (SELECT numero_albaran FROM albaranes WHERE numero_factura = ?)

Siendo ? la factura que estás consultando.

houesalvaro
Novat@
Mensajes: 3
Registrado: Jue Feb 24, 2011 9:50 pm

Re: cuadro de lista multiple

Mensaje por houesalvaro » Mar Mar 08, 2011 9:49 pm

gracias PITUFO, no he podido contestar antes por el trabajo..
haber te comento haber si asi se hace.
tabla CLIENTES (idcliente, direccion...)
tabla FACTURAS (idfactura,idcliente,fecha factura)
talba ALBARANES (idalbaran,idfactura,idcliente,fecha albaran)
tabla ALBARANES DIARIOS (idalbaran,idcliente,concepto,importe..)

RELACIONES:
tabla CLIENTES - tabla FACTURAS por idcliente (uno a varios)
tabla FACTURAS - tabla ALBARANES por idfactura (uno a varios)
tabla ALBARANES - tabla ALBARANES DIARIOS por idalbaran (uno a varios)
y en todas EXIGIR INTEGRIDAD REFERENCIAL....

asi es como lo realicarias... pregunto?

pero si es asi a la hora de hacer los ALBARANES te va ha pedir un dato de la tabla FACTURAS... o no?

Avatar de Usuario
Pitufo
Administrador foro
Mensajes: 646
Registrado: Dom Dic 03, 2006 3:39 pm
Contactar:

Re: cuadro de lista multiple

Mensaje por Pitufo » Mar Mar 08, 2011 11:30 pm

houesalvaro escribió:gracias PITUFO, no he podido contestar antes por el trabajo..
haber te comento haber si asi se hace.
tabla CLIENTES (idcliente, direccion...)
tabla FACTURAS (idfactura,idcliente,fecha factura)
talba ALBARANES (idalbaran,idfactura,idcliente,fecha albaran)
tabla ALBARANES DIARIOS (idalbaran,idcliente,concepto,importe..)

RELACIONES:
tabla CLIENTES - tabla FACTURAS por idcliente (uno a varios)
tabla FACTURAS - tabla ALBARANES por idfactura (uno a varios)
tabla ALBARANES - tabla ALBARANES DIARIOS por idalbaran (uno a varios)
y en todas EXIGIR INTEGRIDAD REFERENCIAL....

asi es como lo realicarias... pregunto?

pero si es asi a la hora de hacer los ALBARANES te va ha pedir un dato de la tabla FACTURAS... o no?
El exigir integridad referencial es un concepto que, al menos con ese nombre, no conozco. En base a tu estructura de tablas, que parece lógica, la dejaría así:

tabla CLIENTES (id_cliente, direccion...)
tabla FACTURAS (id_factura,id_cliente,fecha_factura)
tabla ALBARANES (id_albaran,id_factura,id_cliente,fecha_albaran)
tabla ALBARANES_DIARIOS (id_albaran_diario,id_albaran,id_cliente,concepto,importe..)

Supongo que en la tabla ALBARANES_DIARIOS, no precisas el id_cliente, pues siempre habrá un albarán al que pertenezcan (id_albaran), y ese ya está asignado a un id_cliente en la tabla ALBARANES. Si puede haber elementos de ALBARANES_DIARIO que no pertenezcan a un ALBARAN, entonces sí lo necesitas, y en ese caso tal vez ta,bién una fecha de venta, pedido o similar.

Es posible que la base de datos requiera un campo clave que he llamado id_albaran_diario para poder identificar individualmente cada elemento de esta tabla.

Cuando asignes una factura a un albarán, hay que comprobar (o restringirlo al elegir) que el id_cliente de ambos sea el mismo, o directamente tomar en FACTURAS.id_cliente el de ALBARANES.id_cliente si no tiene ninguno.

Al crear ALBARANES, el campo factura debe quedar vacío (nulo) mientras no tenga ninguna asignada, o si eso te causa dificultades, que pertenezca a una falsa factura número 0.

Responder