PDA

Ver la Versión Completa : consultas por fechas en ADO


josro0ck
25-05-2011, 20:53:47
necesito hacer una consulta con las citas que esten registradas para hoy, pero no consigo hacerlo, parece que tengo algun problema de sql o no se como usarlo en delphi, ni base de datos tiene un campo fecha de formato dd/mm/aaaa y he probado la coneccion con otras consultas y si me da resultados, a excepcion de este caso , y ya tengo registros con el resultado del criterio en la base de datos
miren mi codigo

var
dd, mm, aa:word;
dia, ddd, mmm, aaa:string;
begin
decodedate(date, aa, mm, dd);
ddd:=inttostr(dd);
if length(ddd)<2 then
ddd:='0'+ddd;
mmm:=inttostr(mm);
if length(mmm)<2 then
mmm:='0'+mmm;
aaa:=inttostr(aa);
dia:=Concat(ddd,'/',mmm,'/',aaa);
{
q1.Close;
q1.SQL.Add('SELECT * FROM citas WHERE fecha = ' + dia);
q1.Open;
q1.First; }
edit1.text:='SELECT * FROM citas WHERE fecha = ' + dia;
end;

y el query queda asi, es este
SELECT * FROM citas WHERE fecha = 25/05/2011

por favor necesito ayuda, que es lo que he estado haciendo mal?, he estado buscando, y no he encontrado muchas cosas utiles,

Gracias.

oscarac
25-05-2011, 21:01:32
has probado ponerlo asi?

edit1.text:='SELECT * FROM citas WHERE fecha = ' + FormatDateTime('dd/MM/yyyy', dia);
end;

josro0ck
25-05-2011, 21:13:59
has probado ponerlo asi?

Código Delphi [-] (http://www.clubdelphi.com/foros/#)
edit1.text:='SELECT * FROM citas WHERE fecha = ' + FormatDateTime('dd/MM/yyyy', dia);
end;





si lo habia intentado, pero me marca
[Error] Unit1.pas(138): There is no overloaded version of 'FormatDateTime' that can be called with these arguments

oscarac
25-05-2011, 21:22:04
te hago una pregunta
porque descompones la fecha y la vuelves a armar ?

porque no pruebas asi


edit1.text:='SELECT * FROM citas WHERE fecha = ' + FormatDateTime('dd/MM/yyyy', Date);



P.D. cuando coloques codigo delphi utiliza el icono del Partenon (al lado izquierdo del icono que dice SQL)

josro0ck
25-05-2011, 21:44:44
te hago una pregunta
porque descompones la fecha y la vuelves a armar ?

porque no pruebas asi


Código Delphi [-] (http://www.clubdelphi.com/foros/#)
edit1.text:='SELECT * FROM citas WHERE fecha = ' + FormatDateTime('dd/MM/yyyy', Date);






P.D. cuando coloques codigo delphi utiliza el icono del Partenon (al lado izquierdo del icono que dice SQL)



si me di cuenta luego de eso, y lo que hice fue cambiar el codigo por esto
var
dia:string;
fechaprueba:tdatetime;
begin
fechaprueba:=date;
formatdatetime('dd/mm/yyyy', fechaprueba);
dia:=datetostr(fechaprueba);
q1.Close;
q1.SQL.Clear;
q1.SQL.Add('SELECT * FROM citas WHERE fecha = ' + dia);
q1.Open;
q1.First;
edit1.text:='SELECT * FROM citas WHERE fecha = ' + dia;
end;

pero no he avanzado mas, por cierto, a que te refieres con el icono del partenon? cual es?, tiene que estar en el query o algo asi?

oscarac
25-05-2011, 21:54:54
emulando a Casimiro.....


y aun no mencionas su con el codigo que te di funciona...
solo dices que lo cambiaste pero sigues usando la misma instruccion en el query

luisgutierrezb
25-05-2011, 22:06:38
Basado en lo que dice Oscarac, la instruccion seria:

edit1.text:='SELECT * FROM citas WHERE fecha = ' + QuotedStr(FormatDateTime('dd/MM/yyyy', vFecha));

donde vFecha es una variable de tipo Date o Datetime conteniendo la fecha

josro0ck
25-05-2011, 22:10:27
emulando a Casimiro.....


y aun no mencionas su con el codigo que te di funciona...
solo dices que lo cambiaste pero sigues usando la misma instruccion en el query


si lo intente pero no funciono, me marca error cuando trato de compilarlo, exactamente lo mismo que puse arriba, pero lo acomode de este modo
var
dia:string;
fechaprueba:tdatetime;
begin
fechaprueba:=date;
formatdatetime('dd/mm/yyyy', fechaprueba);
dia:=datetostr(fechaprueba);
q1.Close;
q1.SQL.Clear;
q1.SQL.Add('SELECT * FROM citas WHERE fecha = ' + dia);
q1.Open;
q1.First;
edit1.text:='SELECT * FROM citas WHERE fecha = ' + dia;
end;

solo que no me da resultados

oscarac
25-05-2011, 22:17:19
edit1.text:='SELECT * FROM citas WHERE fecha = ' + dia;


eso para que lo pones?
donde estas mostrando los datos? en un grid?

josro0ck
25-05-2011, 22:29:16
edit1.text:='SELECT * FROM citas WHERE fecha = ' + dia;


eso para que lo pones?
donde estas mostrando los datos? en un grid?

no, en un edit, pero es solo para ver como queda la sentencia al final, los datos al inicio queria ponerlos en un grid, pero no supe como, creo que lo mas factible sera guardar la fecha automaticamente con delphi en la base de datos pero con formato de texto a travez de un form y de ahi sacar la consulta mas facilmente, la verdad estoy desesperado xD y estaba viendo si lo hacia con paradox pero este es un proyecto que tengo que entregar el lunes y la verdad no tengo muchas ganas de cambiarlo por completo, xD tengo mucho que hacer.

de todos modos muchas gracias y perdon por las molestias, en un futuro buscare la forma de mejorar este proyecto.

por cierto, en esta pagina se tiene que hacer algo al terminar un tema?

oscarac
25-05-2011, 22:39:31
que yo sepa nada
yo siempre agradezco a las personas que me ayudaron

abelg
02-08-2011, 14:58:12
mira creo lo mejor es:

q1.sql.clear;
q1.sql.add('SELECT * FROM citas WHERE fecha =:pfec')
q1.parambyName('pfec').AsDateTime := fechaprueba;
//query1.Params.ParamByName('pfec').SsDateTime := fechaprueba; // o asi
q1.open;


salu2