Access - Como sumar un campo de recorset a un campo de un informe

 
Vista:
Imágen de perfil de Atom5800
Val: 35
Ha aumentado su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Como sumar un campo de recorset a un campo de un informe

Publicado por Atom5800 (28 intervenciones) el 18/12/2013 16:36:39
Hola
Tengo un informe de un Balance General, donde salen sus códigos contables y saldo a una fecha.
Básicamente necesito que si el código contable fuera "320000" se sume la utilidades o perdidas del periodo anterior, Las utilidades del periodo anterior las he calculado con un recorset, ya la prove en el diseño de la consulta de access.
De esta manera:
Dim rstUtilidadPerdida As Recordset
Dim SQLtxt As String
Dim FchFinal As Date
FchFinal = Forms!MenuReportes!FechaFinal.Value
SQLtxt = "SELECT Sum((Nz([Débitos],0)-Nz([Créditos],0))*-1) AS UtilidadPerdidaAnterior"
SQLtxt = SQLtxt & " FROM (transacciones INNER JOIN Deptos ON transacciones.idDepto = Deptos.IdDepto) INNER JOIN CatalogoGnr ON (transacciones.CodCta = CatalogoGnr.CodCta) AND (Deptos.IdDepto = CatalogoGnr.idDepto)"
SQLtxt = SQLtxt & " WHERE (((CatalogoGnr.idGrupoCta) Between 4 And 5) AND ((transacciones.Fecha)<=#" & Format(FchFinal, "mm/dd/yyyy") & "#));"
Set rstUtilidadPerdida = CurrentDb.OpenRecordset(SQLtxt, dbOpenSnapshot)
If rstUtilidadPerdida.EOF And rstUtilidadPerdida.BOF Then
Exit Sub
Else
If Me.CodCta = 320000 Then
Me.CodCta = Me.Balance + rstUtilidadPerdida("UtilidadPerdidaAnterior")

End If
End If
rstUtilidadPerdida.Close
Set rstUtilidadPerdida = Nothing

Ya sea que lo ponga en la acción al abrir o en la acción al cargar del informe me dice que no encuentra el CodCta, que es el campo que estoy usando de criterio para sumar el campo del recorset.
La parte en negrita es donde me sombrea Access.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como sumar un campo de recorset a un campo de un informe

Publicado por jose (830 intervenciones) el 18/12/2013 17:28:48
así por encima veo lo siguiente:

Me.CodCta = Me.Balance + rstUtilidadPerdida("UtilidadPerdidaAnterior")

cambiarlo a

Me.CodCta =nz(Val( Me.Balance), 0) + rstUtilidadPerdida.Fields("UtilidadPerdidaAnterior").value


mira a ver si te funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Atom5800
Val: 35
Ha aumentado su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Como sumar un campo de recorset a un campo de un informe

Publicado por Atom5800 (28 intervenciones) el 18/12/2013 17:47:08
Gracias
Pero sigue con el mismo error: "el campo CodCta no se encuentra"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como sumar un campo de recorset a un campo de un informe

Publicado por jose (830 intervenciones) el 18/12/2013 21:02:32
ponle

Me.CodCta =nz(Val( Me.Balance), 0) + rstUtilidadPerdida.Fields("UtilidadPerdidaAnterior").value
msgbox Me.CodCta


para comprobr que pasa por el bucle y si es así que valor toma , para ir acercandonos al problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Atom5800
Val: 35
Ha aumentado su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Como sumar un campo de recorset a un campo de un informe

Publicado por Atom5800 (28 intervenciones) el 18/12/2013 21:12:59
De tanto probar... Mira que lo he cambiado un poquito ahora resulta otro problema:
El informe esta en base a una consulta
Set rstUtilidadPerdida = CurrentDb.OpenRecordset(SQLtxt, dbOpenSnapshot)

If rstUtilidadPerdida.EOF And rstUtilidadPerdida.BOF Then
Exit Sub
Else
If Me.CodCta = 320000 Then
Me.Saldos = Nz(Val(Me.Saldos), 0) + rstUtilidadPerdida.Fields("UtilidadPerdidaAnterior").Value
End If
End If

Me.Texto62 = rstUtilidadPerdida.Fields("UtilidadPerdidaAnterior").Value (para comprobar que el recordset funciona)

Ahora resulta que el criterio que estoy poniendo me lo hace para todos las líneas o registros del informe, es decir que si se cumple la condición me hace la operación pero para todos los registros y yo solo quiero que afecte EL SALDO cuenta contable que tenga el código 320000.

Alguna sugerencia?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar