Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

calcular la suma de una columna en un ado

87 views
Skip to first unread message

José Carlos

unread,
Jul 16, 2002, 5:27:50 AM7/16/02
to
buenas,

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

unread,
Jul 16, 2002, 6:27:14 AM7/16/02
to
SELECT SUM(NombreCampo) AS Total FROM Tabla;

--
David Caso
www.inforgijon.es.vg
infor...@lareserva.com
infor...@mixmail.com


Angel Enrique Ruiz Pastor

unread,
Jul 16, 2002, 7:47:46 AM7/16/02
to
Con la instruccion de SQL Sum(columna)
la columna tiene que ser numerico
>-----Mensaje original-----
>.
>

José Carlos

unread,
Jul 16, 2002, 8:46:43 AM7/16/02
to
Mi pregunta en si es si puedo hacerlo desde el recordset
con una instrucción, ya que sobre dicho recordset voy a
ir aplicando filtros, y de la forma q me decis, q es la que
actualmente uso, tendría q aplicar los filtros en dos
recordsets en lugar de solo en uno.

Gracias


Softjaen

unread,
Jul 16, 2002, 9:52:12 AM7/16/02
to

"José Carlos" escribió:

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

José Carlos

unread,
Jul 17, 2002, 2:33:14 AM7/17/02
to
intentaré explicarme con lo que quiero hacer:

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...

m g e r m a n @@@cantv.net German

unread,
Jul 19, 2002, 11:11:43 PM7/19/02
to
No lo he probado, pero imagino que puede ser algo así:

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...

0 new messages