![]() |
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 ;) |
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 |
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 |
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 |
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 |
Lo dije de memoria y me equivoqué :(
Cita:
|
Se me adelantó hermes_32 ;)
|
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