Hola a todos de nuevo; según yo estaba a punto de terminar un pequeño proyecto pero descubrí un error, que después de varias pruebas pude identificar pero no halle solución. Estoy tratando de hacer una reporte con varias parámetros, uso adoquery y varios radiogroup para obtener de ahí los parámetros.
Estoy tratando con este codigo
Código Delphi
[-] if ((RGanio.ItemIndex >-1) and (RGmes.ItemIndex >-1) and (RGstatus.ItemIndex >-1) and (RGregion.ItemIndex >-1)) then
begin
with Myquery do
begin
Close;
SQL.Text:= 'SELECT * FROM DATOS WHERE ANIORECEP=:PANIO AND MESRECEP=:PMES AND STATUS=:PSTATUS AND REGION=:PREGION';
Parameters.ParamByName('PANIO').Value:=RGanio.Items[RGanio.ItemIndex];
Parameters.ParamByName('PMES').Value:=RGmes.Items[RGmes.ItemIndex];
Parameters.ParamByName('PSTATUS').Value:=RGstatus.Items[RGstatus.ItemIndex];
Parameters.ParamByName('PREGION').Value:=RGregion.Items[RGregion.ItemIndex];
Open;
end; Myreport.ShowReport(True);
end;
El error, que segun yo, detecte es que el reporte me muestra datos erroneos porque solo esta tomando en cuenta el primer dato, es decir si selecciono año: 2012, mes: enero, status: on region: centro, lo que seri equivalente a decir en SQL algo asi
Código SQL
[-]slect * from mitabla where anio=2012 and mes=enero and status = on and region=centro
la cosa es que cuando el año cumple la condición ya no toma en cuenta las otras condiciones, es decir mientras el año sea 2012 me muestra todos los datos aunque no coincida con lo que estoy pidiendo; pero cuando el valor año no cumple la condición no me muestra nada; no entiendo porque me esta haciendo esto; no se si es problema del if o de SQL.. espero que me entiendan y me puedan ayudar.