Verstehe von dem Thema nicht wirklich was, aber was mich verwundert:
Wenn der Thread fertig ist, weist Du Datasource die VirtualTable zu und dem Grid dann DataSource.
Das kann ich nachvollziehen, allerdings hätte ich erwartet, dass vor dem Start des Thread eben gerade diese Verbindung aufgehoben wird.
Ich würd' hier also erwarten, dass nach dem ersten Threadstarten für die restliche Laufzeit des Programmes die Verbindung VirtualTable->DataSource->Grid bestehen bleibt.
Allerdings hatte ich die bisherige Anforderung so verstanden, dass eben genau das nicht der Fall sein soll.
Dashier verstehe ich nicht:
Delphi-Quellcode:
try
try
FUniDacSQLQuery.Execute;
// Must be set here otherwise the virtualtable in the main thread
// does not contain any data!
FVirtualTable.Assign(FUniDacSQLQuery);
except
FUniDacSQLQuery.Close;
FUniDacConnection.Close;
terminate;
end;
Execute nimmt man bei 'ner
Query doch eigentlich, wenn man keine Ergebnismenge erwartet, also bei Insert, Update ...
Müsste es bei 'nem Select noch Open heißen.
Bei 'nem Execute ist doch eigentlich auch kein Close erforderlich.
Oder ist das hier in diesem Zusammenhang anders?
Ja da hast Du recht, dass mit dem Open bzw. Execute ist mir auch gerade aufgefallen, muss in dem Fall natürlich Open lauten. Danke für den Hinweis.
Zitat:
Das kann ich nachvollziehen, allerdings hätte ich erwartet, dass vor dem Start des Thread eben gerade diese Verbindung aufgehoben wird.
Das kann sollte ich vielleicht mal testen. Zumindest wäre das sinnvoll, Beim OnCreate des Formulars ist alles noch ungebunden, aber wenn der separate Thread gestartet wurde nicht mehr, ich ändere das mal ab.