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)
-   -   Locate y access (https://www.clubdelphi.com/foros/showthread.php?t=24988)

magm2000 08-09-2005 15:41:02

Locate y access
 
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:

Código Delphi [-]
  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

No me funciona tu solución
 
Gracias por responder tan pronto pero no me funciona:

Código Delphi [-]
 // 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:

Código Delphi [-]
 mifechaabuscar: TDateTimePicker;
 mifechaabuscar := fcaja.qlst.fieldbyname('fecha').asdatetime;
 qlst.Locate('fecha', DateToStr(mifechaabuscar.datetime), [loPartialKey]);
Un saludo.

magm2000 08-09-2005 17:10:12

Para Neftali
 
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:


La franja horaria es GMT +2. Ahora son las 06:44:52.

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