AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Query in Thread wie Datenrückgabe realisieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Query in Thread wie Datenrückgabe realisieren

Ein Thema von stOrM · begonnen am 11. Okt 2016 · letzter Beitrag vom 14. Okt 2016
Antwort Antwort
Benutzerbild von MyRealName
MyRealName
Online

Registriert seit: 19. Okt 2003
Ort: Heilbronn
690 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: SQL Query in Thread wie Datenrückgabe realisieren

  Alt 13. Okt 2016, 16:04
Ich habe Dir mal schnell deins umgebaut, so dass es geht.
Die Zwischennachrichten abgeschaltet, wichtig ist ja erstmal, dass es überhaupt fehlerfrei läuft.

Nach dem Start des Threads wird nicht mehr auf die VT zugegriffen bis zum (neu implementierten) OnTerminate event. Die VT ist da noch geschlossen, von daher der Check aufs VirtualTable.Active.

Den Provider musst imm Thread nicht setzen, der ist im ConnectionString.
Musst ihn mal auf MySQL setzen wieder, ich habe nur Firebird installiert.


Ich habe den thread mehrfach ausgeführt ohne Fehler im Grid (nutze Delphi 10.1 Upd1), auch das Programm mehrfach, konte aber den Fehler nicht feststellen, den Du erwähntest.

Viel Spass
Helge
Angehängte Dateien
Dateityp: zip QueryThread_DP.zip (55,7 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

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

AW: SQL Query in Thread wie Datenrückgabe realisieren

  Alt 13. Okt 2016, 16:07
Ich habe Dir mal schnell deins umgebaut, so dass es geht.
Die Zwischennachrichten abgeschaltet, wichtig ist ja erstmal, dass es überhaupt fehlerfrei läuft.

Nach dem Start des Threads wird nicht mehr auf die VT zugegriffen bis zum (neu implementierten) OnTerminate event. Die VT ist da noch geschlossen, von daher der Check aufs VirtualTable.Active.

Den Provider musst imm Thread nicht setzen, der ist im ConnectionString.
Musst ihn mal auf MySQL setzen wieder, ich habe nur Firebird installiert.


Ich habe den thread mehrfach ausgeführt ohne Fehler im Grid (nutze Delphi 10.1 Upd1), auch das Programm mehrfach, konte aber den Fehler nicht feststellen, den Du erwähntest.

Viel Spass
Helge
Ich check das mal fix aus, Mega Dankeschön für Deine Mühe!
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName
Online

Registriert seit: 19. Okt 2003
Ort: Heilbronn
690 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: SQL Query in Thread wie Datenrückgabe realisieren

  Alt 13. Okt 2016, 16:09
Was ich nochmal erwähnen wollte zum Thema...

1. Es war so, wie ich sagt : nach dem SQL.Execute ist RecordCount bei 25, nach dem Assign auf der Zahl, was du wirklich an Register hast (Assign zieht alle register und dann kommt das natürlich hin). Der RecordCount der VT wird erst gesetzt, wenn sie offen ist (Active = True), sonst ist er 0.

Das im Thread ausführen bringt dir keinen Geschwindigkeitsvorteil, da das Query immer noch genauso langsam/schnell ist. Dazu müsstest Du die Daten stückeln, also in Blöcken anfordern. Wie ich vorher im Thread schonmal erwähnt hatte.

Helge
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

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

AW: SQL Query in Thread wie Datenrückgabe realisieren

  Alt 13. Okt 2016, 16:20
Jetzt wirds ganz lustig
Connection Name "Use Unicode" kennt er nicht. "CharacterSet" auch nicht. Wenn ich das raus nehme (ich denke mal liegt an der verschiedenen Version von Unidac die wir wohl haben) bekomm ich keine Daten
Macht aber erst mal nichts, ich werde das noch mal so umbauen mit meiner Version und dann mal schauen ob es dann geht, Ich denk mal Morgen bin ich damit soweit.

Alles klar funktioniert jetzt wunderbar. Nochmals vielen Dank für Deine Mühe!

Geändert von stOrM (13. Okt 2016 um 16:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName
Online

Registriert seit: 19. Okt 2003
Ort: Heilbronn
690 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: SQL Query in Thread wie Datenrückgabe realisieren

  Alt 13. Okt 2016, 16:22
Nimm einfach deinen ConenctionString, wie Du ihn vorher genutzt hattest. Wenn der den provider nicht hat, dann setz ihn halt im Thread wieder.
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

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

AW: SQL Query in Thread wie Datenrückgabe realisieren

  Alt 13. Okt 2016, 16:29
Nimm einfach deinen ConenctionString, wie Du ihn vorher genutzt hattest. Wenn der den provider nicht hat, dann setz ihn halt im Thread wieder.
Passt schon ich hatte etwas in der Uses übersehen, klappt alles als hätte es nie Probleme geben
Wenn ich mir genau ansehe was Du gemacht hast, denke ich kenne ich auch das Problem jetzt. Das Grid bei mir sah teilweise von den Spalten her etwas seltsam aus, manchmal waren diese komplett zusammen geschoben. So wie ich das sehe, war mein Zugriff in den Messages also sprich AfterFetch viel zu früh. Dein OnTerminate ist denke ich die Lösung gewesen.

Geändert von stOrM (13. Okt 2016 um 16:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName
Online

Registriert seit: 19. Okt 2003
Ort: Heilbronn
690 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: SQL Query in Thread wie Datenrückgabe realisieren

  Alt 13. Okt 2016, 17:08
Wichtig ist ja,d ass Du jetzt eine basis hast, auf der Du aufsetzen kannst.
Schau Dir trotzdem mal den SrverMode von DevExpress an, der löst dein Problem besser.
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

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

AW: SQL Query in Thread wie Datenrückgabe realisieren

  Alt 13. Okt 2016, 23:00
Wichtig ist ja,d ass Du jetzt eine basis hast, auf der Du aufsetzen kannst.
Schau Dir trotzdem mal den SrverMode von DevExpress an, der löst dein Problem besser.
So siehts aus, dein Beispiel hat extrem geholfen.

@Mavarik
Das hört sich alles sehr interessant an und ist vermutlich ein sehr sauberer Weg, aber das was Du beschrieben hast sind so zu sagen Böhmische Dörfer für mich ich hab mit TThread schon so meinen Kampf, aber das versteh ich jetzt zumindest teilweise
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz