Foros Club Delphi

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

marcosmendozaa 31-10-2008 07:55:14

locate
 
Hola...yo de nuevo, ahora tengo una cuestion, tengo una tabla donde agrego informacion, y quiero hacer una busqueda sencilla para ello utilizo el comando locate (el campo a buscar es un string) y quisiera que no me diferenciara entre mayusculas y minusculas, es decir si en a tabla existe el registron "SISTEMAS" que si el usuario busca "sisTEMAS" lo detecte, tengo el siguente codigo:

Código Delphi [-]
if(dm.T_deptoimpre.Locate('nombre_departamento',edit1.Text,[]))then
            dm.T_deptoimpre.Locate('nombre_departamento',edit1.Text,[ ])
                else
                     showmessage('No hay impresoras en ese departamento')

el codigo va en un boton que busca lo que el usuario pone en un edit1

este codigo si e funciona muy bien pero diferencia mayusculas de minusculas, habra alguna forma de que no diferencie???? de antemano gracias.

ElKurgan 31-10-2008 08:47:55

Debes usar la opción "loCaseInsensitive" para que no diferencie entre mayúsculas y minúsculas, con lo que tu código quedaría asi:


Código:


Código Delphi [-]
 
if(dm.T_deptoimpre.Locate('nombre_departamento',edit1.Text,
  [loCaseInsensitive])) then
  dm.T_deptoimpre.Locate('nombre_departamento',edit1.Text,
    [loCaseInsensitive])
else
  showmessage('No hay impresoras en ese departamento')

Un saludo

Caro 31-10-2008 14:24:53

Hola marcosmendozaa, como te dice el amigo elkurgan, la opción que necesitas es loCaseInsensitive, en tu codigo no necesitas hacer doble vez el Locate, si el Locate te devuelve True es porque ya lo ha encontrado y se ha posicionado en ese registro.

Código Delphi [-]
if(dm.T_deptoimpre.Locate('nombre_departamento',edit1.Text,[]))then
 showmessage('Ha encontrado y se ha posicionado en el registro '+
                     dm.T_deptoimpre.FieldByName(nombre_departamento).AsString)
else
 showmessage('No hay impresoras en ese departamento');

También tienes la opción loPartialKey que te hace una busqueda aproximada.

Saluditos

marcosmendozaa 01-11-2008 00:46:40

ps muchas gracias por tu respuesta me parece muy logica, i ps asi puse el codigo

if(dm.T_deptoimpre.Locate('nombre_departamento',edit1.Text,
[loCaseInsensitive])) then
dm.T_deptoimpre.Locate('nombre_departamento',edit1.Text,
[loCaseInsensitive])
else
showmessage('No hay impresoras en ese departamento')


incluso lo intente con el lopartialkey

y no me funciona tampoco me marca error:

undeclared identifier: "loCaseInsensitive"
Incompatible types:'Tlocateoptions' and integer

Caro 01-11-2008 12:58:55

Cita:

Empezado por marcosmendozaa (Mensaje 323666)
undeclared identifier: "loCaseInsensitive"
Incompatible types:'Tlocateoptions' and integer

Hola de nuevo, debes añadir la unit BD en el uses de tu unidad y te repito, no necesitas el Locate que esta dentro del If, es suficiente con el que estas haciendo la condición.

Saluditos

xion 29-05-2014 19:23:46

Db
 
en la DB no BD por si acaso


Cita:

Empezado por Caro (Mensaje 323694)
Hola de nuevo, debes añadir la unit BD en el uses de tu unidad y te repito, no necesitas el Locate que esta dentro del If, es suficiente con el que estas haciendo la condición.

Saluditos


Casimiro Notevi 29-05-2014 23:37:07

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)


Cita:

Empezado por xion (Mensaje 476987)
en la DB no BD por si acaso

En español, Base de Datos, será BD


La franja horaria es GMT +2. Ahora son las 05:50:34.

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