Wie sieht AddToList denn aus? Werden dort neue Objekte erstellt und die Werte kopiert oder hantierst Du da mit den Originalreferenzen? Es scheint das Letztere zu sein.
Da drin werden Objekte erstellt, und deren Eigenschaften werden mit
NewObject.ID := MyResult.FieldByName('ID').AsInteger;
usw. gefüllt, anschließend werden sie per ObjectList.Add in die entsprechende Liste eingetragen
Und mit OpenDatabase bzw CloseDatabase setze ich eigentlich nur das Connected-Property der ADOConnection auf true oder false.