Filtro y suma de valores con ADODC y DataGrid VB6

Tengo una tabla de la cual debo filtrar los datos que estén en un periodo determinado de fechas y luego totalizar ciertas columnas de la tabla. He logrado hacer ambas cosas pero por separado... Lo cual es muy frustrante...
Esto es lo que he hecho hasta ahora:
Adodc1.Recordset.Filter = " fecha >= '" & frmReportes.DTPicker1.Value & "' and fecha <= '" & frmReportes.DTPicker2.Value & "'"
Con esto hago el filtro en el recordset ahora del resultado de este filtro debería sumar ciertas columnas.
Para sumar las columnas hice esto:
suma = 0
asuma = 0
DataGrid1.Col = 3
DataGrid1.Row = 0
For i = 0 To Adodc1.Recordset.RecordCount - 1
asuma = Val(DataGrid1.Text)
suma = suma + asuma
DataGrid1.Row = i + 1
Next
Label1.Caption = suma
El tamaño del datagrid lo tengo para que se muestren las 4 primeras filas cuando los resultados sobrepasan esto la suma me da valores erróneos...
Quisiera poder hacer esto en una sola instrucción SQL he probado con "SUM(datafield) as resultado" y me ha resultado pero sin aplicarle el filtro de las fechas.
2

2 respuestas

Respuesta
1
A que te refieres con
El tamaño del datagrid lo tengo para que se muestren las 4 primeras filas cuando los resultados sobrepasan esto la suma me da valores erróneos...
? ¿? ¿? ¿
El datagrid tiene un ancho en el cual se ven las 4 filas, si la consulta es mayor a ese tamaño, al hacer la suma, el resultado no es el correcto... en cambio si la consulta solo arroja 2,3, o 4 filas la suma es correcta. Es sumamente raro y no se a que se deba.
Si pudiera enviarme el proyecto te podría ayudar más
Respuesta
1
Sugiero que veamos primero la sentencia de extracción de datos que tienes...
Esto es lo que se me ocurrió hacer... pero no me funciona.
Dim db As Database
Dim tb As Recordset
Set db = OpenDatabase("c:\archivos de programa\controlcombustible\datos.mdb")
Set tb = db.OpenRecordset("SELECT * FROM isla WHERE fecha BETWEEN '" & DTPicker1.Value & "' AND '" & DTPicker2.Value & "'", dbOpenDynaset)
Set DataGrid4.DataSource = tb
... paciencia...
David, muchas gracias por tu pronta respuesta, mira básicamente debo hacer una consulta en un intervalo de tiempo algo así como del 01/01/2006 al 31/01/2006 y luego a los valores que da esa consulta sumarlos por columnas. La verdad es que ya e probado tantas cosas que no tengo claro que he hecho o que no.
Los datos no debo mostrarlos en un flexgrid ya que simplemente son 9 resultados que van a unas etiquetas.
El datagrid lo estaba usando para sumar las columnas luego de la consulta pero me da errónea la suma en algunos casos...
Muchas gracias David
Sugiero que las búsquedas las realices en un recordset en forma directa, no usando controles enlazados a datos.
Algo como lo siguiente:
squery ="select * from mitabla where micondicion"
Y los colocas en un flexgrid. Al mismo tiempo puedes ir sumando los datos del campo en la variable de memoria que gustes y listo...
Ok, pero usa mejor el ADO en lugar del DAO, que es particular solamente para access, el ADO lo puedes usar con cualquier base de datos...
SELECT * FROM isla WHERE fecha BETWEEN '" & format$(DTPicker1.Value,"YYYYMMDD") & "' AND '" & format$(DTPicker2.Value,"YYYYMMDD") & "'"
Ok, la sentencia de select que te puse, se utiliza en una variable:
squery = "SELECT * FROM isla WHERE fecha BETWEEN '" & format$(DTPicker1.Value,"YYYYMMDD") & "' AND '" & format$(DTPicker2.Value,"YYYYMMDD") & "'"
Esto lo pasas a un ADORECORDSET y después si quieres seguir trabajando con datagrid lo puedes usar, pero sugiero el flexgrid para que no tengas controles enlazados a datos que posteriormente dan problemas...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas