Moin Andreas,
syntaktisch ist dein Code ja fehlerfrei, aber die Vorgehensweise ist überdenkenswert. Warum erneuerst du die statischen Spalten des DBGrid bei jeder Anfrage? Warum fragst du mehr Spalten bei der
DB an als du im Grid zeigst? Warum riskierst du Schreibfehler bei den Spaltennamen, indem du sie mehrmals schreibst?
Wenn du das DBGrid mehrmals zur Laufzeit umkonfigurierst, dann kann es eventuell passieren, dass Spalten bestehen bleiben, die auf nicht existente Felder verweisen.
Grüße vom marabu