Visual Basic Foro
Programación => Bases de Datos => Mensaje iniciado por: cordova2011 en Julio 12, 2011, 12:29:46 pm
-
buenas lo que pasa es lo siguiente ya que no supe como hacer la busqueda de una fecha hasta la otra como hace comunmente los programadores simplificque y puse busqueda de un dia pero de verdad no se por que no me carga todo lo veo bien.
atraves de un boton con un dtpicker quiero buscar todos los asientos de ese dia y sumar los campos montos y dar un total automaticamente mi codigo es algo asi
Dim total As Double
total = 0
If consulta_dia.State = adStateOpen Then
consulta_dia.Close
End If
consulta_dia.Open "SELECT * FROM registro where dia='" & fecha2.Value & "'", conexionBD, adOpenDynamic, adLockOptimistic
If Not consulta_dia.BOF And Not consulta_dia.EOF Then
'Textempresa = consulta_factura.Fields("empresa")
'Texttelefono = consulta_factura.Fields("telefonos")
'Textdireccion = consulta_factura.Fields("direccion")
'Textcontacto = consulta_factura.Fields("contacto")
'Textestado = consulta_factura.Fields("estado")
'Textciudad = consulta_factura.Fields("ciudad")
Else
MsgBox "codigo no registrado", vbCritical, "Mensaje del Sistema"
End If
' aqui cargo mo datagrid la tabla se llama registro donde dia sea = a mi fecha 2 del dtppicker
'CARGA DATAGRID
Adodc1.RecordSource = "SELECT * FROM registro WHERE dia='" & fecha2.Value & "'"
Adodc1.Refresh
DataGrid1.Refresh
'SUMATORIA DE TOTAL
If consulta_dia.State = adStateOpen Then
consulta_dia.Close
End If
consulta_dia.Open "SELECT * FROM facturacion where dia='" & fecha2 & "'", conexionBD, adOpenDynamic, adLockOptimistic
While Not consulta_dia.BOF And Not consulta_dia.EOF
monto = monto + consulta_dia.Fields("monto")
consulta_dia.MoveNext
Wend
Text1 = total
-
Hola,
Para la consulta desde hasta, puedes hacerlo asi...!
consulta_dia.Open "SELECT * FROM registro where dia >= '" & fecha2.Value & "' and dia <= '" & fecha3.Value & "'", conexionBD, adOpenDynamic, adLockOptimistic
o puedes hacerlo así
consulta_dia.Open "SELECT * FROM registro where dia BETWEEN '" & fecha2.Value & "' and '" & fecha3.Value & "'", conexionBD, adOpenDynamic, adLockOptimistic
-
me dic igual q antes
argumentos incorrectos fuera del intervalo permitido o en conflicto con otros
-
Prueba esto. En tu consulta inicial cambia de:
consulta_dia.Open "SELECT * FROM registro where dia='" & fecha2.Value & "'", conexionBD, adOpenDynamic, adLockOptimistica
consulta_dia.Open "SELECT * FROM registro where dia='" & Format(fecha2.Value, "YYYY/MM/DD") & "'", conexionBD, adOpenStatic, adLockOptimistic
y en la sumatoria has que el motor trabaje por ti, si haces la consulta y solo recorres para hacer la suma cambia de :
'SUMATORIA DE TOTAL
If consulta_dia.State = adStateOpen Then
consulta_dia.Close
End If
consulta_dia.Open "SELECT * FROM facturacion where dia='" & fecha2 & "'", conexionBD, adOpenDynamic, adLockOptimistic
While Not consulta_dia.BOF And Not consulta_dia.EOF
monto = monto + consulta_dia.Fields("monto")
consulta_dia.MoveNext
Wend
Text1 = total
a esto
'SUMATORIA DE TOTAL
If consulta_dia.State = 1 then consulta_dia.close
consulta_dia.Open "SELECT sum(monto) as Total FROM facturacion where dia='" & format(fecha2, "YYYY/MM/DD") & "'", conexionBD, adOpenStatic, adLockOptimistic
If consulta_dia.RecordCount > 0 then
Text1 = consulta_dia!Total
End If
Si vas a usar para otra cosa consulta_dia entonces si usa tu While-Wend
Saludos
-
tus campos en la base de datos estan tipo fecha y delimitados a solo fecha y no fecha hora?
-
Hola,
Pensaba que no lo tenías tipo fecha. En ese caso cambias la comilla simple por #
consulta_dia.Open "SELECT * FROM registro where dia >= #" & fecha2.Value & "# and dia <= #" & fecha3.Value & "#", conexionBD, adOpenDynamic, adLockOptimistic
Allí debería funcionar si trabajas con el tipo de campo fecha.
o puedes hacerlo así
consulta_dia.Open "SELECT * FROM registro where dia BETWEEN #" & fecha2.Value & "# and #" & fecha3.Value & "#", conexionBD, adOpenDynamic, adLockOptimistic
Verifica y me avisas....!