¿Quién sabe cómo guardar datos de sumatoria de datos en consulta selección con método DAO?

Nuevamente vengo a este escenario pidiendo ayuda a los expertos para lo siguiente: Tengo este código que hice

Option Compare Database

Private Sub Comando0_Click()
Dim DB1 As DAO.Database
Dim RS1 As DAO.Recordset
Dim RS2 As DAO.Recordset
Dim sum1 As Integer
Dim sum2 As Integer
Dim strSQL As String
Set DB1 = CurrentDb
Set RS1 = DB1.OpenRecordset("Inventario")
strSQL = "SELECT Inventario.CodSisPro, Sum(Inventario.Db) AS "
strSQL = strSQL & "SumaDeDb, Sum(Inventario.Cr) AS SumaDeCr "
strSQL = strSQL & "FROM Inventario "
strSQL = strSQL & "GROUP BY Inventario.CodSisPro "
strSQL = strSQL & "HAVING Inventario.CodSisPro = '" & Me.Texto1 & "'"
sum1 = 2
sum2 = 5
Set RS1 = DB1.OpenRecordset(strSQL, dbOpenSnapshot)
Set RS2 = DB1.OpenRecordset("Productos")
Do While Not RS2.EOF()
RS2.Edit
RS2!SaldoFinal.Value = RS2!STOCK.Value + sum1 - sum2
RS2.Update
RS2.MoveNext
Loop
RS1.Close
RS2.Clone
Set RS1 = Nothing
Set RS2 = Nothing
MsgBox "lo logre...Ver el archivo"
End Sub

Private Sub Form_Load()
Dim CodProSis As String
CodProSis = "590112vT00A"
Me.Texto1 = CodProSis
End Sub

Como se aprecia en este, estoy usando una base de datos dos recordset (inventario y otro productos) luego uso un strSQL para determinar una sumatoria de dos campos que son DB y CR a través de un criterio que es Me. Texto1.

Luego debo buscar el código y actualizar el saldofinal con el valor de stock. Pero como no sé como almacenar los resultados de la suma de DB y CR bueno para probar lo hice con dos variables que son sum1 y sum2.

Deseo saber con esto, como almacenar el valor de la sumaDB y la sumaCR en esas variables, para luego actualizar en el recordset Productos el saldo final.

1 Respuesta

Respuesta
2

Prueba lo siguiente:

Set RS1 = DB1.OpenRecordset(strSQL, dbOpenSnapshot)
sum1 = RS1!SumaDeDb
Dum2 = RS1!SumaDeCr
Set RS2 = DB1.OpenRecordset("Productos")
Set RS1 = DB1.OpenRecordset(strSQL, dbOpenSnapshot)
sum1 = RS1!SumaDeDb
sum2 = RS1!SumaDeCr
Set RS2 = DB1.OpenRecordset("Productos")

Amigo Antonio Cuellar quiero agradecerte tu consulta porque me ayudó bastante en el proceso.

Mira como me quedó mi código vba

Private Sub Cod_Producto_AfterUpdate()
'Actualizar el estado saldo final del producto
Dim DB1 As DAO.Database
Dim RS1 As DAO.Recordset
Dim RS2 As DAO.Recordset
Dim SaldoFin As Integer
Dim strSQL As String
Set DB1 = CurrentDb
Set RS1 = DB1.OpenRecordset("Inventario")
strSQL = "SELECT Inventario.CodSisPro, Sum(Inventario.Db) AS "
strSQL = strSQL & "SumaDeDb, Sum(Inventario.Cr) AS SumaDeCr "
strSQL = strSQL & "FROM Inventario "
strSQL = strSQL & "GROUP BY Inventario.CodSisPro "
strSQL = strSQL & "HAVING Inventario.CodSisPro = '" & Me.Cod_Producto & "'"
Set RS1 = DB1.OpenRecordset(strSQL, dbOpenSnapshot)
Set RS2 = DB1.OpenRecordset("Productos")
Do While Not RS2.EOF()
RS2.Edit
If RS2!CodFinProd = Me.Cod_Producto Then
RS2!SaldoFinal.Value = RS2!STOCK.Value + RS1!SumaDeDb.Value - RS1!SumaDeCr.Value
End If
RS2.Update
RS2.MoveNext
Loop
' RS1.Close
' RS2.Close
'
' Set RS1 = Nothing
' Set RS2 = Nothing
'********
Me.CodOriginal = Me.Cod_Producto.Column(1)
Me.DetFactura = Me.Cod_Producto.Column(2)
Me.Precio = Me.Cod_Producto.Column(4)
SaldoFin = Me.Cod_Producto.Column(5)
MsgBox "El saldo final de este producto es " & SaldoFin, vbInformation, tituloVt()
Me.Qty.SetFocus
End Sub

Pero tengo otra inquietud.  Y es la siguiente esto me funciona para cuando al realizar el total me da valores, pero cuando mi consulta no tiene registros que sería lo que faltaría a este código por agregar.

Te agradezco muchísimo tu valiosa ayuda.  Muchas gracias.

Mira amigo Antonio es que cuando hice la sumatoria de un producto en donde debe totalizar DB y CR me da en los nulo porque de esos no hay movimiento.

Entonces sé que SumaDeDb y SumaDeCr son nulos entonces mi consulta es como los defino en el DAO se tengo que manejar un condicional, pero ahi me pierdo.

Te agradezco mucho tu ayuda y muchas gracias.

Prueba con la función Nz() por ejemplo:

Si RS1!SumaDeDb.Value devuelve un null.

Con la función nz devuelve un cero

Nz(RS1! SumaDeDb. Value, 0)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas