Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Adicionar parámetros en consultas creadas por código (https://www.clubdelphi.com/foros/showthread.php?t=69197)

GerTorresM 01-08-2010 18:41:10

Adicionar parámetros en consultas creadas por código
 
Hola a tod@s

la situación que se me presenta en el día de hoy es la siguiente:

estoy creando mediante código una consulta, a la cual le deseo adicionar una parámetros para el caso todos son de tipo Integer

Código Delphi [-]
procedure TFGeneradorSUI.FormCreate(Sender: TObject);
Var pCodigoPeriodo, pCodigoAno, pCodigoReferencia : TParam;
begin
  self.QListadoSuscriptoresInformacionSUI:= crearConsulta;
  with QListadoSuscriptoresInformacionSUI do
    begin
      close;
      Params.AddParam(pCodigoPeriodo);
      Params.AddParam(pCodigoAno);
      Params.AddParam(pCodigoReferencia);
      sql.text:= ' select distinct codigoSuscriptor ' +
                 ' from HistoricoPagos ' +
                 ' where CodigoPeriodo =:pCodigoPeriodo ' +
                 ' and CodigoAno =:pCodigoAno ' +
                 ' and CodigoReferencia =:pCodigoReferencia';
    end;
end;

y poder ejecutar la consulta introduciendo los parámetros que ha de variar según el tipo de reporte solicitado

Código Delphi [-]
  with self.QListadoSuscriptoresInformacionSUI do
    begin
      paramByName('pCodigoPeriodo').AsInteger:= Self.CbPeriodo.ItemIndex + 1;
      paramByName('pCodigoAno').AsInteger:= self.UDAno.Position;
      case RGServicio.ItemIndex of
        0: paramByName('pCodigoReferencia').AsInteger:= 4;
        1: paramByName('pCodigoReferencia').AsInteger:= 6;
        2: paramByName('pCodigoReferencia').AsInteger:= 5;
      end;
      open;
      showmessage(IntToStr(recordCount));
    end;

ahora bien cuando ejecuto el código encuentro un error en la creación, el cual supongo que es por no haberlo creado con antelación, claro de hecho es lógico pero en el creador existen tres formas he hacerlo pero la verdad es que no se por cual realizar la creación.

si alguno de ustedes me puede dar una manito con el proceso de creación lo agradezco de antemano, teniendo en cuenta que uso BDE y delphi 6


gertorresm
Colombia

ecfisa 01-08-2010 21:22:28

Hola GerTorres.

Probá la creación de este modo:
Código:

var
  NewParam: TParam;
begin
  with Query1 do
  begin
    Params:= TParams.Create();
    NewParam:= Params.CreateParam(ftString,'NuevoParametro',ptInput);
    Params.AddParam(NewParam)
  end
end;


Saludos.

Lepe 01-08-2010 21:38:50

Quita las 3 lineas: "Params.AddParam(" y todo debe funcionar.

Cuando asignas el sql.text es cuando delphi escanea el sql y crea los parámetros, por eso te da error al añadirlos antes de crear el sql (supongo que intenta encontrar los nombres en el sql.text que está vacío).

Por ende, lo único que tienes que hacer es asignar el sql.text y después dar los valores a cada parámetro (que según veo lo haces en la interfaz con el radiogroup).

GerTorresM 02-08-2010 02:01:16

Asunto resuelto
 
Muchas gracias he tomando en cuentas las dos opioniones y amoldando la situación se ha acomodado al caso


gertorresm
Colombia


La franja horaria es GMT +2. Ahora son las 14:27:52.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi