Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Comillas y fechas (https://www.clubdelphi.com/foros/showthread.php?t=29438)

Carlex 21-01-2006 22:38:40

Comillas y fechas
 
Buenas estoy trabajando con SQLServer 2000 y delphi 7, uso el sgte codigo:
Código:

Q1.Close;
Q1.SQL.Clear;
Q1.SQL.Add('SELECT N_Caso, F_Denuncia, S_NombDenunciado
FROM  T_Caso
WHERE F_Denuncia=:Param1');
Q1.Parameters[0].Value:=DateTimePicker1.Date;
Q1.Open;

Pero me bota error "Caracteristica no implementada". Hize pruebas en el SQL Server y las fechas deben ir con comillas simples es decir asi:

Código:

SELECT N_Caso, F_Denuncia, S_NombDenunciado
FROM  T_Caso
WHERE F_Denuncia='20/10/2003'

Si no se pone las comillas separa la cadena y no encuentra nada, ahora bien como hacer para mandar esta fecha al adoquery con comillas o como hacer para mandar la fecha del datetimepicker al adoquery, gracias d antemano.

roman 21-01-2006 22:43:55

No estoy seguro porque ADO difiere de otros querys pero intenta establecer explícitamente el tipo de parámetro:

Código Delphi [-]
Q1.Parameters[0].DataType := ftDate;

antes de abrir la consulta.

// Saludos

Carlex 21-01-2006 22:53:31

Gracias Roman por la rapida respuesta, pero ya probe esa forma...incluso probe poner los datos de entrada en al Adoquery y definir el parametro como datetime, para luego solo mandar el parametro pero tampoco me funciono...creo q es por el SQL Server ya q la misma sentencia uso en access y funciona bien..:confused:

piccolo2101 23-01-2006 11:53:53

Hola,

yo estoy trabajando con lo mismo y me funciona bien. ¿Has probado poner directamente una fecha y ver si ejecuta bien?

Código Delphi [-]
Q1.Close;
Q1.SQL.Clear;
Q1.SQL.Add('SELECT N_Caso, F_Denuncia, S_NombDenunciado
FROM  T_Caso 
WHERE F_Denuncia=''dd/mm/yyyy'''); // p.e 23/01/2006
Q1.Parameters[0].Value:=DateTimePicker1.Date;
Q1.Open;

Un saludo.

Jonnathan 24-01-2006 19:04:10

Tal vez podrías probar algo como:
Código Delphi [-]
...
Q1.SQL.Add('SELECT N_Caso, F_Denuncia, S_NombDenunciado
FROM  T_Caso 
WHERE F_Denuncia=:Param1');
Q1.Parameters[0].DataType := ftString;
Q1.Parameters[0].Value:=DateToStr(DateTimePicker1.Date);
Q1.Open;
A los parámetros de tipo string delphi les pone las comillas. Si tienes problemas con el formato de la fecha tranformada y el formato que admite el servidor entonces usa la funcion FormatDateTime en vez de DateToStr, prueba y nos dices que tal. Saludos.

Carlex 24-01-2006 19:40:51

Gracias Piccolo probe tu forma y funciona super gracias

AzidRain 26-01-2006 03:22:02

Usa la función de Delphi
 
A mi me pasaba igual con MySQL y las fechas y descubir que:

Las fechas para MySQL por default son en formato AAAA-MM-DD y deben ir
entre comillas sencillas o dobles.

Ahora, como le haces para ponerle las comillas, que es tu pregunta...pues la funcion QuotedStr precisamente hace eso, le pasas una cadena y te devuelve la misma cadena pero con comillas sencillas de manera que para lo que quieres hacer quedaria asi:

Código Delphi [-]
MiQuery.SQL.Add('SELECT FECHA,NOMBRE FROM TABLA WHERE FECHA=:PARAMETRO');
MiQuery.ParamByName('PARAMETRO').AsString := QuotedStr('2001-01-01');
MiQuery.Open;

obviamente en el código de ejemplo hay que sustituir la fecha por la que quieras tomandola del datetimepicker usando una función para cambiar a cadena.

Ojala te sirva.


La franja horaria es GMT +2. Ahora son las 20:23:57.

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