Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Como pasar una fecha como parametro (https://www.clubdelphi.com/foros/showthread.php?t=53909)

richy08 04-03-2008 17:49:32

Como pasar una fecha como parametro
 
Buenos dias lo que quiero hacer es muy sencillo pero me marca un error alguien saba como darle formato a una fecha para pasarla como parametor a qun query gracias. por ejemplo 31/12/2008 de antemano gracias

Caral 04-03-2008 17:52:09

Hola
Yo si se
Saludos

richy08 04-03-2008 17:54:16

y como se hace??

Caral 04-03-2008 18:08:10

Hola
Código Delphi [-]
query.sql.text:= ´select * from tutabla where tucampo = :QUE';
query.parameters[0].value:= DateTostr(DateToStr(DateTimePicker1.DateTime);
Por supuesto, ya se es muy subjetivo, claro igual que la pregunta.
Ahora vamos como se pregunta:
Hola
1-Tengo un problema con los parametros con el formato fecha.
2-Uso una base de datos XXXXX
3-Uso los componetes xxxx para enlazar la BD.
4-Quiero que el parametro lo compare con un componente xxxxx o lo que sea.
Podrian ayudarme.?

En otras palabras, si la pregunta no esta completa como te van a contestar?
Saludos

richy08 04-03-2008 18:22:28

ok caral mil disculpas creo que tienes razon:p, pero mira lo que quiero hacer es algo como esto

Qry_ConRen.Parameters.ParamByName('fecha').Value:='12/31/2007';

gracias:)

Caral 04-03-2008 18:25:54

Hola
Creo que seguimos en lo mismo, pero si insistes.
Código Delphi [-]
Qry_ConRen.Parameters.ParamByName('fecha').Value:= StrToDate('12/31/2007');
Saludos

Delphius 04-03-2008 18:28:16

El campo fecha de que tipo es: date? string? La duda pasa por que pones entre comillas al valor....

Ya caral lo dijo... a falta de información seguiremos adivinando...
Además, si es por lo que veo, creo que estas usando ADO... y si es así, debes indicar el tipo de datos:

Código Delphi [-]
Query1.Parameters.ParamByName('fecha').DataType := ftXXXX;

Saludos,

richy08 04-03-2008 18:35:01

ok tratare de ser mas especifico :o si exactamente us ocomponentes ado el servidor es sql 2005 el tipo de dato es datetime y pues siempre pongo .value :confused: para dar el tipo da dato esto ocasiona problemas mil gracias por su tiempo

Delphius 04-03-2008 18:39:59

richy08, seguimos con lo mismo:
¿qué problemas? ¿que error?

Ya he dicho, por empezar hay que indicarle el valor adecuadamente:
¿De donde obtienes el valor? Dependiendo de esa respuesta habrá que hacer el moldeo de tipo adecuado (si es necesario).

Y como dije, necesitas indicar el tipo. Prueba con ftDate. No tengo delphi a mano, disculpas.

Saludos,

egostar 04-03-2008 18:40:59

Cita:

Empezado por richy08 (Mensaje 270578)
ok tratare de ser mas especifico :o si exactamente us ocomponentes ado el servidor es sql 2005 el tipo de dato es datetime y pues siempre pongo .value :confused: para dar el tipo da dato esto ocasiona problemas mil gracias por su tiempo

Bueno, trabajar con ese tipo de datos, requiere de pasar la fecha y la hora, personalmente no me gusta trabajar con ese campo, prefiero usar Date y Time por separado y te evitas muchos dolores de cabeza. :)

Salud OS

Caral 04-03-2008 18:46:35

Hola
Mejor no se puede explicar.
Saludos

richy08 04-03-2008 18:48:12

shale creo que no es mi dia no me levante inspirado :(, ya cheque el ftdate y en esta version no existe, este dato no l oestoy sacando de ningun lado es algo que quiero poner fijo lo que se mueve es la fecha actual y esa la saco de datetimepicker que previamente le asigne la fecha de hoy, esto lo hago para que en una grafica que genero con los datos de la bd me mu estre el dia actual hasta el fin de año, y el error que me marca que no es una fecha valida gracias

egostar 04-03-2008 19:08:37

Cita:

Empezado por richy08 (Mensaje 270588)
shale creo que no es mi dia no me levante inspirado :(, ya cheque el ftdate y en esta version no existe, este dato no l oestoy sacando de ningun lado es algo que quiero poner fijo lo que se mueve es la fecha actual y esa la saco de datetimepicker que previamente le asigne la fecha de hoy, esto lo hago para que en una grafica que genero con los datos de la bd me mu estre el dia actual hasta el fin de año, y el error que me marca que no es una fecha valida gracias

Puede ser porque el formato de fecha no es correcto, intenta con le función:

Código Delphi [-]
ShortDateFormat := 'mm/dd/aaaa';
//o
ShortDateFormat := 'dd/mm/aaaa';

Antes de pasar el parametro.

Salud OS

keyboy 04-03-2008 19:27:21

Cita:

Empezado por egostar (Mensaje 270591)
Puede ser porque el formato de fecha no es correcto

Pero se supone que de eso debiera encargarse el mismo componente al usar:

Código Delphi [-]
ADOQuery.Parameters.ParamByName('fecha').DataType := ftDate;
ADOQuery.Parameters.ParamByName('fecha').Value := DateTimePicker.Date

¿no?

Bye

egostar 04-03-2008 20:00:02

Cita:

Empezado por keyboy (Mensaje 270597)
Pero se supone que de eso debiera encargarse el mismo componente al usar:

Código Delphi [-]
ADOQuery.Parameters.ParamByName('fecha').DataType := ftDate;
ADOQuery.Parameters.ParamByName('fecha').Value := DateTimePicker.Date

¿no?

Bye

Pues si, eso se supone, pero por alguna razón suele funcionar este método no tan ortodoxo y podría decir que hasta trivial. :)

Seria cuestión de que richy08 nos lo comentara si funcionó o no....:rolleyes:

Salud OS

egarc 14-03-2008 18:51:00

En el SQL los campos tipo DateTime son fechas y horas a menos que al momento de grabar en ellos solo grabes la fecha, la hora sera siempre 12:00.

Pero, si al momento de grabar, mandas la fecha y la hora, y al momento de consultar solo envias la fecha, te puede dar problemas, porque el parametro que envias cuando consultas con solo fecha es (FECHA 12:00).

No se si me explique, debes en el mejor de los casos usar un BETWEEN. por ejemplo: FECHA BETWEEN '01-01-2008 00:01' AND '01-01-2008 23:59'

Creo que es la mejor manera, sin escapes...

espero les sirva

AzidRain 15-03-2008 01:42:52

Lo correcto y elegante es esto:

Código:

  Query.ParamByName('fecha1').AsDate := DateTimePicker1.Date;
Yo siempre lo hago así y me funciona muy bien y además no tienes que preocuparte por el formato de fechas que use tu aplicación ni del que usa el motor de BD


La franja horaria es GMT +2. Ahora son las 04:46:43.

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