Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-01-2004
Tomás Tomás is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 140
Poder: 23
Tomás Va por buen camino
UPPER, UpperCase con eñes, tildes ...

Hola:

Tengo esta consulta en una tabla InterBase (Caracter Set ISO8859_1, Collate ES_ES)

sNom := '%'+Trim(eNombre.Text)+'%';
sApe := '%'+Trim(eApellidos.Text)+'%';
DM.IBDSNada.SelectSQL.Text := 'SELECT * FROM NADADORES where UPPER(APELLIDOS) LIKE UPPER('+QuotedStr(sApe)+') AND UPPER(NOMBRE) LIKE UPPER('+QuotedStr(sNom)+') order by APELLIDOS, NOMBRE';

Funciona bien excepto cuando hay alguna ñ, ç o vocal con tilde que no las transforma a mayúsculas.
Supongo que pasará lo mismo con LOWER.

¿Cómo se puede solucionar esto?

Un saludo. Tomás.

P.D.
Tampoco la función UpperCase las transforma.
Responder Con Cita
  #2  
Antiguo 14-01-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.955
Poder: 28
delphi.com.ar Va camino a la fama
Yo me he armado estas dos funciones basadas en las de Delphi, no se si en las últimas versiones, con la aparición de StrUtils ha aparecido algo similar
Código:
function UCase(const S: string): string;
var
  Ch: Char;
  L: Integer;
  Source, Dest: PChar;
begin
  L := Length(S);
  SetLength(Result, L);
  Source := Pointer(S);
  Dest := Pointer(Result);
  while L <> 0 do begin
    Ch := Source^;
    if ((Ch >= 'a') and (Ch <= 'z')) or ((Ch >= 'à') and (Ch <= 'þ')) then Dec(Ch, 32);
    Dest^ := Ch;
    Inc(Source);
    Inc(Dest);
    Dec(L);
  end;
end;

function LCase(const S: string): string;
var
  Ch: Char;
  L: Integer;
  Source, Dest: PChar;
begin
  L := Length(S);
  SetLength(Result, L);
  Source := Pointer(S);
  Dest := Pointer(Result);
  while L <> 0 do
  begin
    Ch := Source^;
    if ((Ch >= 'A') and (Ch <= 'Z')) or ((Ch >= 'À') and (Ch <= 'Þ')) then Inc(Ch, 32);
    Dest^ := Ch;
    Inc(Source);
    Inc(Dest);
    Dec(L);
  end;
end;
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 14-01-2004
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 22
Julià T. Va por buen camino
existe una función de ls unidad sysutils para realizar dicha tarea:

Ansiuppercase

ignoro a partir de que version se introdujo
Responder Con Cita
  #4  
Antiguo 15-01-2004
Tomás Tomás is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 140
Poder: 23
Tomás Va por buen camino
Muchas gracias a los dos por vuestra ayuda. Voy a ponerme manos a la obra.

Un saludo. Tomás.
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


La franja horaria es GMT +2. Ahora son las 00:20:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi