Cita:
Empezado por Al González
Código Delphi [-]CDS.Filter := CDS.Filter + ' and ...';
Por cierto, intenta evitar el uso de With. Es como Facebook: en principio parece algo bueno, pero es el mismísimo Diablo.
Saludos.
|
De acuerdo con Al. el código debería ser algo como:
Código Delphi
[-]Filtered:=False;
Filter:='';
if form3.ENOMBRE.Text<>'' then
Filter:= Filter +Ifthen(Filter='','',' and ')+'nombre like '+QuotedStr('%' + Form3.ENOMBRE.Text+'%');
if Form3.DBLCBCATEGORIA.KeyValue<>null then
Filter:= Filter +Ifthen(Filter='','',' and ')+'idcategoria=' + IntToStr( form3.DBLCBCATEGORIA.KeyValue) ;
if Form3.DBLCBMARCA.KeyValue<>null then
Filter:= Filter +Ifthen(Filter='','',' and ')+'idmarca='+ Inttostr(Form3.DBLCBMARCA.KeyValue);
Filtered:=True;
La función
Ifthen la encuentras en: StrUtils, si el resultado es texto y en Math si el resultado es numérico (!!??)
Existe otra alternativay es programar el evento OnFilterRecord del Dataste. Ésta se utiliza cuando la condición es mas complicada, por ejemplo:
Código Delphi
[-]procedure DTM.QueryFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept:= (CumpleCondicion1(Parametros) and (Random(100) > 50) ) or (Nombre<>'');
end;
y el código para filtrar sería:
Código Delphi
[-]CDS.Filtered:= False;
CDS.Filtered:= True;