Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   no me funciona "Filter" en una consulta SQL (https://www.clubdelphi.com/foros/showthread.php?t=79406)

darkbits 02-07-2012 21:45:23

no me funciona "Filter" en una consulta SQL
 
un saludo al club toy trabajando en ID D6 + Interbase 6

ejecuto mi sql y los datos me muestra en un DBGrid1 hasta ahi todo bien

Código SQL [-]
 _DM.consulta3.SQL.Text:='SELECT * FROM ventas WHERE tipo_ventas=''CONTADO'' ORDER BY id_ventas ASC';
 _DM.consulta3.open;

luego tengo un Tedit llamado buscar.text para typear de acuerdo a lo que quiero buscar y que filtre y esto es lo que no me funciona.
NO me filtra nada y tampoco me da error.

hice la prueba en vez de utilizar _DM.consulta3 utilizo un _DM.table3 y si filtra perfectamente la tabla pero el SQL no me filtra
utilizo _DM.consulta3 porque tiene condicion WHERE tipo_ventas=''CONTADO''


Código Delphi [-]
var
   Filtroventas: String;
begin
   If (buscar.Text <> '') then
   begin
      _DM.consulta3.Filtered := False;
       Filtroventas := 'cliente_ventas Like ''%'+ buscar.Text + '%'''+' or '+'operador_ventas like ''%'+ buscar.Text + '%''' ;
      _DM.consulta3.Filter := Filtroventas;
      _DM.consulta3.Filtered := True
   end
   else _DM.consulta3.Filtered := False;


eh utilizado _DM.consulta3 con LIKE funciona pero no respeta la condicion WHERE tipo_ventas Like ''Contado''
Código SQL [-]
  _DM.consulta3.Close;
  _DM.consulta3.SQL.Text:= 'SELECT * FROM ventas WHERE tipo_ventas Like ''Contado'' and cliente_ventas Like ''%'+ buscar.Text + '%'''+' or '+'operador_ventas like ''%'+ buscar.Text + '%''';
  _DM.consulta3.Open;

por eso veo la mejor opcion es hacer funcionar la SQL con FILTER
y es ahi donde pido ayuda al foro para que me funcione

gracias

ecfisa 02-07-2012 22:11:33

Hola darkbits.

Según creo entender, la condición de la consulta que buscas es: tipo_ventas = 'CONTADO' Y ( clientes_venta LIKE ... O operador_ventas LIKE...).

Si es así, podes hacer:
Código Delphi [-]
  with consulta3 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM VENTAS');
    SQL.Add(' WHERE TIPO_VENTAS = :P1');
    SQL.Add(' AND (CLIENTE_VENTAS LIKE :P2 OR OPERADOR_VENTAS LIKE :P2)');
    ParamByName('P1').AsString:= 'CONTADO';
    ParamByName('P2').AsString:= buscar.Text+'%';
    Open;
  end;

Saludos.

darkbits 03-07-2012 00:59:11

Si funciona perfectamente
unico detalle solo me deja escribir 16 letras

y cuando utilizo FILTER me deja escribir mas

mi consulta es se puede hacer FILTER a un SQL como ?

gracias

ecfisa 03-07-2012 05:45:13

Cita:

Empezado por darkbits (Mensaje 436568)
Si funciona perfectamente unico detalle solo me deja escribir 16 letras

Hola darkbits.

Si sólo te permite escribir 16 caracteres, tenes que incrementar el valor de la propiedad MaxLength del TEdit o TDBEdit llamado "buscar" sin exceder el tamaño asignado en la creación del campo .

Saludos.


La franja horaria es GMT +2. Ahora son las 17:06:55.

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