Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pregunta sobre la funcion LOCATE()? (https://www.clubdelphi.com/foros/showthread.php?t=28321)

Luis Alberto 15-12-2005 19:14:36

Pregunta sobre la funcion LOCATE()?
 
Que tal a todos...


Mi detalle es que cuando busco un dato con la intruccion LOCATE () pasa algo curioso :

Dataset.Locate('NOPARTE',(Dato buscado por query), [loCaseInsensitive ]);

Este me buscara en el dato esacto al que traiga el query. todo esta bien pero como le digo a dicha intruccion que verifique las mayusculas..por que resulta que en la BD tengo el registro 0125a-569 y cuando lo tengo modiico algo es esta todo bien...

Pero desbues busca este numer 0125A-569 si nos fijamos es diferente por al maayusculas en la BD no existe yo quiero que lo agregue no que me lo modifique pero como no distingue la mayuscula de la A-a por eso

Espero me haya explicado


Saludos...

samantha jones 15-12-2005 19:21:15

pues... quitale el locaseinsensitive no?

Luis Alberto 15-12-2005 19:55:57

No se puede tiene que llevar un parametro de ese tipo

Luis Alberto 15-12-2005 20:03:06

Quien sabe si tienen o existe la funcion de que me diga si es mayusculas o minusculas podria ayudarme...?

jachguate 15-12-2005 21:25:37

Esto no es dificil de lograr:

Código Delphi [-]
function EsMayuscula(const s : string) : boolean;
//por jachguate
//jachguate at yahoo.com
var
  i : integer;
begin
  result := true;
  for i := 1 to length(s) do
    if s[i] <> upper(s[i]) then
    begin
      result := false;
      break;
    end;
end;

Tiene el "inconveniente" que te devolverá true si preguntas por EsMayusculas(''), lo cual ni es cierto ni deja de serlo. Te dejo la tarea de especializarla para cambiar este comportamiento si queres que sea diferente.

Hasta luego.

;)

Migpal 15-12-2005 21:40:38

Yo volveria los dos datos a un tipo:

1) en el select de la consulta hago el upper, select upper(campo1)

2) en el locate pongo locate('campo1',upper(text),[]);

el lopartial funciona como un like, si no le pones nada si te trae el dato exacto.

fidel 16-12-2005 00:02:55

Hola.

Haz lo que te indica Samantha Jones quita iocaseinsensitive:

En vez de esto
Dataset.Locate('NOPARTE',(Dato buscado por query), [loCaseInsensitive ]);

pon esto
Dataset.Locate('NOPARTE',(Dato buscado por query), []);

Un saludo.


La franja horaria es GMT +2. Ahora son las 21:56:58.

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