Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consultas por fecha (https://www.clubdelphi.com/foros/showthread.php?t=52342)

gerasA 17-01-2008 21:31:08

Consultas por fecha
 
Hola!
Tengo un problemita, lo que pasa es que tengo 7 tablas con los mismos campos y quiero que el usuario consulte por fecha de cada tabla, pero el formato de la fecha de mi tabla es dd/mm/aaaa y en sql el formato es mm/dd/aaaa entonces quiero cambiar el formato, osea que el usuario capture dd/mm/aaaa lo ke hago es lo sig:
Código Delphi [-]
consulta:='select * from Aluminio where Fecha =';
consulta:=consulta+quotedstr(edit1.Text);
consulta:=consulta+'order by Folio';
Query1.SQL.Clear;
Query1.SQL.Add(consulta);
Query1.Active;
Query1.Open;
Si hace la consulta pero el usuario tendria ke capturar la fecha asi mm/dd/aaaa como les comento yo kiero ke capture dd/mm/aaaa
espero ke me puedan ayudar
Gracias:)

eduarcol 17-01-2008 21:34:33

utiliza los parametros asi no tendras que preocuparte por el formato de las fechas en las consultas

ContraVeneno 18-01-2008 00:07:11

creo que esto ya lo había vivido en otro hilo, pero no recuerdo donde...


Lo mejor es que el usuario capture la fecha en un TDateTimePicker que en lugar de un TEdit, así ni tú, ni el usuario, tendrían que preocuparse por el formato.

Y a la hora de pasarlo a SQL, utiliza parámetros, de esa manera tú no tendrías que preocuparte por el formato.

GustavoCruz 20-01-2008 16:40:09

Hazlo de esta forma
Código Delphi [-]
ConsultaSQL:='select * from Aluminio where fecha = #'+formatdatetime('mm/dd/yyyy',datetimepicker.date)+'#';
with query1 do
  begin
     sql.clear;
     sql.add(ConsultaSQL);
     open;
  end;

así debe funcionar...:):)

Saludos...

donki 20-01-2008 18:08:46

Hola GustavoCruz,

Es bastante engorro construir la string de consulta con una fecha con formato.

Yo te propongo lo que se comentan por otros foros y poner parámetros a la consulta:

Por ejemplo:

q.SQL.Text = 'Select * From Tabla Where Fecha=:MyFecha';
q.Parameters[0].Value = '01/01/2008';

De esta forma te puedes olvidar de los formatos de fechas.

Suerte

gerasA 21-01-2008 17:36:35

Gracias
 
Muchas Gracias a todos!
Ya solucione el problema :)

ContraVeneno 21-01-2008 19:05:43

Sería de mucha ayuda para nosotros y para los futuros foreros, que nos dijeras de que manera lo solucionaste. :D

gerasA 21-01-2008 19:11:48

Gracias
 
Hice lo que me dijiste contraveneno lo de usar un datetimepicker y use parametros eso es todo
Bye Muchas Gracias

gerasA 22-01-2008 23:30:06

Consultas entre dos fechas
 
Hola!
Ahora como le hago si el usuario selecciona la tabla mediante un combobox y quiero hacer la consulta entre dos fechas, lo que yo hago es lo siguiente pero me marca un error:
Código Delphi [-]
table1.Active:=false;
table1.TableName:=combobox1.Items[combobox1.ItemIndex];
table1.Active:=true;
case combobox1.ItemIndex of
    0:begin
    Query1.SQL.Text:='select * from Aluminio where Fecha = between :    Fecha1 and : Fecha2';
    Query1.Params[0].AsDate:=datetimepicker1.Date;
    Query1.Params[1].AsDate:=datetimepicker2.Date;
    Query1.Active := true;
    Query1.Open;
    end;
end;
Estoy ocupando un solo dbgrid, un table y un query estoy bien?
Gracias

egostar 23-01-2008 00:01:12

Esta mal tu SELECT, debe ser:

Código Delphi [-]
Query1.SQL.Text:='select * from Aluminio where Fecha between :Fecha1 and :Fecha2'

Salud OS

gerasA 23-01-2008 21:40:20

Pero me marca un error cuando selecciono la tabla
'invalid use of keyword. Token: Fecha1
Por que pasa eso?
Saludos Gracias!

egostar 23-01-2008 22:19:49

Cita:

Empezado por gerasA (Mensaje 260352)
Pero me marca un error cuando selecciono la tabla
'invalid use of keyword. Token: Fecha1
Por que pasa eso?
Saludos Gracias!

Pues entonces el problema está en "otras" partes, porque acabo de probar el código y funciona perfectamente

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  Query1.SQL.Text:='select * from llamadas where Fecha between :Fecha1 and :Fecha2';
  Query1.Params[0].AsDate:=datetimepicker1.Date;
  Query1.Params[1].AsDate:=datetimepicker2.Date;
  Query1.Active := true;
  Query1.Open;
end;

Salud OS

PD: Solo como comentario, estoy usando un Query asignando solamente el DatabaseName, no tiene mas nada, ni parámetros, ni campos dentro de la propiedad SQL, ni nada. :rolleyes::cool:

eduarcol 23-01-2008 22:26:57

Quitale el espacio que hay entre los dos puntos y el fecha 1

gerasA 23-01-2008 22:27:35

Pero lo haces de manera ke esojas la tabla por medio de un combobox?
Lo que yo hago es ke el usuario escoge la tabla por medio de un combobox y es ahi cuando marca el error.
No se si estoy enlazando mal el datasource, el dbgrid, la tabla o el query.
Gracias!

egostar 23-01-2008 22:32:11

Cita:

Empezado por gerasA (Mensaje 260371)
Pero lo haces de manera ke esojas la tabla por medio de un combobox?
Lo que yo hago es ke el usuario escoge la tabla por medio de un combobox y es ahi cuando marca el error.
No se si estoy enlazando mal el datasource, el dbgrid, la tabla o el query.
Gracias!

Y que objeto tiene que abras una tabla y después uses un query, no entiendo, como diria Caral, me lo explicas? :D

Salud OS

Edito: Estas usando el código como te lo puse?

gerasA 23-01-2008 22:50:04

Gracias
 
Gracias eduarcol y egostar!
Quite como me dijiste eduarcol el espacio entre : y fecha1 y arregle el problema.
Y si es cierto egostar no necesito de una tabla si tengo el query.
Gracias a todos!
bye Saludos


La franja horaria es GMT +2. Ahora son las 14:41:38.

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