Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#12

AW: query.open in Threads

  Alt 16. Okt 2012, 02:28
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)

Geändert von Medium (16. Okt 2012 um 02:31 Uhr)
  Mit Zitat antworten Zitat