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 no buscar parcialmente, por que? (https://www.clubdelphi.com/foros/showthread.php?t=25055)

URBANO 10-09-2005 13:19:41

Locate no buscar parcialmente, por que?
 
Hola Foro, tengo un query el cual muestra una serie de facturas ordenadas por el campo total (float, tablas en paradox).
En la ficha tengo colocado un edit y en el evento Onchange lo siguiente:
Código:

  datos.Qfacturas.Locate('TOTAL',strtofloat(edit1.text),[loPartialKey]);
La idea es que cada vez que yo introduzca un numero se ejecute este evento y el cursor que apunta a los registro se mueva, es decir, introduzco el 1, el curso se mueve al primer 1 que encuetre. Introduzco ahora el 2, el cursor se mueve al primer registro con 12.
Esto es la idea pero lo que ocurre es que el cursor no se mueve del primer registro. Que estoy haciendo mal?

Gracias y saludos.

Sirkius 10-09-2005 13:44:07

Hola, he mirado la documentación y pone:

Cita:

If Options contains the loPartialKey setting, then Locate allows partial-string matching on strings in KeyValues.
Por lo que entiendo que el valor pasado en KeyValues debe ser un String. Prueba a pasarlo como un String y nos cuentas.

EDITO: pues no. Lo acabo de probar y no es por eso. En los Zeos lo coje bien siendo un integer. Mira a ver si hay problemas con los puntos de mil y la coma de decimales... no se me ocurre otra cosa...

URBANO 19-09-2005 09:54:57

No creo que sea por el punto de mil , ni por la coma de decimales, ya que hay cantidades como '900' y tan poco la busca.

Tiene alguien alguna idea mas. Gracias.

Lepe 19-09-2005 13:49:46

Quita el lopartialkey, ya que 1 ya coincide con la búsqueda parcial, por tanto nunca buscará el 12.

Un saludo

URBANO 06-10-2005 20:14:55

Lepe, he quitado lo que me comentas y sigue igual. Si estoy buscando el 107 , hasta que no escribo el 7 no se mueve al registro, es decir, hasta que no escribo el número exacto.

Alguien tiene alguna idea mas. No puede ser tan complejo hacer una busqueda por un numero.

Gracias.

Lepe 06-10-2005 21:11:40

Claro, como se me ha pasado ... jejeje
Código Delphi [-]
datos.Qfacturas.Locate('TOTAL', edit1.text ,[loPartialKey]);

tu le dabas el valor en Float, y lo toma como una unidad, es decir, de un número no puedes partir el primer caracter y/o el segundo, para poder hacerlo tiene que ser un String.

Al pasarle los datos como String (edit1.text) ahora si busca parcialmente. (que conste que lo he probado con un campo de tipo Entero, con un Float no).

saludos

URBANO 07-10-2005 09:15:25

He probado lo que me has comentado (pero con el campo 'total' de tipo float) y tampoco funciona. Seguire buscando otra forma.

Gracias por las ideas. Alguien conoce otro metodo?

Zeta 08-10-2005 03:48:03

Probaste con el componente gnu JEDI VCL tiene varios componentes que hacen eso:
el que uso yo y hace lo que escribiste en código (con la diferencia que no escribís una palabra) es el JvDBFindEdit y ponele en "Find Style" Navigate si querés que se te acomode en el primer registro (según FindMode) o filter (la que uso casi siempre yo); y funciona como un filtro, desapareciendo los datos no buscados.


Ni hablar, es lo que necesitás.

Fijate que tiene mucho otros componentes muy útiles.

Avisame como te va.


Saludos :D

URBANO 12-10-2005 11:57:11

Donde puedo conseguir este componente para probarlo.

Lepe 12-10-2005 13:08:16

colocando JEDI VCL en google, aparece como primer resultado.

saludos

Zeta 13-10-2005 21:28:01

Exactamente como dice Lepe.

david duarte 14-10-2005 16:35:28

Hola!!!!

heme de nuevo aqui. bueno mi problema es el siguiente:

tengo una tabla con dos campos como llave primaria ej.

Folio(key) Num(key) valor1 valor2

001 01 2.25 1.25
001 02 1.25 2.25
002 01
002 02
003 01
004 01
lo que quiero hacer es que desde el principio busque en los 2 campos llave.:

al momento de que yo guarde en el folio 002 con el numero 02, se debe de ir directamente ese registro y guardar los resultados.

pero no se como ponerle en las opciones de TLocateLocateOption, porque si le pongo

loPartialkey solamente va a buscar en el campo que yo le diga p.e.

necesito que me muestre el folio 001 con el numero 05
Código Delphi [-]
 DataSet.Tabla.Locate(Folio, 'folio', [lopartialkey]);

y eso es lo que no quiero yo quiero que me busque en los dos campos como si fuera uno solo.

Lo que pasa es que si le pongo que me busque el folio con LoCaseInsensitive, me marca que no existe ese folio

Esto lo digo, porque en la tabla probablemente tenga

Gracias

Cómo te sientes hoy??

Lepe 14-10-2005 21:01:39

Si es que primero hay que mirar la ayuda de delphi ;)

Código Delphi [-]
with CustTable do
  Locate('Company;Contact;Phone',
     VarArrayOf(['Sight Diver', 'P', '408-431-1000']), 
      [loPartialKey]);

david duarte 14-10-2005 21:14:22

Sip. lo siento.

Lo que pasa es que me faltaban los parentesis.

Lo siento mucho

Gracias

Cómo te sientes hoy?

Saludos


La franja horaria es GMT +2. Ahora son las 07:13:37.

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