Error al realizar consulta de saldos usando sql

Acudo a ustedes por que no encuentro la manera de solucionar este inconveniente, resulta que hago una consulta SQL para determinar el saldo de unos productos y efectivamente me da el saldo pero errado, por ejemplo el producto huevos tiene un iventario inicial de 100 y 2 entradas de 5 unidades cada uno por lo que el saldo del producto es 110 pero el reporte me dice que son 120 es como si me tomara las 2 entradas de 5 doblemente y por eso me da 20, en la salida tengo 2 salidas de 10 unidades cada una pero el reporte me dice que es 40 cuando debe ser 20 otra vez se duplica las salidas, y no se como arreglar esto, aquí dejo el código que hace la consulta que esta en el módulo consultar_RP:

Private Sub Inventario()

Set Rs = New ADODB.Recordset
Sql = "SELECT p.id,R.CODIGO,P.ARTICULO,SUM(E.CANTIDAD)+ p.[INV INICIAL] AS ENTRADA,SUM(S.CANT)AS SALIDA,ENTRADA-SALIDA AS SALDO FROM" & _
" (([PRODUCTOS$]P INNER JOIN [MOVENTRADA$]E" & _
" ON P.ID=E.ID_P) INNER JOIN [MOVSALIDAS$]S ON P.ID=S.ID_P) INNER JOIN [REG$]R ON P.ID=R.ID_P" & _
" GROUP BY p.id,R.CODIGO,P.ARTICULO,p.[INV INICIAL] "
Rs.Open Sql, Cnn, 1, 1

End Sub
Sub Inventario_R()

Call Inventario

With Hoja11
If Rs.RecordCount > 0 Then

For i = 0 To Rs.Fields.Count - 1

.Cells(4, 7 + i) = Rs.Fields(i).Name

Next i

.Cells(5, 7).CopyFromRecordset Rs

End If

End With

Rs.Close
Set Rs = Nothing

End Sub

y aqui dejo el archivo para que lo analicen porfavor,espero me hayan entendido

 https://drive.google.com/file/d/13EfMqCvvG4cmAEeC_-P2D7f8_nE1ZrIk/view?usp=sharing 

1 respuesta

Respuesta
1

Estás haciendo mal el join por eso se te duplica, no puedes hacer todo junto. Por un lado las entradas y por otro las salidas

Gracias mi amigo,tengo una tabla en una hoja donde se registran las entradas (MOVENTRADA) y otra tabla donde registran las salidas(MOVSALIDAS)esas 2 tablas intento unirlas y restarlas para encontar el saldo,esta mal???? como lo harías? por favor dame un ejemplo,no dejes de responderme por favor te lo agradezco

¡Gracias! por tomarte la molestia de responder,en verdad no entiendo el problema que se plantea en el ejemplo no soy tan  experto,disculpa esa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas