Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con Locate (https://www.clubdelphi.com/foros/showthread.php?t=31735)

jmlifi 16-05-2006 16:30:03

Problemas con Locate
 
tengo lo siguente, pero nunca cumpre la condición:
Código Delphi [-]
if Pedidos.Locate('cant',0,[]) then
              .....
            end

Donde existe un campo "cant" de tipo integer en el ClientDataset.

¿como puedo saber si hay algún valor 0 dentro del campo "cant"?

noshy 16-05-2006 16:34:55

Proba con esto
Esto busca dentro del registro y dentro del campo:

Código Delphi [-]
if pos('0',Query1['cant']) > 0 then
  //hay cero
else
  //no hay cero

Ahora si queres buscar en la tabla completa proba con esto

Código Delphi [-]
if Pedidos.Locate('cant','0',[loCaseInsensitive]) then

jmlifi 16-05-2006 16:54:44

¿Cómo puedo evitar que no falle si tengo valores NULL?

noshy 16-05-2006 16:58:26

El tema es que en una tabla no deberia tener valores nulos, en todo caso en el campo ponele como defecto el valor '0' (cero) para que no genere un null, si no vas a tener que realizar dos busquedas, una para '0' y otra para null.

jmlifi 16-05-2006 17:10:18

Código Delphi [-]
if Pedidos.Locate('cant','0',[loCaseInsensitive]) then

No va, no cumple la condición.

noshy 16-05-2006 17:21:35

en la ayuda de Delphi encontre esto:

"or if the KeyFields property does not include any string fields, Options is ignored."

o sea que si el campo no es string no se cumple la funcion. Lo lamento pero en campos Integer no funciona, vas a tener que hacer una busqueda manual.

Colgueit 16-05-2006 21:20:54

Pues a mi con campos integer si me funciona, poniendo el 0 entre comillas ya que solo busca cadenas y sin ninguna condicion entre corchetes, con loCaseInsensitive logicamente da error, es un numero...
Código Delphi [-]
if Pedidos.Locate('Cant','0',[]) then
     .......
end;

Lepe 16-05-2006 21:26:33

Esto si me funciona:

Código Delphi [-]
    if  dtm.TblClientes.Locate('CodigoCliente', IntToStr(edbuscacliente.Value), [loPartialKey]) then

El truco como ves, es pasarle un string en lugar del valor entero. Creo que el lopartialkey no furula... pero no lo he quitado del código :D

EDITO: Vaya.... se me adelantó Colgueit ;)

Saludos

Colgueit 16-05-2006 21:31:11

jaja si!.

Solo aclarar el LoPartialKey, si lo pones buscas todos las cadenas que empiezen por la buscada, es decir, que si pones Pedidos.Locate('Cant','0',[LoPartialKey]), Buscara en pedidos todos los numeros en el Registro Cant que empiezen por 0, es decir, por ejemplo el 09789, el 06, etc..

Un Saludo


La franja horaria es GMT +2. Ahora son las 20:15:22.

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