Das ist unschön, was du da mit den Parametern machst.
Hier der richtige Ablauf:
1.) Property
SQL zuweisen
ADOQ.SQL.Text := .... ;// SELECT .....
Dabei wird die
Query automatisch geschlossen (falls sie vorher offen war)
2.) Parameter zuweisen
ADOQ.Parameters.ParamValues['Parametername'] := ....;
Der Aufruf von AddParameter ist überflüssig.
Es gibt nur wenige Ausnahmen, bei denen man von Hand eingreifen muss.
In diesen Fällen reicht aber meist ADOQ.Parameters.Refresh aus um alle Parameter anhand der Abfrage mit richtigem Typ aufzubauen.
3.)
Query öffnen. Entweder ADOQ.Open oder .Active := True
Wenn man Parameterwerte ändert, muss man die
Query schliesen und dann neu öffnen.
Statt .Close gefolgt von .Open kann man in diesem Fall auch .Requery aufrufen; das ist schneller.