Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Problema Con Fechas
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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 
pittusa - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Fechas 
 
Hola.
Usa format(fecha,"dd/mm/yyyy")
Saludos
 



 
bies88 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
pittusa - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 



 
david - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 



 
bies88 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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):
PRIVATE FUNCTION situaFec() AS Boolean
  DIM i AS Integer
  
  IF IsDate(vbxfecha.Value) THEN
    FOR i = 0 TO grdped.Rows.Count - 1
      IF Val(grdped[i, 1].Text) >= vbxfecha.Value THEN
        grdped.MoveTo(i, 1)
        RETURN TRUE
      ENDIF
    NEXT
  ELSE
    RETURN FALSE
  ENDIF

END
 


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
 



 
ahtonio - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Fechas 
 
prueben
internamente trabajen las fechas en este  orden
yyyy mm dd
 



 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Fechas 
 
...... me equivoque de foro.....
 



 
última edición por Dervins el Domingo, 30 Enero 2011, 16:56; editado 2 veces 
Dervins - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Función Stat.Fechas Shell General 5 Viernes, 28 Septiembre 2012, 09:47 Ver último mensaje
Shell
No hay nuevos mensajes Trabajo Con Fechas smorgerbowrg General 8 Viernes, 16 Noviembre 2012, 17:06 Ver último mensaje
smorgerbowrg
No hay nuevos mensajes Fechas. Sin Problemas Shell Bases de Datos 0 Lunes, 17 Octobre 2016, 20:56 Ver último mensaje
Shell
No hay nuevos mensajes Rango De Fechas En Componente calcena General 1 Jueves, 26 Julio 2018, 18:02 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron