Perdonar la tardanza, pero estaba saturado ayer.
He probado las soluciones que me mandáis y FUNCIONAN, BIENNNNNNNN.
Código SQL
[-]
var
anios:string;
Begin
anios:='(1925,1955,1920)';
IBQueryMotivos.SQL.Clear;
IBQueryMotivos.SQL.Add('select * from motivos where año in '+ANIOS);
IBQueryMotivos.Open;
end;
y Lógicamente también así:
Código SQL
[-]
procedure Button1click(Sender: TObject);
var
cAnios : String;
begin
cAnios := cAnios + Edit1.Text + ',';
// cAnios debería tener valores separados por coma.
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;
Como me has pedido MRoman, mi código era meter en un StringGrid ó en un QuickReport, Rave Report, etc etc, sólo aquellos años que yo eligiera aleatoriamente, sin tener que ser todos los que son menores ó mayores que tal año, que eso sería más fácil.
Por lo que mi código quedaría así:
Código SQL
[-]
procedure tform1.Button1Click (sender:tobjet);
var
anios1,anios2,anios3:string;
x,c:Integer;
begin
c:=1
for x:=1 to Memo1.Lines.Count - 1 do
begin
anios1:=Memo1.Lines[x];
anios2:=anios2+anios1+ ',';
anios3:=anios2+'0';
end;
with tqueryMotivos do
close;
sql.clear;
sql.add('select anio,Motivo from Motivos where Motivo in '(' + anios3 + ')';
open;
while not IbQueryMotivo.eof do
begin
Stringgrid1.cells[c]:=IbQueryMotivo.FieldByname(anio).AsString;
StringGrid1.Cells[c]:=IbQueryMotivo.FieldByname(Motivo).AsString;
inc(c);
IbQueryMotivo.next;
end;
Bueno esto sería acabado el código entero simplificado a lo máximo, he utilizado para rellenar y sacar los datos finales un striggrid
He utilizado un Memo1, en vez de Edit, por comodidad y el Memo me deja introducir los años más cómodamente,
He utilizado tres Anios1,Anios2,Anios3,
donde el primero cojo, la primera línea del Memo
el Segundo cojo Anios1 + el Acumulado del Anios2, (1925,1955,1920,) y se quedaría así con una coma inoportuna ahí.
y Tercero cojo el Anios 2 entero, y como el Anios2 siempre acababa en ',' o siempre empezaba ',' no había forma de quitarla pues
le añadido en el anios3 un '0' y quedaría así (1925,1955,1920,0) el 0 nunca va representar ningún año y no me altera en nada el
resultado y así no me da error.
Lo mismo se puede hacer más simple, estoy abierto a aprender, y reducirlo al máximo, vosotros sois mucho mas expertos que yo.
Así que no me queda más que agredecer, el interés y las soluciones que me habéis dado, con esto se me ha abierto un abanico
muy grande para escoger dentro de un campo de forma aleatoria. Muchísimas Gracias.