me gustaría poder calcular de forma automatica cual es la
suma de las columnas de un recordset ado sin tener que
recorrerlo.
¿es posible?
--
David Caso
www.inforgijon.es.vg
infor...@lareserva.com
infor...@mixmail.com
Gracias
Hola, José Carlos:
No entiendo muy bien cuando dices que «tendrías que aplicar los filtros en
dos recordsets en lugar de sólo en uno».
Creo que la solución dada por los compañeros, es la correcta. Si quieres
sumar los registros de un campo, abre un recordset seleccionando el campo
que deseas sumar, y el valor resultante lo puedes comprobar con el valor del
campo devuelto por la consulta.
Set rs = New ADODB.Recordset
With rs
sSQL = "SELECT Sum([Tabla1].[Campo1]) AS [TotalSuma] FROM Tabla1"
.Open sSQL, objConnection, , , adCmdText
End With
MsgBox rs.Fields("TotalSuma")
Un saludo
--
Enrique Martínez
tengo una tabla con una lista de pedidos, en la cual hay un
campo que tiene la cantidad de cada pedido.
bien, yo lo que quiero hacer es que me muestre cual es la
suma de todos los pedidos que me muestra, solo que el
problema viene que yo voy a ir aplicando filtros sobre los
pedidos, por ejemplo la fecha, en tiempo de ejecución, y
los totales, evidentemente irán cambiando.
Mi problema seria que si aplico dicho filtro en los pedidos
y me quedo con 7 en lugar de 10 (por ejemplo) la suma
me lo haría de esos 10, en lugar de los 7 seleccionados a
menos que aplicase tambien el filtro al recordset que me
calcula el total.
no se si me expliqué bien.
La solución que me habeis expuesto es la que tengo
aplicada en estos momentos, y solo quería quitarme
accesos a la bbdd para evitar ralentizar el programa.
Un saludo!
José Carlos
"Softjaen" <grupo_n...@softjaen.es> escribió en el mensaje
news:uPU8j$MLCHA.1744@tkmsftngp13...
Private Sub XXXX()
' pongo filtro
rs.Filter = "(Filtro que deseas)"
' función que suma una columna
Suma = SumaCampo(rs, "NombreDeCampo")
End Sub
Private Function SumaCampo(rs As ADODB.Recordset, _
NombreCampo As String) As Double
With rs
' inicio suma en cero
SumaCampo = 0
' me muevo al principio del recordset
.MoveFirst
' sumo la columna
Do While Not .EOF
SumaCampo = SumaCampo +
rs.Fields(NombreDeCampo)
.MoveNext
Loop
End With
End Function
Creo que te puede dar error en .MoveFirst si no hay records, si es así,
tendrás que poner un IF THEN para evitar el .MoveFirst en el mencionado
caso.
"José Carlos" <josec...@aldaba.net> wrote in message
news:ea5c8sVLCHA.2588@tkmsftngp09...