Ich hatte diese Konstellation bisher so noch nicht, aber ich meine folgendes Problem macht das in der gewünschten Form unmöglich:
SQL Connections sind i.A. an den Thread gebunden, in dessen Kontext man sie erstellt. Heisst: Ein TThread kann/darf eine Connection, die auf dem Formular liegt, in keiner Weise nutzen. Das beinhaltet auch, dass im Thread keine
Query benutzt werden kann/darf, die als Connection die auf dem Formular benutzt. Umgekehrt das selbe: Wird die Connection im Kontext des TThreads erzeugt, darf nichts auf dem Formular etwas anfassen, was diese Connection benutzt.
Folgerung:
Connection auf Formular -> Kein
Query.Open im Thread.
Connection im Thread -> Keine Benutzung der
Query als Dataset für das Grid
Man könnte jetzt an eine vermittelnde Pufferstruktur denken, die du im Thread voll machst, und dann dem Hauptthread am besten per Message mitteilst, dass es vollbracht ist. Der füllt dann ein Grid damit... und schon braucht dieser vermutlich ähnlich lange, genau dies zu tun. Darüber hinaus kann das dann kein DBGrid mehr sein, bzw. ist jeglicher Bezug zur
DB dahin -> Editieren wird so einfach nichts.
Alles was man versuchen würde das eigentliche Problem zu kaschieren, wird mindestens extrem wackelig. Mach es lieber richtig, und filter wie schon irgendwo vorher gesagt wirklich nur die Daten, die du gerade zur Anzeige brauchst heraus. Dauert das auch zu lange, ist dein
DB Design optimierungsbedürftig. Mit einem Thread wird das aber definitiv nur eine Zugriffsfehlerhölle ohne Gleichen.
Oder um deine Frage zu beantworten:
Zitat:
wie kann ich das an dieser Stelle korrekt abbilden?
Nein
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)