Ver Mensaje Individual
  #9  
Antiguo 25-07-2024
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 638
Reputación: 22
mRoman Va por buen camino
Cita:
Empezado por GINMARMENOR Ver Mensaje
Buenas de nuevo, y gracias en serio.

La siguiente secuencia funciona BIEN que es la que MRoman, por un lapsus dije no.

Código SQL [-]
          select * motivos where año IN (1925,1955);

Pero el texto completo es el siguiente que no lo puse por simplificar:

Código SQL [-]
           ibQueryMotivos.close;
           IbQueryMotivos.Clear;
           IbQueryMotivos.text:='select * motivos where año IN (1925,1955)';
           IbQueryMotivos.open;

Con esto puedo meter los datos filtrados en un dbgrid, stringGrid, Rave Reports, etc etc sin problemas pero al estar en unas comillas sólo puedo elegir los años (1925, 1955, etc.etc) en modo diseño y no en modo ejecucion, lo que necesitaría es meter los años en un Listbox, en una Variable u otro contenedor, y de ahí diseñar el Query para que sólo salgan los años que necesito.
Hola...una observación: En la propiedad TEXT del "ibQuery", no te hace falta "FROM" en la sentencia SELECT??... "select * FROM motivos..." y otra obervación, el campo AÑO te permite la "Ñ"??...la verdad nunca he usado la Ñ en los campos que creo en Firebird, no sé si lo permita. En realidad los declaro -en el caso del año- como ANIO.

Ahora, creo que el componente del IBQuery, quedaría asi:

Código Delphi [-]
IBQueryMotivos.SQL.Clear;
IBQueryMotivos.SQL.Add('select * from motivos where año in '+ANIOS2);
IBQueryMotivos.Open;

Para cuando se ejecute las instrucciones anteriores, ya deberá traer datos la variable ANIOS2:
Código:
 (1973,1910,1917)
Concatenando los paréntesis al inicio y al final de la cadena, que también deberas inlcuir en la cadena la coma "," para separar un año del otro

Te envío un ejemplo de como lo uso
Código Delphi [-]
              aQrySic.SQL.LoadFromFile(ExtractFilePath(Application.ExeName)+'\SQLS\SCA_SOME_PROMOTORES.SQL');
              aQrySic.SQL.Add('    and pmt_numero in '+cPromotor);
              aQrySic.SQL.Add(' order by lec_numero, numero_tarjeta');
              aQrySic.Open;

Aqui lleno la variable "cPromotor" con las claves de algunos promotores que el usuario ha seleccionado:

Código Delphi [-]
              2: begin // SELECCIONA ALGUNOS PROMOTORES
                    qryLecherias.DisableControls;
                    BM:=qryLecherias.Bookmark;
                    try
                        with dbgLecherias.DataSource.DataSet do
                        for i:=0 to dbgLecherias.SelectedRows.Count-1 do
                        begin
                           qryLecherias.Bookmark:=dbgLecherias.SelectedRows.Items[i];
                           cPromotor:=cPromotor+qryLecherias.fieldbyname('DATO1').AsString;
                            if i<>dbgLecherias.SelectedRows.Count-1 then
                            begin
                               cPromotor:=cPromotor+',';
                            end;
                        end;
                    finally
                        qryLecherias.Bookmark:=BM;
                        qryLecherias.EnableControls;
                    end;
                    if cPromotor<>'' then
                    begin
                        cPromotor:='('+cPromotor+')';
                        aQrySic.SQL.Clear;
                        aQrySic.SQL.LoadFromFile(ExtractFilePath(Application.ExeName)+'\SQLS\SCA_SOME_PROMOTORES.SQL');
                        aQrySic.SQL.Add('    and pmt_numero in '+cPromotor);
                        aQrySic.SQL.Add(' order by lec_numero, numero_tarjeta');
                    end;
                 end;

Usé la sentencia CASE en programación para seleccionar la opción 0,1 o 2 de un combo que el usuario selecciona para saber que tipo de procesamiento se va a realizar, estos serían los ITEMS del combo:

Código:
Todas las lecherias todos los promotores
Algunas Lecherias
Algunos promotores social
Espero te sirva esta orientación.

Saludos.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 25-07-2024 a las 18:59:51.
Responder Con Cita