Ver Mensaje Individual
  #7  
Antiguo 06-09-2012
wull wull is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 30
Reputación: 0
wull Va por buen camino
Thumbs up

Hola de nuevo, antes que otra cosa quiero darles las gracias a todos por sus sugerencias... leí sus comentarios, ya he probado algunas de ellas, les comento lo siguiente:

Empezare por roman: Lo siento trate de explicarme lo mejor que pude, la verdad si estaba algo confuso... mil disculpas.

[Caral]: probe tu solución y me paso lo siguiente: cuando no estaba seleccionado ningun item me mandaba el mensaje pero
tenia que confirmar dos veces (segun yo esto se debe a que es un ciclo for y debe repetirse dos veces antes de terminar)
y tambien me mandaba el error que dice caral cuando solo seleccionaba el item de uno de los dos RadioGroup.

Cita:
Y funcionaría correctamente... de no ser por un detalle: Si hay selección solamente en un RadioGroup, vas a obtener una excepción que se producirá en la línea:
Código Delphi [-]
Parameters.ParamByName('PANIO').Value := RadioGroup1.Items[RadioGroup1.ItemIndex];
Cuando el usuario haya seleccionado un item de RadioGroup2 o en la línea:

Código Delphi [-]
Parameters.ParamByName('PMES').Value := RadioGroup2.Items[RadioGroup2.ItemIndex];
Cuando lo haya echo en el RadioGroup1.


¿ Por que digo esto ?, por que en algun punto estarías haciendo lo mismo que:

Código Delphi [-]
Parameters.ParamByName('PXXX').Value := RadioGroupN.Items[-1]; // Error!!! índice fuera de rango
cloayza: segun yo tu respuesta es muy buena, pero la verdad es demasiado para mi, me perdi en muchas partes del codigo, por lo cual no pude probar con tu propuesta

Asi que despues de leer detenidamente sus mensajes opte por seguir el consejo de ecfisa, (con una pequeña variación) con todo y su advertencia
Cita:
Hola de nuevo.

Para no dejarte así, sin nada te pongo una opción que dada la hora y el estado de mis neuronas, no creo sea la mejor.
Ya habia pensado en algo asi, pero sin duda sus consejos me aclararon mucho el panorama.
El siguiente es el codigo que me ha ayudado ya lo he probado y funciona, aunque como dice ecfisa no es lo mejor.

Código Delphi [-]
if (RadioGroup1.ItemIndex >-1) and (RadioGroup2.ItemIndex >-1) then
      begin
       with ADOQuery1 do
        begin
        Close;
        SQL.Text:= 'SELECT * FROM MITABLA WHERE AÑO = :PANIO AND MES=:PMES';
        Parameters.ParamByName('PANIO').Value:=RadioGroup1.Items[RadioGroup1.ItemIndex];
        Parameters.ParamByName('PMES').Value:=RadioGroup2.Items[RadioGroup2.ItemIndex];
        Open;
        end;// fin de with
       Myreport.ShowReport(true);
      end
   else
    if (RadioGroup1.ItemIndex > -1) then
       begin
        with ADOQuery1 do
        begin
        Close;
        SQL.Text:= 'SELECT * FROM MITABLA WHERE AÑO = :PANIO';
        Parameters.ParamByName('PANIO').Value:=RadioGroup1.Items[RadioGroup1.ItemIndex];
        //Parameters.ParamByName('PMES').Value:=RadioGroup2.Items[RadioGroup2.ItemIndex];
        Open;
        end;// fin de with
        Myreport.ShowReport(true);
       end
        else
         if (RadioGroup2.ItemIndex > -1) then
           begin
             with ADOQuery1 do
              begin
              Close;
              SQL.Text:= 'SELECT * FROM MITABLA WHERE MES =:PMES';
              //Parameters.ParamByName('PANIO').Value:=RadioGroup1.Items[RadioGroup1.ItemIndex];
              Parameters.ParamByName('PMES').Value:=RadioGroup2.Items[RadioGroup2.ItemIndex];
              Open;
              end;// fin de with
           Myreport.ShowReport(true);
           end
            else
            showmessage ('Debe elegir al menos un parametro para el reporte');
Con esto me ha funcionado muy bien, aunque no es muy presentable me va perfecto para lo que quiero lograr... gracias de nuevo a todos por su ayuda.

P.D.Después de tantas preguntas que he hecho, me surge una más ¿ habra algo que no puedan resolver? jjajaja
Responder Con Cita