Ver Mensaje Individual
  #15  
Antiguo 26-07-2024
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.757
Reputación: 21
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Yo lo que veo mal es el procedimiento que utilizas para concatenar los valores.

Código Delphi [-]
procedure OnClick(Sender: TObject);
var
    cAnios : String;
begin
   cAnios := cAnios + Edit1.Text + ',';
end;
Esto trabaja sobre una variable local, la cual se pierde después de terminar el procedimiento.
Incluso si fuera una variable global "," te dejaría una coma al final.

Deberías hacerlo así:

Código Delphi [-]
// cAnios debe ser global a la unidad para poder compartirla entre los diferentes procedimientos
var 
  cAnios : string;

procedure OnClick(Sender: TObject);
begin
   // Solo agrego la "," si no es el primer elemento
   if (cAnios = '') then
      cAnios := cAnios + Edit1.Text + ','
   else
      cAnios := cAnios + ',' + Edit1.Text;
end;

procedure BotonInicializarOnClick(Sender: TObject);
begin
   // Inicializo cAnios para volver a empezar con proceso de selección 
   cAnios := '';
end;

procedure EjecutarProc(Sender: TObject);
begin
   // cAnios debería tener valores separados por coma.

   if (cAnios > '') then
   begin
      IBQueryMotivos.SQL.Clear;
      IBQueryMotivos.SQL.Add('select * from motivos where año in (' + cAnios + ')');
      IBQueryMotivos.Open;
   end
   else
      ShowMessage('No se han seleccionado años');
end;

begin
   // Inicializo cAnios
   cAnios := '';
   [...]
end;

Última edición por duilioisola fecha: 26-07-2024 a las 08:26:28.
Responder Con Cita