|
Página 1 de 2
|
Autor |
Mensaje |
pittusa
Técnico Programador
Registrado: Marzo 2010
Mensajes: 157
Edad: 53 Ubicación: Barcelona
|
Problema Con Fechas
Hola:
Tengo una base de datos con un campo para las fechas.(las inserto con date(now)) (el formato del campo de la base es date)
cuando muestro el campo en un grid el formato de la fecha se muestra asi: 24/09/10, (día, mes, año.)
El problema es que cuando recorro los campos y relleno un combo, en el combo me la muestra así: 09/24/10, ( mes, día, año.)
así inserto la fecha en la base de datos:
valresult["Fecha"] = date(now)
así relleno el combo:
valresult = conexion.Exec("select distinct Fecha from Albaranes")
DO WHILE ValResult.Available
campo = ValResult["Fecha"]
Combofecha.Add(campo)
ValResult.MoveNext()
loop
Por que no me las muestra igual?
Que tengo que hacer para que me muestre la fecha en el mismo formato?
última edición por pittusa el Sabado, 25 Septiembre 2010, 09:21; editado 2 veces
|
#1 Sabado, 25 Septiembre 2010, 09:20 |
|
|
bies88
Aprendiz
Registrado: Diciembre 2009
Mensajes: 51
Edad: 45
|
Re: Problema Con Fechas
Hola.
Usa format(fecha,"dd/mm/yyyy")
Saludos
|
#2 Sabado, 25 Septiembre 2010, 13:01 |
|
|
pittusa
Técnico Programador
Registrado: Marzo 2010
Mensajes: 157
Edad: 53 Ubicación: Barcelona
|
Re: Problema Con Fechas En Consulta Sql
Gracias, bies88, ya lo tengo casi solucionado.
Por cierto.....
Alguien ha echo consultas sql en una base de datos sqlite, sobre fechas?
por ejemplo:
Si quisiera listar en un grid solo las fechas comprendidas entre una y otra.
Estoy probando con between, pero no funciona
conexion.exec ("select Fecha from Albaranes between '10/02/2010' and '20/03/2010' ")
Según he estado leyendo por ahí, esta consulta debería mostrar la fechas comprendidas entre 10/02/2010 y 20/03/2010.
pero no me funciona.
gracias.
|
#3 Sabado, 25 Septiembre 2010, 22:39 |
|
|
david
Programador
Registrado: Septiembre 2009
Mensajes: 110
Edad: 47 Ubicación: puerto de santa maria (Cadiz)
|
Re: Problema Con Fechas
Pittusa yo me partí mucho la cabeza para que el codigo sqlite3 y este fue el resutado
dim Resultados as Result
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)
y ya con la variable de Resultados puedes llenar el grid o el columnview lo que te apetezca
yo por ejemplo lo tengo rellenado en columnview y es asin
contenidos es el nombre del columnview1
dim Clave as string
DIM Desde AS String[]
DIM DesdeSql AS String
DIM Hasta AS String[]
DIM HastaSql AS String
dim hResult as Result
'abrimos la conexion de la base de datos
if AbreConexion() then return
contenidos.Clear
contenidos.Columns.Count = 10
contenidos.Columns[0].Width = 90
contenidos.Columns[0].Text = "NRegistros"
contenidos.Columns[1].Text = "DNI"
contenidos.Columns[2].Text = "NOMBRES"
contenidos.Columns[3].Text = "FECHA"
contenidos.Columns[4].Text = "HORA"
contenidos.Columns[5].Text = "Ant-Des"
contenidos.Columns[6].Text = "GLUCOSA"
contenidos.Columns[7].Text = "SISTORICA"
contenidos.Columns[8].Text = "DISTORICA"
contenidos.Columns[9].Text = "PULSACIONES"
' aqui hago la busqueda de las fechas ya indicado antes
'----------------------------------------------------------------
Desde = Split(TextBox1.Text, "/")
DesdeSql = "'" & Desde[2] & "-" & Desde[1] & "-" & Desde[0] & " 00:00:00'"
Hasta = Split(TextBox2.Text, "/")
HastaSql = "'" & Hasta[2] & "-" & Hasta[1] & "-" & Hasta[0] & " 00:00:00'"
hResult = hConn.Exec("select * from control where dni='" & TextBox3.Text & "' and datetime(fecha) between" & DesdeSql & " and " & HastaSql)
'y ahora ponemos los resultados
'----------------------------------------
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()
espero que te sirva de ayuda, a mi me resulto difícil porque yo creía que era igual que el sql pero no es asin hay algunas pequeñas diferencias que son la que te vuelves loco buscando porque no funciona
|
#4 Sabado, 25 Septiembre 2010, 23:46 |
|
|
bies88
Aprendiz
Registrado: Diciembre 2009
Mensajes: 51
Edad: 45
|
Re: Problema Con Fechas
Una pregunta tonta. ¿Habéis probado simplemente con un <? Por ejemplo,
conexion.exec("select * from TABLA where Fecha<&1",fecha)
Saludos
|
#5 Domingo, 26 Septiembre 2010, 11:07 |
|
|
ahtonio
Programador
Registrado: Octobre 2009
Mensajes: 144
Edad: 58 Ubicación: Zaragoza
|
Re: Problema Con Fechas
Hola, recientemente me he peleado precisamente con esto de fechas y Sqlite3. Descubrí que el formato que utilizamos en España de dd/mm/yy no es precisamente el de Sqlite y difiere del que gambas maneja por defecto, por tanto hay que homogeneizar formatos con funciones. Pero no todas las funciones contemplan el formato local, así probando probando se ve que :
ValueBox con el Type = Date, mantiene en su prop. Value un dato tipo Date con formato local, o por lo menos así lo muestra en una sentencia print.
Cuando insertamos en un GridView una fecha desde Sqlite3, se muestra adecuadamente al formato local, pero es un String en un TextBox, por lo tanto para comparar y hacer busquedas hemos de convertirla con:
CDate Syntax
Date = CDate ( Expression AS Variant ) AS Date
Converts an expression (numerical Float or String) into a Date / Time String.
Be careful! The current localization is not used by this function. ¡¡CIUDADO CON EL FORMATO!!
O la otra posibilidad es:
Val Syntax
Expression = Val ( String )
Converts a string into a boolean, a number or a date, according to the content of the string.
The current localization is used to convert numbers and dates. ¡¡AQUI SI RESPETA EL FORMATO LOCAL!!
Tuve que probar las consultas y las comparaciones para adecuar los formatos y esto quedo asi:
Para situarme en un elemento del Grid (ordenado por fecha):
Para ejecutar una consulta SQL, lo mejor, ya lo han dicho, que sea gambas el que trabaje con Subst asi:
PUBLIC SUB CargaDatos()
DIM strsql AS String
strsql = "SELECT * FROM vselped "
strsql &= " WHERE fecped BETWEEN &1 and &2 "
strsql &= "ORDER BY fecped"
rstped = db.Current.Exec(strsql, vbxdesde.Value, vbxhasta.Value)
Lo mejor es que pruebes y pruebes como yo, trabajando con lo que tienes. Yo funciono con ValueBox para solicitar fechas, quizás tu lo hagas con TextBox.....
Un saludo
Antonio
|
#6 Domingo, 26 Septiembre 2010, 11:42 |
|
|
codificador
Analista Programador
Registrado: Junio 2010
Mensajes: 420
Edad: 114 Ubicación:
|
Re: Problema Con Fechas
prueben
internamente trabajen las fechas en este orden
yyyy mm dd
|
#7 Domingo, 26 Septiembre 2010, 21:09 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Problema Con Fechas
@pitussa
Creo que deberías seguir el ejemplo de ahtonio. Desde luego es el más acertado, lo cual no significa que no se pueda hacer de otra forma.
Enhorabuena ahtonio por tu exposición.
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#8 Martes, 28 Septiembre 2010, 19:07 |
|
|
Dervins
Usuario
Registrado: Diciembre 2010
Mensajes: 18
Edad: 34 Ubicación:
|
Re: Problema Con Fechas
...... me equivoque de foro.....
última edición por Dervins el Domingo, 30 Enero 2011, 16:56; editado 2 veces
|
#9 Domingo, 30 Enero 2011, 16:46 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: Problema Con Fechas
Vamos a ver:
Las bases de datos almacenan los datos en forma YYYY MM DD hh mm ss ms. En una base de datos mysql un campo de tipo fecha puede valer date o datetime. La diferencia es que se almacene solo la fecha o la fecha y la hora. La otra posibilidad es que valga NULL si el campo está vacío.
Entiendo que en Sqlite debe ser igual o muy parecido.
Preguntar por tanto si es fecha un campo de base de datos no tiene demasiado sentido porque lo que hay allí es NULL o una fecha. En cualquier caso perguntar por ISDATE es válido para saber si hay algo o no que es lo msmo que preguntar por NOT ISNULL.
Para formatear la salida de un campo de fecha de base de datos disponemos de la función FORMAT que formatea la fecha acorde a nuestro interes. Da igual el formato que tenga internamente. Format convertirá la fecha al formato correcto. Por tanto Grid[x,y].text=format(Rs!fecha,"dd/mm/yy") es perfectamente válido. Los formatos de fecha de format exigen que el argumento a formatear sea de tipo date. Es por eso que no podemos formatear un string con ese formato por mucho que lo que tenga dentro sea una fecha válida.
Así que no acabo de entender cual es el problema la verdad. Con la orden format yo puedo poner la fecha en el formato que quiera siempre y cuando no sea NULL.
otra cosa es verficiar la fecha escrita en un textbox por ejemplo. Esa es otra cuestión en la que no entro por no hacer esto mas largo. Lo único que hay que tener claro es que las funciones CDATE y ISDATE trabajan con la fecha en formato británico. Yo me construí dos que trabajan en formato español y ya está. Si teneis interes os las pasteo. Funcionan igual solo que no tienen el dichoso problema del formato ingles.
|
#10 Lunes, 31 Enero 2011, 13:42 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|