Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-11-2003
omy omy is offline
Miembro
 
Registrado: ago 2003
Ubicación: Acapulco gro.
Posts: 100
Poder: 21
omy Va por buen camino
problemas con fecha en consulta

Hola , es un problema un poco raro.

Hago una consulta por la fecha lo curioso es que solo falla cuando la variable "fecha2 := 12/11/2003" ahi falla. no lo hace.
con fecha1 := 11/11/2003 y fecha1 := 13/11/2003 lo hace perfectamente. Buscando porque, llegue a la conclusion de que con esa fecha hace referencia a mm/dd/yy y no a dd/mm/yy
revise la base de datos y si estan guardadas las fechas dd/mm/yy/


este es el codigo que uso esta muy simple..
var sql :string ;
fecha1,fecha2:string;
begin
fecha1 := DateToStr(MonthCalendar1.Date);
sql := 'Select * from historial where fecha1 >= #' + fecha1+'#' ;
adoquery1.SQL.Clear;
adoquery1.sql.Add(sql);
adoquery1.Active := true;


espero me de a entender y alguien puede decirme porque....
o como lo puedo resolver...
__________________
omar velazquez
Responder Con Cita
  #2  
Antiguo 28-11-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Por qué no utilizas:

MiFecha:=FormatDateTime('mm/dd/yyyy');

Y así formateas las fechas de la manera que te convenga.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 28-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

En realidad es muy probable que en la base de datos las fechas no estén guardadas ni en formato mm/dd/yyyy ni en dd/mm/yyyy, sinó que simplemente estarán almacenadas como un número entero. Aunque eso depende de cada servidor o base de datos que utilizes.

Cuando consultas los datos, los ves en formato dd/mm/yyyy porqué la aplicación al mostrarlos, al saber que són de tipo fecha los convierte al formato de fecha especificado en la configuración regional del ordenador.

Es muy habitual que en una sentencia le tengas que pasar los datos en el formato inglés mm/dd/yyyy. Puesto que el Servidor no puede saber el formato de fecha del Ordenador que le ha pasado la sentencia, por lo que por defecto la va a interpretar en inglés.

Si no quieres hacer muchos cambios en tu aplicación, simplemente cambia el formato en el que pasas la fecha (con el FormatDateTime('mm/dd/yyyy', Fecha)).

Aunque una forma mejor de pasar estos datos, es usando parámetros.

La consulta quedaria en (la estableces en tiempo de diseño y no en tiempo de ejecución) :

select * from Tabla where Fecha >= :FECHA

Ahora veras que en la propiedad Params del objeto Query, tienes un parámetro FECHA de tipo fecha.

Para ejecutar la sentencia, la aplicación debe dar un valor al parámetro y abrir el Query :

Query.ParamValues['FECHA'] := Fecha;
Query.Open;

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 01-12-2003
omy omy is offline
Miembro
 
Registrado: ago 2003
Ubicación: Acapulco gro.
Posts: 100
Poder: 21
omy Va por buen camino
gracias guillotmarc

nada mas que tuve que poner estas lineas
adoquery1.Parameters.ParamValues['fecha']:=FormatDateTime('mm/dd/yyyy',MonthCalendar1.Date);
ADOQuery1.Open;
///
adoquery1.Active := false;
adoquery1.Active := true;
///
para que se pueda refrescar el dbgrid....
__________________
omar velazquez
Responder Con Cita
  #5  
Antiguo 01-12-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Esta linea :
adoquery1.Parameters.ParamValues['fecha']:=FormatDateTime('mm/dd/yyyy',MonthCalendar1.Date);

Quedaría mejor, simplemente con :
adoquery1.Parameters.ParamValues['fecha']:=MonthCalendar1.Date;

Ahora estás haciendo una serie de transformaciones : De Fecha a Cadena a Variant Cadena y finalmente a Fecha de nuevo.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #6  
Antiguo 05-12-2003
omy omy is offline
Miembro
 
Registrado: ago 2003
Ubicación: Acapulco gro.
Posts: 100
Poder: 21
omy Va por buen camino
disculpa la demora .. gracias por las observaciones...


gracias
__________________
omar velazquez
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:22:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi