Ver Mensaje Individual
  #5  
Antiguo 07-06-2019
ralf8727 ralf8727 is offline
Miembro
 
Registrado: may 2015
Posts: 22
Reputación: 0
ralf8727 Va por buen camino
Cita:
Empezado por bucanero Ver Mensaje
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
Responder Con Cita