Einzelnen Beitrag anzeigen

Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: SQL Query in Thread wie Datenrückgabe realisieren

  Alt 13. Okt 2016, 14:58
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.
Das meinte ich mit

Zitat:
aber erst der Datasource zuweisen, wenn der Thread fertig ist, sonst versucht das grid die schon zu lesen während du sie noch befüllst.
Was wir immer machen ist auf den ButtonClick immer erstmal den Button abschalten (Enabled := False) und erst wieder anschalten, wenn wir fertig sind mit unserem Code.

Auch Dein RecordCount wird eventuell falsch sein, da UniQuery die Zahl anzeigt, die sie erstmal holen (default 25). Entweder musst Du QueryRecordCount property setzen (macht uniquery dann 2x das Query, einmal zum zählen und ein 2. Mal um die ersten Daten zu holen).
Ich empfehle einfach den RecordCount der VirtualTable nach dem Assign zu nutzen. Aber da beendest Du den Thread eh und du kannst im MainThread einfach den RecordCount der VT zu fragen.


@nahpets : ich glaube, es spielt keine Rolle, da VT eh das dataset schliessen muss um die Field Liste zu löschen, da die ja von DataSet übernommen wird. Und der VT sollte dann automatisch geöffnet werden. Aber das kann man ja überprüfen mit

Code:
If Not VT.State in dsBrowsing Then
Ich hab die Änderungen jetzt soweit eingebaut, ändert aber nichts an der Fehlermeldung mit dem Canvas.
Teilweise bekomme ich sogar noch folgendes: VCL.Grids stop in Zeile 888 GridIndex ausserhalb des gültigen Bereichs (mal was neues)

Was den RecordCount angeht denke ich nicht das dieser falsch ist, ich setze beim Query explizit FetchAll also soll lt. Doku alles an Daten geholt werden und nicht nur partiell.


Zitat:
Ich empfehle einfach den RecordCount der VirtualTable nach dem Assign zu nutzen.
Wenn das funktionieren würde hätte ich das getan, deshalb der Umweg über die Messages. Der RecordCount im Main bei der VT ist nämlich immer 0 bei mir mit dem Query gehts einwandfrei.
  Mit Zitat antworten Zitat