Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   hacer consultas buscando por fecha (https://www.clubdelphi.com/foros/showthread.php?t=11134)

VRO 07-06-2004 09:38:03

hacer consultas buscando por fecha
 
hola buenos dias,tengo un problemilla...para hacer una consulta desde dedelphi buscando por el campo de la fecha, que en interbase es de tipo date, con string en delphi no me lo reconoce, que tipo de dato he de utilizaar?? o como podria hacerlo de otra manera??? gracias

__cadetill 07-06-2004 09:44:59

es problema del formato de fechas. Seguramente estás pasando un formato dd/mm/yyyy cuando le deberías de pasar el formato mm/dd/yyyy

Mírate la función FormatDateTime en la ayuda, que es fácil de manejar y te solucionará el problema

VRO 07-06-2004 12:42:20

el caso es que cuando lanzo la consulta desde interbase buscando una fecha, que se que existe y pongo exactamente lo mismo q esta guardado, y que asi me lo coge, tpc me saca el resultado ded la consulta, yo creo q es alguna incompatibilidad de tipos de datos string y date, pero no se lo que tengo que hacer... en visual se que para buscar por fecha habia q poner una almohadilla... no hay otra manera parecida aqui???

el formatdatetime creo q no me sirve, porque el mes dia y año estan ordenados exactamente igual en la consulta y en la base...

__cadetill 07-06-2004 12:48:53

Bueno, las fechas han de ir entrecomilladas

Si pones algo de código o la sentencia SQL quizás te podamos ayudar más

VRO 07-06-2004 12:55:16

es esto:
ds_lecturas.close;
ds_lecturas.selectSQL.Text:='select * from lecturas where numero=' + quotedstr(num) + ' and fecha=' + quotedstr(fecha);
ds_lecturas.Open;
ds_lecturas.Delete;
dtrans.Commit;


en el delete me da fallo porque dicee que el dataset esta vacio, ya lo he comprobado, y lo que busco existe en la base de datos...y num y fecha tienen los datos correctos, gracias!

__cadetill 07-06-2004 13:13:53

quizás fecha no está en el formato correcto (es decir mm/dd/yyyy) y por eso no encuentra registros

De todas maneras, creo que es complicarse algo la cosa hacer un select para luego hacer un delete. Podrías hacer directamente un SQL de Delete en un Query (TQuery, TIBQuery, ...... según los componentes que uses)

Código Delphi [-]
MiQuery.SQL.Text := 'delete from lecturas where numero=' + quotedstr(num) + 
            ' and fecha = ' + quotedstr(fecha);
MiQuery.ExecSQL;

guillotmarc 07-06-2004 13:27:02

Hola.

Un par de consideraciones, ¿ Numero es numérico ? en este caso no hay que poner delimitadores, y el FormatDateTime lo tienes que poner obligatoriamente, puesto que sinó te cogerá el formato del sistema, el cual puede ser distinto en cada ordenador.

Es decir :

Código:

MiQuery.SQL.Text := 'delete from lecturas where numero=' + IntToStr(num) +
                ' and fecha = ' + QuotedStr(FormatDateTime('mm/dd/yyyy', fecha));
MiQuery.ExecSQL;

NOTA : Porqué en la base de datos veas las fechas como dd/mm/yyyy no quiere decir que internamente se guarden en este formato. Interbase/Firebird siempre las trata internamente como mm/dd/yyyy, y en una sentencia las tienes que pasar en este formato. (Si lo ves almacenado como dd/mm/yyyy es solo porqué se hace la transformación en el momento de presentarlo en pantalla, para mayor comodidad del usuario).

Saludos.

__cadetill 07-06-2004 13:31:39

Cita:

Empezado por guillotmarc
Hola.

Hola :D

Cita:

Empezado por guillotmarc
Un par de consideraciones, ¿ Numero es numérico ? en este caso no hay que poner delimitadores

de acuerdo con esto :D

Cita:

Empezado por guillotmarc
, y el FormatDateTime lo tienes que poner obligatoriamente, puesto que sinó te cogerá el formato del sistema, el cual puede ser distinto en cada ordenador.

no de acuerdo con esto. La variable Fecha de VRO es de tipo string, por lo que no sabemos si ya está en el formato deseado. Además, para usar la función FormatDateTime, primero tendríamos que pasar el string a fecha con un StrToDate ;)

Ala, a pasar un buen día :p

guillotmarc 07-06-2004 13:35:53

Si tienes razón.

Es una chapuza. No debería trabajar con fechas en cadenas, solo le van a traer problemas por el formato.

Saludos.

VRO 07-06-2004 16:28:49

bueno voy a probar, respecto a los metodos que utilizo, ya se que son muy rudimentarios, pero es el primer programa que hago de deelphi y nunca he dado clases ni tengo manuales ni nada...asi que me las apaño como puedo...

VRO 07-06-2004 16:39:39

bueno, ya me salio muchas grgacias, al final si que hacia falta el formatdatetime, esque segun vi en el ejemplo de la ayuda, pense que no me serviria... bueno, muchas gracias


La franja horaria es GMT +2. Ahora son las 23:02:50.

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