Cita:
Empezado por bucanero
hola
yo para este tipo de consultas con filtros estáticos utilizo una estructura fija de SELECT (sin necesidad de cambiar o ajustar el SQL en runtime) como esta:
Código SQL [-]SELECT MARCA,CODIGO,FORMULA,NUMERO,DESCRI,CODIGOI FROM INVENTA WHERE (:minLargo is null or :minLargo <= m1) and (:maxLargo is null or m1 <= :maxLargo ) and (:minAncho is null or :minAncho <= m2) and (:maxAncho is null or m2 <= :maxAncho ) and (:minAlto is null or :minAlto <= m4) and (:maxAlto is null or m4 <= :maxAlto ) -- and -- resto de opciones --
y los parámetros los cargo de la siguiente forma:
Código Delphi [-]procedure TForm2.FILTROPBeforeOpen(DataSet: TDataSet); procedure SetParamsAsInt(AParam: TParam; AEdit: TEdit); var AValue:integer; begin if (AEdit.Text = '') or not TryStrToInt(AEdit.text, AValue) then AParam.Clear else AParam.AsInteger:=AValue; end; begin with filtroP, Params do begin SetParamsAsCurr(ParamByName('minLargo'), Edit1); SetParamsAsCurr(ParamByName('maxLargo'), Edit2); SetParamsAsInt(ParamByName('minAncho'), Edit3); SetParamsAsInt(ParamByName('maxAncho'), Edit4); SetParamsAsInt(ParamByName('minAlto'), Edit5); SetParamsAsInt(ParamByName('maxAlto'), Edit6); end; end;
De tal forma que si el usuario no rellena alguno de los campos de busqueda, ese campo se queda sin efecto
|
no logro hacer funcionar este ejemplo
al compilar dice este error
[DCC Error] Busquedaavanzada.pas(286): E2003 Undeclared identifier: 'param'
[DCC Error] Busquedaavanzada.pas(290): E2003 Undeclared identifier: 'ParamByName'
y ya le cambie todos lo que se me pudo ocurrir utilizo delphi 2010