Visual Basic Foro

Programación => Bases de Datos => Mensaje iniciado por: E N T E R en Agosto 14, 2011, 08:59:32 pm

Título: Unir estos resultados
Publicado por: E N T E R en Agosto 14, 2011, 08:59:32 pm
Hola de nuevo amigos necesito mostrar todas las facturas crédito que tiene el un cliente, y de otra tabla sumar lo que ya pago por Nfactura. Tengo este query pero no se como mostrar en una sola consulta.

Este me trae todas las facturas que tiene.

Código: [Seleccionar]
SELECT fecha, nfactura, SUM(exenta+iva5+iva10) AS xTotalCredito
FROM ventas
WHERE tipoventa='CREDITO' AND estado='DEBE' AND cedula ='35623563'
GROUP BY nfactura


Este me suma lo que ya entrego.

Código: [Seleccionar]
SELECT SUM(entrego) AS xTotalEntregas
FROM credito_ventas
WHERE nfactura=1012


Como muestra la imagen es como quiero que quede.

(http://enterpy.net/upload06/archivossubidos/j7i0w_saldo.jpg)

Edit: Solo movi el formato.
Título: Re:Unir estos resultados
Publicado por: YAcosta en Agosto 14, 2011, 09:53:16 pm
El segundo select esta medio feo para meterlo en el primer Select que tiene un sum, y luego tambien quieres mostrar su saldo.

Bueno, mientras aparezca una solución mas ortodoxa y para hacerlo identico a el resultado que quieres, yo me iría por retocar el RS haciendo un for next, una solución sucia pero una solución al final hasta que aparezca otra mejor.
Primero armo el Select con esta modificación:
Código: [Seleccionar]
sql =
SELECT fecha, nfactura, ' ' as xTotalEntrega, SUM(exenta+iva5+iva10) AS xTotalCredito, ' ' as Saldo
FROM ventas
WHERE tipoventa='CREDITO' AND estado='DEBE' AND cedula ='35623563'
GROUP BY nfactura

A nivel de VB6 viene esto:
Código: [Seleccionar]
Dim rs    As New ADODB.Recordset
Dim rs2   As New ADODB.Recordset
rs.Open sql, dB, adOpenDynamic, adLockPessimistic  '(importante abrirlo con OpenDynamic
For i = 1 To rs.RecordCount
    sql2= "SELECT SUM(entrego) AS xTotalEntregas  FROM credito_ventas WHERE nfactura= " & rs!nFactura
    rs2.Open sql2, dB, 1, 1
    TotEntr = iif(IsNull(rs2!xTotalEntregas), 0, rs2!xTotalEntregas)
    NewSaldo = rs!xTotalCredito - TotEntr
     rs.Fields("xTotalEntrega").Value = TotEntr
     rs.Fields("Saldo").Value = NewSaldo
     rs.Update
     rs.MoveNext
Next i

Título: Re:Unir estos resultados
Publicado por: E N T E R en Agosto 15, 2011, 11:17:42 pm
Tengo este sript de sql pero no se por que me suma 2 veces la parte de Ventas.

Código: [Seleccionar]
SELECT v.fecha, v.nfactura, SUM(v.exenta+v.iva5+v.iva10) AS xTotalCredito, SUM(c.entrego)
FROM credito_ventas c
INNER JOIN  ventas v ON v.nfactura=c.nfactura WHERE v.estado='DEBE'
GROUP BY c.nfactura

Como ven aca en la tabla Ventas solo tengo 2100

(http://enterpy.net/upload06/archivossubidos/3xsul_ventas_total.jpg)

Y aca en la tabla credito_ventas solo hay un entrega de 1000

(http://enterpy.net/upload06/archivossubidos/jp5r9_credito_ventas.jpg)

Este es el resultado que me trae.

(http://enterpy.net/upload06/archivossubidos/pdyi5_resultado_.jpg)