FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
existe una función de ls unidad sysutils para realizar dicha tarea:
Ansiuppercase ignoro a partir de que version se introdujo |
#4
|
|||
|
|||
Muchas gracias a los dos por vuestra ayuda. Voy a ponerme manos a la obra.
Un saludo. Tomás. |
|
|
|