Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Busqueda en un campo fecha (https://www.clubdelphi.com/foros/showthread.php?t=20373)

seken 13-04-2005 23:42:33

Busqueda en un campo fecha
 
estimados.....
tengo una tabla donde la tengo ordenada por fecha, lo que quiero hacer es que cuando selecciono una fecha en un DateTimePicker me busque esa fecha.
Tengo un buscador que le paso como parametro el date y con:

table.Setkey;
table.Fields[1].asstring:=D; //BUSCO la fecha
table.GotoNearest;


me funciona para cuando busco algun texto. ¿porque con fecha no? pueden decitrme como hacerlo aunque sea de otra forma.
muchas gracias

seken ;)

geovany 14-04-2005 00:35:40

Campos Date
 
Los campos date no se pueden utilizar como campos de busqueda debido a que pierden precision al momento de guardarse en la bd principalmente si utilizas BDE yo no pude hacer eso que estas tratando de hacer y lei por ahi que es por que se pierde precision en la fecha

por ejemplo

13:00:00.00000000 <> 13:00:00.0000000001


asi que ay radica la diferencia

Lepe 14-04-2005 12:33:43

Código Delphi [-]
table.Fields[1].asDate :=DateOf(datetimepicker1.Date); //BUSCO la fecha

Habrá que ver si la hora tambien está guardada en la base de datos, en este ejemplo no.

La solución alternativa es buscar por rango de fechas, sería mejor usar una consulta en sql, busca por el foro "between" "parametro fecha" etc.

Un saludo

seken 14-04-2005 12:57:16

hay algo que no me reconoce el delphi
 
estimados....
en la tabla paradox que utilizo tengo declarado el campo como D (Date).

1) si quiero utilizar lo que me explica Lepe:
table.Fields[1].asDate :=DateOf(datetimepicker1.Date);

lo que esta en negrita no me lo toma de da el error "undeclared identifier"
y ademas
2) cuando asign0o en la base de datos la fecha lo hago así:
TableDiasFecha.AsDatetime:=date(); porque con asdate me da el mismo error.

¿que estoy haciendo mal? ¿¿¿¿¿¿¿puedo guardar solo la fecha sin time???????
muchas gracias

seken

hermes_32 14-04-2005 13:26:10

Bueno, yo lo he conseguido de la siguiente manera y me localiza bien el registro.

table.locate(FFecha, ValorFecha, []);

donde
"FFecha" es el nombre del campo Fecha por el que buscas
"VAlorFecha" es valor del objeto DateTimePicker (datetimepicker1.Date)

Esto te localiza el primer registro de la tabla que coincida con el valor que buscas.

Si lo que intentas es seleccionar un grupo de registros con esa fecha lo que tienes que hacer es un SetRange de la tabla:

table.CancelRange;
table.IndexName := nombre del indice por el que ordenas;
table.SetRange([ValorFecha],[ValorFecha]);

Espero que te sirva

Lepe 14-04-2005 13:34:16

Lo dije de memoria y me equivoqué :(

Código Delphi [-]
if   tabla.Locate('fecha', DatetimePicker1.date,[]) then
  ShowMessage('si encontrado')
else
  ShowMessage('no encontrado');
Cita:

Locate uses the fastest possible method to locate matching records. If the search fields in KeyFields are indexed and the index is compatible with the specified search options, Locate uses the index. Otherwise Locate creates a filter for the search.
Saludos.

Lepe 14-04-2005 13:35:32

Se me adelantó hermes_32 ;)

seken 14-04-2005 14:11:19

funcionó OK
 
muchas gracias, ya resolvi el problema.


La franja horaria es GMT +2. Ahora son las 05:32:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi