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 31-05-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Busqueda en un edit que no contemple acentos

Uf cosa complicada el título, no sabia que poner.

En fin al grano que es lo que vale.

Uso Delphi 6 y Firebird 1.5.

Tengo una base de datos a la que le he cambiado el character set de win1252 a ISO8859_1 collate ES_ES ya que con la codificación anterior si una palabra iba acentuada, en la ordenación de un grid no me respetaba y me colocaba la palabra por ejemplo 'Àger' como la última de la lista.

Bueno pues eso se solucionó con el cambio de character set, ahora funciona bien.

Pero mi duda es la siguiente:

Puedo hacer que cuando haga la búsqueda por el campo en cuestión no controle los posibles acentos?, es decir si yo escribo en el edit de búsqueda 'Ag' me encuentre igual que si busco por 'Àg'.

La consulta de búsqueda que uso es la siguiente:

Código SQL [-]
 
OrdenarGrid.SQL.Add('select * from BOM0003 where upper('+ComboBox1.Text+') like ''%'+AnsiUpperCase(Edit1.Text)+'%''');
OrdenarGrid.SQL.Add('order by '+Combobox1.text+'');

Muchas gracias y saludos a todos
Responder Con Cita
  #2  
Antiguo 31-05-2011
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Parece que tienes un nuevo collate (cotejamiento de caracteres) que sí permite eso: ISO8859_1 ES_ES_CI_AI en FB 2.0 ¿es posible actualizar?

http://www.firebirdsql.org/refdocs/l...ollations.html

Otra cosa que se me ocurre, es crear uno o dos campos computed con el nombre y apellidos sin acentos y en mayúsculas, así siempre puedes hacer la comparación o búsqueda sin acentos y sin distinción de mayúsculas.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 02-06-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias Lepe.

No puedo actualizar a 2.0 o superior ya que en el trabajo tengo el programa de gestión trabajando bajo 1.5 y si en mi ordenador de casa le pongo el 2.0 cuando me traiga la base al curro no funcionará.

Otra cosa sería poder tener dos motores Firebird distintos a la vez pero no se puede.

No se, yo pensaba en si existia algo parecido al uppercase que me hiciera esto.

Por cierto pase de win1252 a ISO8859_1 con el IBExpert, fue un poco laborioso el regenerar el script para cambiar los campos, aunque el resultado fue muy satisfactorio. A partir de ya solo usaré ISO8859_1 en mis campos varchar.

Saludos
Responder Con Cita
  #4  
Antiguo 02-06-2011
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Pues lo que queda no me gusta, pero es una alternativa.

Lo mismo de antes pero en el after_update/insert, creas un trigger y allí intentas buscas "Á" y lo sustituyes por "A" en otro campo computed. Supongo tendrías que instalar las FreeUDF o las de FB/IB para usar funciones más cómodas (leftstr, padstr, substr, etc).

Claro, el problema es que al buscar tendrás que hacerlo por otro campo


Otra solución, hacer una UDF tú, en una DLL y así te creas la función que quieras. El tema estaría en la lentitud... a ver si te puedo hacer una prueba porque ando con eso de las UDF en DLL ahora mismo...


Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 02-06-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias Lepe, no he creado nunca una DLL, si me pasas un ejemplo me harás un gran favor.

Tambien debo decirte que la lista de busqueda no es nada extensa, tiene solo unos 100 registros por lo que la lentitud no creo que afecte demasiado y esta tabla no crecerá más (en el concepto de crisis actual ya que es el listado de parques de bomberos de Catalunya y no creo que la Generalitat cree de nuevos)

Saludos.
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
Buscar palabras que contengan acentos sin ponerle el acento en la búsqueda. Firibiri Firebird e Interbase 3 21-04-2008 10:44:27
acentos y php reevil PHP 3 24-01-2008 11:53:41
busqueda en tabla con edit y un dbcombobox memox Tablas planas 6 05-08-2007 02:09:54
Acentos micayael Firebird e Interbase 5 28-09-2005 19:51:02
UDF que quite acentos gendelphi Firebird e Interbase 1 28-02-2004 04:26:41


La franja horaria es GMT +2. Ahora son las 03:56:47.


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