Mensajes: 434 Ubicación: Tachira
Domingo, 12 Enero 2014, 05:42
Aaaaaaa yaaaaa, no entendía la cuestión del señor JGUARDON y muchas cosas, dios miiiioooo no sabia que esto era así de complicado
yo creo que dure como 4horas pensando analizando la cuestión de la fechas y las consultas y me pareció tan fabuloso todo de parte de ustedes tanto del señor JGUARDON, SHORDI, CODIFICADOR, GATOVIEJO, DAVID Y FINALMENTE AHTONIO, hice una mezcla
Todo comienza porque la fecha se almacena al revés en MYSQL (%y-%m%d) y nuestros Datebox.Value las muestra a simple vista (dd/mm/yyyy) pero al guardarse en mysql o sqlite se ve (yyy-mm-dd), el problema es cuando hacemos las consultas que supuestamente buscamos fecha (dd/mm/yyyy) pero en realidad la maquina esta es buscando (yyy-mm-dd) por eso no consigue nada! entonces viendo el ejemplo del señor JGUARDON note esto:
conexion.hconn.Exec("Select * from delitos where fecha_delito between &1 and &2", fecha_inicio, fecha_fin) y conexion.hconn.Exec("select * from tabla where fecha_delito >= &1 and fecha_delito <= &2", fecha_inicio, fecha_fin) si uno quiere puede usar >= y <= para conseguir dichas fechas pero es mas cómodo con between que es lo mismo!, bueno dije pero esas variables fecha_inicio? y fecha_fin? que son datebox.value o que? bueno en realidad son variables del tipo string para hacer un volteo de la fecha del datebox y meterlas en fechas as string, por ejemplo:fecha_inicial=datebox.value1 y fecha_final=datebox.value2 este ejemplo lo vi del compañero DAVID Y AHTONIO, por otra parte vi que había un ejemplo del compañero david para la comparación de fechas que eran:
Citar:
Desde = Split(TextBox1.Text, "/")
'ponemos lo guiones en barritas para que el motor sqlite3 lo reconozca
'----------------------------------------------------------
DesdeSql = "'" & Desde[2] & "-" & Desde[1] & "-" & Desde[0] & " 00:00:00'"
Hasta = Split(TextBox2.Text, "/")
HastaSql = "'" & Hasta[2] & "-" & Hasta[1] & "-" & Hasta[0] & " 00:00:00'"
'y haces la busqueda
Resultados = Conexion.Exec("select * from control where dni='" & TextBox3.Text & "' and datetime(fecha) between" & DesdeSql & " and " & HastaSql)
Funciona pero es un poco tedioso, me puse a entender el codigo del compañero AHTONIO pero me lanzaba un error, la idea es agarrar la fecha de los Datebox que desde luego al meterla en las variables Fecha_inicio y Fechas_final se volteen al estilo MYSQL para que la fecha quede yyy-mm-dd y asi si te la encuentra y te la trae, ejemplo del compañero AHTONIO
Citar:
fecdsd = Format(vbxdesde.Value, "yyyy-mm-dd") 'Para interpretar por Sqlite3
fechta = Format(vbxhasta.Value, "yyyy-mm-dd") 'en el formato que almacena fecha
'No utilizamos substitucion porque no funciona. Insertamos string con el formato
'YYYY-MM-DD que es como guarda los datos en la tabla.
strsql = "SELECT * FROM vselped "
strsql &= " WHERE strftime('%Y-%m-%d', fecped) BETWEEN '" & fecdsd & "' AND '" & fechta & "'"
strsql &= " ORDER BY fecped"
rstped = db.Current.Exec(strsql)
Pero sucede algo al traer la fecha en la tabla hay que hacer un Format porque las Gridview las muestra muy enredadas entonces vi el ejemplo del compañero DAVID que es:
Citar:
DO WHILE hResult.Available
Clave = hResult["idregistro"]
contenidos.add(Clave, Clave)
contenidos[Clave][0] = hResult["idregistro"]
contenidos[Clave][1] = hResult["dni"]
contenidos[Clave][2] = hResult["nombre"]
contenidos[Clave][3] = Format(hResult["fecha"], "dd/mm/yyyy")
contenidos[Clave][4] = hResult["hora"]
contenidos[Clave][5] = hResult["despuescomer"]
contenidos[Clave][6] = hResult["glucosa"]
contenidos[Clave][7] = hResult["sistorica"]
contenidos[Clave][8] = hResult["distorica"]
contenidos[Clave][9] = hResult["pulsa"]
hResult.MoveNext
LOOP
'cerramos la conexion de la base de datos
CerrarBase()
Bien terminando la habladuría tan aburrida hice el procedimiento del compañero AHTONIO y me lanzaba un error, me decía que el comando strftime no funcionaba entonces dije voy a colocar algo parecido al date_format del comapñero GATOVIEJO y todo me quedo asi y me funciono perfecto:
Public Sub Button_buscar_consulta2_Click()
Dim fila As Integer
Dim fecha_inicial As String
Dim fecha_final As String
Dim strsql As String
Dim rstped As String
conexion.hresul = conexion.hconn.Exec("Select *from delitos")
If Not (conexion.hresul.Available) Then
Message.Error("NO HAY REGISTROS EN LA BASE DE DATOS")
Else
' If DateBox_fecha_delito.Value = "" Or TextBox_codigo_delito_expediente2.Text = "" Then
' Message.Info("POR FAVOR LLENE LOS CAMPOS DE FECHAS PARA REALIZAR LA CONSULTA")
' Else
fecha_inicial = Format(DateBox_fecha_delito.Value, "yyyy-mm-dd")----Variables para voltear las fechas y asi poder hacer las consultas a mysql
fecha_final = Format(DateBox_fecha_delito2.Value, "yyyy-mm-dd")
If ComboBox_buscar_por_delitos2.Text = "FECHA" Then
strsql &= ("Select *from delitos")
strsql &= " WHERE date_format(fecha_delito, '%Y-%m-%d') BETWEEN '" & fecha_inicial & "' AND '" & fecha_final & "'"--(El tenia :strftime('%Y-%m-%d',fecha_delito), cambie a: date_format(fecha_delito, '%Y-%m-%d') y funciono!
strsql &= " ORDER BY fecha_delito"
conexion.hresul = db.Current.Exec(strsql)
fila = 0
Do While conexion.hresul.Available
Lista2.Rows.Insert(fila)
Lista2[fila, 0].Text = conexion.hresul["codigo_delito"]
Lista2[fila, 1].Text = conexion.hresul["nro_expediente_delito"]
Lista2[fila, 2].Text = conexion.hresul["delito"]
Lista2[fila, 3].Text = Format(conexion.hresul["fecha_delito"], "dd/mm/yyyy") ----Aquí me trae la fecha desordenada pero con el format me la ordena de nuevo en el griview!, este procedimiento sirve también para los reportes en pdf
Lista2[fila, 4].Text = conexion.hresul["hora_delito"]
Lista2[fila, 5].Text = conexion.hresul["lugar_direccion_delito"]
Lista2[fila, 6].Text = conexion.hresul["barrio_urbanizacion_delito"]
Lista2[fila, 7].Text = conexion.hresul["parroquia_delito"]
Lista2[fila, 8].Text = conexion.hresul["municipio_delito"]
Lista2[fila, 9].Text = conexion.hresul["estado_municipio"]
Lista2[fila, 10].Text = conexion.hresul["armas_involucradas_delito"]
Lista2[fila, 11].Text = conexion.hresul["testigos_nombres_delito"]
Lista2[fila, 12].Text = conexion.hresul["modus_operandi_delito"]
Lista2[fila, 13].Text = conexion.hresul["nombre_presunto_imputado_infractor_delito"]
Lista2[fila, 14].Text = conexion.hresul["apellido_presunto_imputado_infractor_delito"]
Lista2[fila, 15].Text = conexion.hresul["lugar_ubicacion_imputado_delito"]
conexion.hresul.MoveNext()
fila = fila + 1
Loop
Lista.Refresh
Button_refrescar2.Enabled = True
Button_buscar_consulta2.Enabled = False
Button_reporte_tabla2.Enabled = True
Endif
Espero que a muchos que estén perdidos les sirva esta explicación tan aburrida, bueno un abrazo.