Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-05-2006
jmlifi jmlifi is offline
Miembro
 
Registrado: abr 2005
Posts: 188
Poder: 20
jmlifi Va por buen camino
Thumbs down 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"?
Responder Con Cita
  #2  
Antiguo 16-05-2006
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
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
__________________
\_--> NoShY <--_/

Última edición por noshy fecha: 16-05-2006 a las 16:48:11.
Responder Con Cita
  #3  
Antiguo 16-05-2006
jmlifi jmlifi is offline
Miembro
 
Registrado: abr 2005
Posts: 188
Poder: 20
jmlifi Va por buen camino
¿Cómo puedo evitar que no falle si tengo valores NULL?
Responder Con Cita
  #4  
Antiguo 16-05-2006
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
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.
__________________
\_--> NoShY <--_/
Responder Con Cita
  #5  
Antiguo 16-05-2006
jmlifi jmlifi is offline
Miembro
 
Registrado: abr 2005
Posts: 188
Poder: 20
jmlifi Va por buen camino
Código Delphi [-]
if Pedidos.Locate('cant','0',[loCaseInsensitive]) then

No va, no cumple la condición.
Responder Con Cita
  #6  
Antiguo 16-05-2006
Avatar de noshy
noshy noshy is offline
Miembro
 
Registrado: jul 2003
Posts: 139
Poder: 21
noshy Va por buen camino
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.
__________________
\_--> NoShY <--_/
Responder Con Cita
  #7  
Antiguo 16-05-2006
Avatar de Colgueit
Colgueit Colgueit is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lanzarote, España
Posts: 91
Poder: 19
Colgueit Va por buen camino
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;

Última edición por Colgueit fecha: 16-05-2006 a las 21:26:12.
Responder Con Cita
  #8  
Antiguo 16-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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

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

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #9  
Antiguo 16-05-2006
Avatar de Colgueit
Colgueit Colgueit is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lanzarote, España
Posts: 91
Poder: 19
Colgueit Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problemas con locate halizia Conexión con bases de datos 3 10-04-2006 08:29:14
Problemas con Locate Acker Tablas planas 12 05-08-2005 15:47:46
Problemas con locate Ivanzinho Firebird e Interbase 0 03-05-2005 17:45:57
problemas con locate maui Conexión con bases de datos 19 19-06-2004 07:53:57
Problemas Con Locate gzerox Firebird e Interbase 4 20-05-2004 10:06:14


La franja horaria es GMT +2. Ahora son las 08:28:46.


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
Copyright 1996-2007 Club Delphi