Mostrar todas las facturas de un proveedor en access

Primero que nada agradecer por la ayuda, me han salvado muchas veces.

Les comento que estoy trabajando en una pequeña BD, donde necesito que me muestre todas las facturas que se le deben cancelar a un proveedor, cuando genero la consulta y le digo que me busque en la tabla proveedores un determinado cliente y lo compare con la tabla pagos para saber cuanto le debemos. Al ejecutar la consulta sale algo así:

Si necesitan mas antecedentes se los envío con gusto.

Desde ya se agradece

3 Respuestas

Respuesta
2

Te digo lo que haría. Tengo una tabla Ventas( que en tu caso sería Compras) y otra DetalleVenta. Donde reflejo los productos que le vendo a un cliente determinado y con ellas tengo hecho un formulario con un subformulario. De forma que un buen día le vendo una serie de productos.

Pasados unos días, viene y le vuelvo a vender. Pero milagrosamente un buen día decide venir a darme algo de dinero ( a este cliente hay que cuidarlo). Para eso tengo un formulario Entregas donde selecciono ese cliente y me aparecen todo lo que me debe.

Vamos a suponer que me da 500 de los 562 que me debe lo anoto en Entrega

Y al pulsar Compensar me deja el formulario( y por tanto las tablas) como

Es decir, con lo que me ha dado ha compensado la factura 1 por lo que me marca la casilla Cancelada y le sobran 88 euros con lo que compensa parte de la siguiente factura( que no la marca porque no está totalmente compensada y queda una deuda pendiente de 62,7 euros.

Pasan otros días y ese mismo cliente( ya te dije que hay que cuidarlo) viene a darme más dinero. Abro el formulario Entregas, selecciono ese cliente en particular y me aparece como

Si en el ínterin hubiera comprado algo más aparecería esa nueva factura y la cantidad de Deuda Pendiente sería otra.

Y así puedo hacer los informes que quiera, desde Ventas entre fechas, Entregas en un mes, Entregas por cliente,... Deuda Total pendiente, etc.

El código del botón Compensar es

Private Sub Compensar_Click()
DoCmd.SetWarnings False
DeudaPendiente = DeudaPendiente - Entrega
DoCmd.RunSQL "insert into entregas(idcliente,fechaentrega,entrega)values(idcliente,date(),entrega)"
DoCmd.GoToRecord , , acFirst
Dim i As Integer
For i = 1 To Me.Recordset.RecordCount
Resto = DSum("entrega", "entregas", "idcliente=" & Me.IdCliente & "") - DSum("totalventa", "ventas", "idventa<=" & Me.IdVenta & " and idcliente=" & Me.IdCliente & "")
If Resto >= 0 Then
Cancelada = True
DoCmd.GoToRecord , , acNext
ElseIf Resto < 0 Then
Exit Sub
End If
Next
End Sub

De todas formas, si quieres, repito, si quieres, mándame un mensaje (sólo el mensaje) a [email protected] y te mando el ejemplo.

Si lo haces, en el asunto del mensaje pon tu alias Cristian Hermosilla, ya que si no sé quien me escribe ni los abro.

Respuesta
2

Puede utilizar un cuadro de lista y un subformulario para mostrar los pagos.

En este caso al hacer clic sobre el cuadro de lista proveedor me muestra las facturas y montos. Utilizo las siguientes tablas:

Observe que en la tabla tblpagos cambie el nombre del proveedor por el campo ID. No se debe utilizar el nombre.

Es exactamente lo que necesito y lo que he estado intentando hacer, pero el problema radica en el cuadro de lista, si tengo 5 facturas, me aparece 5 veces el proveedor en el cuadro de lista, no 1 vez como lo muestra, también tengo la relación 1 a muchos.

no se si tengo mal el cuadro de lista o me falta algo en las propiedades

gracias

El problema es que está tomando como origen de datos del cuadro de lista la tabla pagos en lugar de la tabla proveedores.

Si toma la tabla pagos el origen de datos de cuadro de lista es algo como;

Private Sub Form_Open(Cancel As Integer)
  Me.Lista0.RowSource = "SELECT DISTINCT tblpagos.Proveedor FROM tblpagos ORDER BY tblpagos.Proveedor;"
End Sub

Pruébelo y me cuenta.

Respuesta
1

Para que se presente una sola vez en el cuadro de lista el proveedor, cómo se deben de presentar los montos de las diferentes facturas ¿una suma agrupándolas o (en la misma línea) las parejas de factura y monto?.

No se si me exprese mal o entendieron mal.

Necesito que al consultar por un proveedor, en este caso mi proveedor son ustedes, todoexpertos, lo selecciono en mi cuadro de lista (dentro de toda la lista de proveedores)

y me muestre ya sea un subform o dentro de el mismo, todas las facturas que les debo, ni monto total ni sumar nada, si les debo 5 facturas me muestre por ejemplo

Todoexpertos:

N° Factura                 Fecha              Monto

1111                           11-03-2022      $500

2222                           01-12-2022      $500

3333                           11-11-2022      $500

4444                           05-01-2023      $500

5555                           01-01-2023      $500

el problema es que en el cuadro de lista no me aparece 1 vez todoexpertos, como son 5 facturas me sale 5 veces repetido en el cuadro de lista.

se entiende??

Si aceptamos que se desea una presentación tal cual se ha expuesto y la que se ha logrado añade el nombre del cliente en la misma línea (algo que no se desea), la opción que te ofrezco es que el nombre (esto es: 'TodoExpertos' que se repite en toda la columna) ocupase la cabecera del cuadro de lista (en su propiedad 'Caption') y para no visualizar esa columna en el cuadro de lista, se le modifica el ancho a cero.

Como ya esta en una columna (oculta, pero está) basta que cuando se le asigne el contenido al cuadro de lista, se le asigne el dato de/en la columna oculta como titulo (el Caption) al cuadro de lista.

Hay variaciones y si no es necesario para otra funcionalidad, incluso se puede eliminar esa columna del cuadro de lista.

Lo primero: saber si esta alternativa (ocultar/eliminar columna) + (mostrar ese dato en el titulo) satisface la necesidad.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas