PDA

Ver la Versión Completa : Locate y access


magm2000
08-09-2005, 15:41:02
Hola:
Quiero hacer una busqueda sobre una tabla de access donde tengo un campo denominado 'fecha' que contiene la fecha y la hora.
Utilizo la siguiente sentencia:
qlst.Locate('fecha', mifechaabuscar.datetime, [loPartialKey]);

sin embargo no me encuentra nada, supongo que será un error de mi sentencia, como puedo hacer que me funcione.
Gracias y un saludo.

jmariano
08-09-2005, 16:33:37
En vez de pasar la fecha en sí, conviértela a una cadena:


qlst.Locate('fecha', DateToStr(mifechaabuscar.datetime), [loPartialKey]);


Saludos!

Neftali [Germán.Estévez]
08-09-2005, 17:06:14
Una pregunta:
¿Qué sentido tiene hacer una busqueda por Fecha/DateTime con [loPartialKey]?

magm2000
08-09-2005, 17:07:57
Gracias por responder tan pronto pero no me funciona:


// Leo la fecha de la tabla y la convierto a string
busca := fcaja.qlst.fieldbyname('fecha').asstring;
qlst.Locate('fecha', busca, [loPartialKey]);
// sin embargo este locate sobre la misma tabla si me funciona
qlst.Locate('numticket', 4, [loPartialKey]);

También he probado tu solución y nada:


mifechaabuscar: TDateTimePicker;
mifechaabuscar := fcaja.qlst.fieldbyname('fecha').asdatetime;
qlst.Locate('fecha', DateToStr(mifechaabuscar.datetime), [loPartialKey]);

Un saludo.

magm2000
08-09-2005, 17:10:12
La busqueda es parcial porque aunque guardo la fecha y la hora en access una de las busquedas que realizo consiste en buscar todos los registros que hay de una fecha (sin importar la hora) determinada.
Un saludo.

Neftali [Germán.Estévez]
08-09-2005, 17:22:48
Creo que el loPartialKey no va a funcionar con DateTime de forma que si coincide la fecha y no la hora te lo vaya a encontrar. Creo que si desear buscar por una fecha, ignorando la hora deberás utilizar un Beetwen o >= que hora 0:00:00 y <= que 23:59:59

Neomanar
09-09-2005, 17:16:20
Creo que en lugar de usar DateToStr deberías formatear la fecha con FormatDateTime, dado que te permite especificar el orden de día, mes y año, como sigue: FormatDateTime('MM/DD/YYYY',mifechaabuscar.datetime)
Es curioso, pero he visto que para filtrar una tabla es posible hacerlo con DateToStr y Delphi formatea la fecha de acuerdo al formato de la tabla. Sin embargo, no sucede lo mismo con el Locate. :confused:
Con respecto al [loPartialKey], la ayuda dice que sólo es aplicable a campos de tipo string. "If Options contains the loPartialKey setting, then Locate allows partial-string matching on strings in KeyValues. If Options is an empty set, or if KeyFields does not include any string fields, Options is ignored.
Espero te sirva. Saludos!:cool: