Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-04-2004
Jose Manuel Jose Manuel is offline
Miembro
 
Registrado: may 2003
Posts: 112
Poder: 21
Jose Manuel Va por buen camino
Buscar texto indistintamente en Mayusculas o minusculas

Hola, quisiera saber como puedo indicar que en una busqueda de datos no distinga entre Mayúsculas o Minúsculas, en un campo Memo.

En el ejemplo siguiente trabaja bien con un campo texto como es "RESUMEN", pero como puedo hacer para que en el campo TEXTO que es un "memo", la busqueda de datos no distinta mayusculas o minusculas, ya que si pongo
fDatabase.q_pre.SQL.add('or UPPER(TEXTO) LIKE :buscar') me da un error del tipo Mismatch.

Estoy trabajando con Dbase, Delphi 6.

Un saludo
Jose Manuel
...................................................................................
procedure TfRegistro.buscar_por_textoClick(Sender: TObject);
var
aBuscar: string;
ClickedOK: Boolean;
begin
aBuscar := 'escriba texto a buscar';
ClickedOK := InputQuery('Texto a Buscar', 'texto:', aBuscar);
if ClickedOK then
begin
aBuscar:=UPPERCASE(aBuscar);
fDatabase.q_pre.active:=false;
fDatabase.q_pre.SQL.clear;
fDatabase.q_pre.SQL.add('Select * from PREGUNTA');
fDatabase.q_pre.SQL.add('where UPPER(RESUMEN) LIKE :buscar'); // BIEN
->fDatabase.q_pre.SQL.add('or TEXTO LIKE :buscar'); // <-- CAMPO MEMO
fDatabase.q_pre.SQL.add('order by ID');
fDatabase.q_pre.Params[0].AsString := '%'+abuscar+'%';
fDatabase.q_pre.active:=true;
end;
end;
Responder Con Cita
  #2  
Antiguo 23-04-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Bunas,

En primer lugar realizar una búsqueda por campo tipo memo no es de lo mas óptimo ni aconsejable.

Alguna solución sería castear (aunque no sé si el motor lo soporta) el campo y luego realizar la búsqueda donde deberías utilizar un uppercase tanto para el contenido del campo como para el parámetro que le estás pasando.

Hay otros métodos mucho más complejos de realizar este tipo de búsquedas que realmente bien utilizados dan extraordinarios resultados, pero son utilizados para desarrollos muy puntuales.

Debo indicar también que Dbase lo conozco muy por encima por lo que mis comentarios son de por sí vagos.
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #3  
Antiguo 24-04-2004
gendelphi gendelphi is offline
Miembro
 
Registrado: jul 2003
Ubicación: Tlaxcala Mexico
Posts: 73
Poder: 21
gendelphi Va por buen camino
Nunca lo he probado en DBase, pero en interbase/firebird si funciona:

Código:
SELECT *
FROM tabla
WHERE campo CONTAINING '%cadena%'
CONTAINING a diferencia de LIKE no es sensible a mayusculas y minusculas.
Responder Con Cita
  #4  
Antiguo 24-04-2004
Jose Manuel Jose Manuel is offline
Miembro
 
Registrado: may 2003
Posts: 112
Poder: 21
Jose Manuel Va por buen camino
Question

La instrucción CONTAINING parece que no esta soportada en Dbase.

De momento, he solucionado el problema con las siguientes instrucciones, no sé si habrá otra solución para buscar una "string" no sensible a Mayusculas o Minusculas en un campo memo, de una base de datos DBASE.

q_pre.SQL.add('Select * from PREGUNTA');
q_pre.SQL.add('where TIPO = :cTipo');
* q_pre.SQL.add('or TEXTO LIKE :buscar0'); // minusculas
* q_pre.SQL.add('or TEXTO LIKE :buscar1'); // mayusculas
* q_pre.SQL.add('or TEXTO LIKE :buscar2)');// la 1ª en Mayusculas

* q_pre.Params[0].AsString := '%'+UPPERCASE (Buscar.text) +'%';
* q_pre.Params[1].AsString := '%'+LOWERCASE(Buscar.text) +'%';
* q_pre.Params[2].AsString := '%'+UPPERCASE (copy(Buscar.text,1,1))+
LOWERCASE(copy(buscar.text,2,length(Buscar.text)))+'%';
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 19:31:22.


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