Base de Datos - ADODC -

r0y
29 de Enero del 2004
Hola, les comento como estoy trabajando, y despues el problema. Me estoy conectando a la base de datos con el ocx ADODC, y la represento en un datagrid. Todo funciona bien, la interface funciona con filtros (http://r0y.webcindario.com/ot.gif), pero lo que necesito es que le asigne a una variable cuando activo el boton filtrar la suma de toda la columna "Horas trabajadas". Con sql seria facil si me hubiese conectado desde codigo, pero lo hice desde el adocd, ese es el problema. Bueno, aca incluyo el código, si alguna alma apiadada decide ayudarme, (que estare muy agradecido porque hace semanas que lo estoy buscando) que me mande un mail y le paso el proyecto entero.

---------------------------


Private Sub checkFecha_Click()
If checkFecha.Value = 0 Then
txtDesde.Enabled = False
txtHasta.Enabled = False
Label3.ForeColor = &H8000000C
Label4.ForeColor = &H8000000C
txtDesde.BackColor = &HC0C0C0
txtHasta.BackColor = &HC0C0C0

ElseIf checkFecha.Value = 1 Then
txtDesde.Enabled = True
txtHasta.Enabled = True
txtDesde = ""
txtHasta = ""
Label3.ForeColor = &H80000008
Label4.ForeColor = &H80000008
txtDesde.BackColor = &HFFFFFF
txtHasta.BackColor = &HFFFFFF
End If

End Sub

Private Sub cmdFiltrar_Click()
If txtOT <> "" And txtEmpleado = "" And checkFecha.Value = 0 Then
datos.Recordset.Filter = "OT LIKE '" + txtOT + "'"
End If

If txtEmpleado <> "" And txtOT = "" And checkFecha.Value = 0 Then
datos.Recordset.Filter = "Empleado LIKE '" + txtEmpleado + "'"
End If

If txtEmpleado <> "" And txtOT <> "" And checkFecha.Value = 0 Then
datos.Recordset.Filter = "Empleado LIKE '" + txtEmpleado + "' AND OT LIKE '" + txtOT + "'"
End If

If txtOT <> "" And txtEmpleado = "" And checkFecha.Value = 1 Then
If txtDesde <> "" And txtHasta <> "" Then
datos.Recordset.Filter = "OT LIKE '" + txtOT + "' AND Día > '" + txtDesde + "' AND Día < '" + txtHasta + "'"
Else
MsgBox "Llene los campos.", vbInformation
End If
End If

If txtEmpleado <> "" And txtOT = "" And checkFecha.Value = 1 Then
If txtDesde <> "" And txtHasta <> "" Then
datos.Recordset.Filter = "Empleado LIKE '" + txtEmpleado + "' AND Día > '" + txtDesde + "' AND Día < '" + txtHasta + "'"
Else
MsgBox "Llene los campos.", vbInformation
End If
End If

If txtEmpleado <> "" And txtOT <> "" And checkFecha.Value = 1 Then
If txtDesde <> "" And txtHasta <> "" Then
datos.Recordset.Filter = "Empleado LIKE '" + txtEmpleado + "' AND OT LIKE '" + txtOT + "' AND Día > '" + txtDesde + "' AND Día < '" + txtHasta + "'"
Else
MsgBox "Llene los campos.", vbInformation, "Falta Información"
txtDesde.SetFocus
End If
End If

If txtOT = "" And txtEmpleado = "" And checkFecha.Value = 1 Then
If txtDesde <> "" And txtHasta <> "" Then
datos.Recordset.Filter = "Día > '" + txtDesde + "' AND Día < '" + txtHasta + "'"
Else
MsgBox "Llene los campos.", vbInformation, "Falta Información"
txtDesde.SetFocus
End If
End If

End Sub

Private Sub cmdsacarfiltro_Click()
datos.Recordset.Filter = ""
datos.Refresh
End Sub

Private Sub Datos_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
datos.Caption = "Registros totales: " & datos.Recordset.RecordCount
End Sub

Private Sub Form_Load()
txtDesde.Enabled = False
txtHasta.Enabled = False
Label3.ForeColor = &H8000000C
Label4.ForeColor = &H8000000C
txtDesde.BackColor = &HC0C0C0
txtHasta.BackColor = &HC0C0C0
End Sub

Private Sub salir_Click()
End
End Sub

Private Sub txtHasta_GotFocus()
cmdfiltrar.Default = True
End Sub

Private Sub txtHasta_LostFocus()
cmdfiltrar.Default = False
End Sub

Private Sub txtOT_GotFocus()
cmdfiltrar.Default = True
End Sub

Private Sub txtOT_LostFocus()
cmdfiltrar.Default = False
End Sub

Private Sub txtEmpleado_GotFocus()
cmdfiltrar.Default = True
End Sub

Private Sub txtEmpleado_LostFocus()
cmdfiltrar.Default = False
End Sub


------------------------


Gracias, nos vemos.

r0y
29 de Enero del 2004
copien y peguen esto sino les anda el link:

r0y.webcindario.com

Orlando
29 de Enero del 2004
Prueba esto (despues de aplicar el filtro):
SumaHoras=0
with datos.Recordset
if .recordcount>0 then
.movefirst
do while not .eof
Suma=Suma+ "HorasTrabajadas"
.movenext
loop
endif
end with
... caso de que te valga, no se si necesitas guardar
la fila actual del DataGrid por si te va cambiando
durante el recorrido dentro del bucle.