SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Jordi_BCN en Viernes 22 de Agosto de 2003, 15:38
-
HOLA DE NUEVO, COMO PUEDO SUMAR UNA COLUMNA DE UN DATAGRID, Y MOSTRAR EL TOTAL EN UN TEXTBOX?
GRACIAS;):)
-
Mira la idea es recorrer todo el datagrid por medio de un bucle en el cual debera estar un acumulador que ira sumando las cantidades del campo que desees para posteriormente mostrarlo en el textbox que deseas.
El codigo seria el siguiente:
Dim acumulador as integer
acumulador=0
For a=1 to Datagrid1.Row
acumulador=acumulador+Datagrid1.Columns(IndiceDeColumna_a_Sumar).Value
End for
text1.text=acumulador
Ahora si el resultado es un valor numerico y deseas que se establesca un formato pues cambia la siguiente linea:
text1.text=acumulador
Por
text1.text=Format(acumulador, "standard")
Y nada mas
Suerte....
<<_GIOMAR_>>:good:
-
A ver si te gusta este código...
Saludos
-
Giomar, es justo lo que me dices tu, pero tu codigo no me funciona:(
"a" lo he declarado Integer, pero al decirle que me ponga "acumulador" en un textbox me sale 0,00
J.M. Movilla gracia por tu ayuda, pero prefiero lo de giomar, es q no puedo tocar el recordset ...
Espero q me manden el codigo correcto, gracias..;):)
-
Bueno, después de dar un esfuerzo he conseguido sumar los registros de una BD.
Pero mi cuestion es la siguiente:
Como puedo hacer q solo me sume las lineas q tienen el codigo "001"? Es decir, el total q sea la suma de todos los registros con el codigo 001 ( es q en esa tabla hay mas con 002, 003, 004... )
Espero me ayuden, me urge muchisimo:)
-
Hola, para q me entiendan mejor:
Sumar solo los registro "001" de la Tabla1
Imagen:
(http://www.iespana.es/solocodigo/BD.jpg)
Espero q asi entiendan mi question:)
-
Como veo que estas empleando codigo ADO entonces prueba con esto.
La solucion mas rapida y facil es usar instrucciones SQL para ello utilizaras de otro RecordSet donde almacenaras el numero de fatura y la cantidad de facturas que cada una de elllas tiene ¡Me parece que eso es lo que buscas!
Coloca el siguiente script donde deseas que se realice la operacion:
dim rs as new Adodb.RecordSet
set rs=new Adodb.RecordSet
set rs=NombreConexion.Execute("Select Num_Fac as Factura,count(Num_Fac) as Cantidad From factura where Num_Fac='" & txtNum_Fac & "' GROUP BY Num_Fac")
txtTotal.text=rs.fields(1).value
set rs=nothing
De esta manera obtendras la cantidad de facturas que tienes.
Ahora solo tendras que acomodar el codigo segun como estes realizando tu aplicacion.
Si sigues teniendo problemas puedes enviar tu aplicacion o el codigo para poder ayudarte mejor.
Un saludo y suerte
<<_GIOMAR_>>
-
El ejemplo que te da Giomar suma el número de facturas, pero supongo que tú necesitas sumar los importes de las lineas, con lo que abría que utilizar un SQL tal que así:
SELECT Sum(CampoImporte) FROM LineasFacturas WHERE NumFactura = '001' GROUP BY NumFactura
Si como dices en un mensaje más abajo prefieres la opción del 'acumulador', entonces añade una pregunta filtrando los valores que te interesen antes de sumar:
If Datagrid1.Columns(IndiceClave).Value = "001" Then
acumulador=acumulador+Datagrid1.Columns(IndiceDeColumna_a_Sumar).Value
Esto te irá algo más lento pero...
Sort.
-
Lo he conseguido después de mucho esfuerzo!! El codigo q he utilizado es:
Dim sql As String
sql = "Select SUM(val(subtotal)) as total from factura2 where numfactura ='"
sql = sql + Text1.Text & "'"
Me.Adodc7.RecordSource = sql
Me.Adodc7.Refresh
Text21.Text = Format(Adodc7.Recordset!total, "Standard")
Me.Adodc7.RecordSource = "select * from Factura2 "
Me.Adodc7.Refresh
Set Me.DataGrid2.DataSource = Me.Adodc7
Gracias a todos!!! :good::flower:
-
Porque fíjate qué diferencia puede haber entre el código que has aceptado finalmente y el que yo te proponía, que era exactamente (si no me lo han cambiado las brujas...):
Me.Adodc1.RecordSource = "Select SUM(Importe) As Total from Gastos " & _
"Where Fecha >= DateValue(""" & DTPick1 & """)" _
& " And Fecha <= DateValue(""" & DTPick2 & """)"
Me.Adodc1.Refresh
Pues simplemente que en mi ejemplo la condición era entre fechas y en tu caso filtras por el número de factura... y que los objetos lógicamente tienen diferentes nombres... Pero veo que has llegado a aceptar el uso de una SQL para confeccionar el RecordSet, como Dios manda...
Saludos y suerte
-
Disculpa J.M. Movilla, hace poco q estoy en eso de SQL :think: Por eso me fue dificil entender, pero ahora ya se como hacerlo, q eso es lo importante!:)
Gracias por su ayuda, un cordial saludo
-
Posiblemente por la forma como te lo he dicho has podido interpretar que lo hacía con enfado... Al contrario: lo que ocurre es que me alegra el que al fin hayas caído en la cuenta de que existen las SQL para manejo de los registros... y seguro que ahora te meterás en el tema y aprenderás sus mandatos, sus cláusulas, sus sentencias... y verás que merece la pena perder(?) / GANAR(!) el tiempo introduciéndote en las entrañas de las SQLs...
Un abrazo
-
Tienes razón Movilla, si te lo dan hecho, no aprenderas nunca, es a base de errores q te das cuenta.
Nuevamente Garcias, salu2 cordiales desde BCN
-
Hola amigo Giomar B. sabes que yo tambien tengo este problema pero yo tengo una bd en sql donde mis datos se muestran en un datagriedview lo que quiero es que me sume todos los datos de mi columna costo ayudame pliss