Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Operacion Not applicable (https://www.clubdelphi.com/foros/showthread.php?t=78514)

Yun-i 25-04-2012 20:20:00

Operacion Not applicable
 
que tal foristas gracias por leer mis post.

mi problema es el siguiente:

estoy trabajando con Delphi 7 (viejisimo lo sé) me pidieron hacer unos cambios, bueno instale delphi 7 en mi pc con
win 7 32 bits estoy tratando de hacer un filtro de un query con conponentes bde la base de datos esta en MySQL y tengo llego aella por un ODBC

Código Delphi [-]
Query1.Filter:='snombre_evento LIKE '+#39+'%'+EditBusca.Text+'%'+#39; Query1.Filtered:=TRUE;

me dice que es una operacion no aplicable, podrian ayudarme con este tema.

desde ya muchas gracias :) saludos a todos

ecfisa 25-04-2012 20:52:18

Hola Yun-i.

Probá de este modo:
Código Delphi [-]
  with Query1 do
  begin
    Filtered:= False;
    Filter:= 'SNOMBRE_EVENTO = '+ QuotedStr(EditBusca.Text + '*');
    Filtered:= True;
  end;

Pero si buscas cualquier ocurrencia, quizá te convenga:
Código Delphi [-]
  with Query1 do
  begin
    Close;
    SQL.Text:= 'SELECT * FROM TU_TABLA WHERE SNOMBRE_EVENTO LIKE :VALOR';
    ParamByName('VALOR').AsString:= '%' + EditBusca.Text + '%';
    Open;
  end;

Saludos.

Yun-i 25-04-2012 21:25:14

:D:D:D:D:D:D

Muchas Gracias ecfisa, las dos funcionan, nadamas que lo que quiero es que tambien filter no solo si la cadena esta en el inicio.
una pregunta es posible agregar un 'locaseinsensitive' o algo asi?


Muchaas gracias
Saludos Cordiales.

ecfisa 25-04-2012 21:49:57

Hola Yun-i.

Mediante la propiedad Filter creo que no funciona con un comodín al principio.
Pero tál como está en el segundo ejemplo, toma el comodín tanto al inicio como del final del texto buscado. Como un ejemplo, si en EditBusca escribes "ro", te mostraría las siguientes ocurrencias:
Código:

arropar
promoción
toro
tronco

Saludos.

AzidRain 25-04-2012 22:54:29

Tienes que hacer el filtro directamente en el query que mandas a MySQL es más eficiente y rápido ya que solo traes del servidor los datos sobre los que vas a trabajar, de otra forma siempre traeras toda la tabla para luego hacer el filtro localmente.

Yun-i 25-04-2012 22:58:05

Gracias
 
si, gracias [AzidRain] y ecfisa mejor hice el query como me lo recomendaron, asi quedo:

Código Delphi [-]
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add(' SELECT e.nid_evento, e.sclave, e.snombre_evento, te.stipo_eventos, e.slugar, e.dfecha_inicio, cl.srazon_social, c.snombre_contacto');
  Query1.SQL.Add(' FROM eventos e INNER JOIN clientes cl ON e.nid_cliente = cl.nid_cliente LEFT JOIN tipo_eventos te ON e.nid_tipo_evento = te.nid_tipo_evento');
  Query1.SQL.Add(' LEFT JOIN clientes_contactos cc ON cl.nid_cliente = cc.nid_cliente  LEFT JOIN contactos c ON c.nid_contacto = cc.nid_contacto ');
  Query1.SQL.Add(' LEFT JOIN medios_contacto mco ON c.nid_contacto = mco.nid_contacto LEFT JOIN medios_comunicacion mec ON mec.nid_medio_comunicacion = mco.nid_medio_comunicacion');
  Query1.SQL.Add(' WHERE e.nstatus = 3 OR e.nstatus = 1 and SNOMBRE_EVENTO like' +#39+'%'+Trim(EditBusca.Text)+'%'+#39);

GRacias por su ayuda. Saludoss :)


La franja horaria es GMT +2. Ahora son las 09:48:54.

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