Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Visualizacion por dia. (https://www.clubdelphi.com/foros/showthread.php?t=73904)

leogobo 24-05-2011 01:42:46

Visualizacion por dia.
 
hola,

Estoy usando lazarus y tengo una tabla donde se van guardando varios registros cada día, uno de esos campos de la tabla es precisamente la fecha. Lo que quiero hacer es utilizar el TCalendar para que al seleccionar un día en el calendario solo me muestre los registros del respectivo día y navegarlos con botones de siguiente, anterior, etc. Como se podria hacer esto???

Gracias

ecfisa 24-05-2011 02:19:40

Hola.

No especificas con que base de datos estas trabajando, con que componente ni donde querés mostrar los resultados. Pero si los mostras en un DBGrid, una opción es usar el evento OnClick del MonthCalendar:
Código Delphi [-]
procedure TForm1.MonthCalendar1Click(Sender: TObject);
begin
  XQuery.Close;   // IBQuery, ADOQuery, etc...
  XQuery.SQL.Clear;
  XQuery.SQL.Add('SELECT * FROM TU_TABLA');
  XQuery.SQL.Add('WHERE TU_CAMPO = :FECHA');
  XQuery.ParamByName('FECHA').AsDateTime:= MonthCalendar1.Date;
  XQuery.Open;
end;

Para volver a mostrar todos los registros:
Código Delphi [-]
begin
  XQuery.Close;
  XQuery.SQL.Clear;
  XQuery.SQL.Add('SELECT * FROM TU_TABLA');
  XQuery.Open;
end;

Saludos.

Edito: Aunque olvidé mencionarlo lógicamente el DBGrid deberá tener asignado el TDataSource que referencia al XQuery.

leogobo 24-05-2011 05:12:42

Perdon, estoy trabajando con una tabla dBase., estoy utilizando el componente TDBF, y quiero vizualizar en TDBEdit's.

ecfisa 24-05-2011 06:09:20

Hola.

No conocía los componentes TDbf, pero leí un poco la documentación que está en sourceforge ( TDbf Manual ) y aparentemente podrías aplicar la propiedad Filter para hacer lo que buscas.

Algo como:
Código Delphi [-]
procedure TForm1.MonthCalendar1Click(Sender: TObject);
begin
  Dbf1.Filtered:= False;
  Dbf1.Filter:= 'CAMPO_FECHA =' + QuotedStr(DateToStr(MonthCalendar1.Date));
  Dbf1.Filtered:= True;
end;
Como lo desconozco, busqué también si Lazarus posee las funciones QuotedStr y DateToStr y según leí están soportadas, por lo que creo que el código de arriba debería funcionar.

Para desactivar el filtro y mostrar todos los datos nuevamente:
Código Delphi [-]
...
begin
  Dbf1.Filtered:= False;
end;

Saludos.

leogobo 25-05-2011 05:44:55

oye muchas gracias, eres un genio!!

oscarac 25-05-2011 05:51:07

Ten en cuenta que si usas filter en ese tipo de tablas, podria hacerse un poco lento si es que la tabla contiene mucha informacion:rolleyes:

leogobo 26-05-2011 06:16:32

Muchas gracias por sus repuestas, para que me funcionara el filtro la linea de:

Código Delphi [-]
Dbf1.Filter:= 'CAMPO_FECHA =' + QuotedStr(DateToStr(MonthCalendar1.Date));

me toco dejarla asi para que funcionara:

Código Delphi [-]
Dbf1.Filter:= 'CAMPO_FECHA =' + QuotedStr(MonthCalendar1.Date);

Ahora tengo otro problema con esos filtros. Cuando quiero hacer un filtro de un campo String de la siguiente manera:

Código Delphi [-]
Dbf1.Filter:= 'CAMPO =' + QuotedStr(edit1.text);

Me saca un error que dice "Project Registro raised exception class "EDbfError with message: Index based on unknown field "CAMPO"""


Gracias

ecfisa 26-05-2011 06:40:00

Hola leogobo.

Cita:

"Project Registro raised exception class "EDbfError with message: Index based on unknown field "CAMPO"""
Como te dije más arriba no he trabajado con esos componentes y no tengo experiencia con dBase, pero por lo que dice el error pareciera que no existe
un campo con el nombre 'CAMPO'.

Pero por las dudas hacé la prueba de quitar QuotedStr, realmente es un tiro a ciegas... no conozco esos componentes.

Saludos.

leogobo 26-05-2011 06:53:05

Me acabo de dar cuenta que sale ese error cuando el edit o el nombre del campo en la tabla tienen un nombre como edit_1 o campo_1 , osea cuando se le pone raya al piso.. Que raro no???


La franja horaria es GMT +2. Ahora son las 05:07:00.

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