AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken TSQLDataSet, TSQLConnection Multithread Exception
Thema durchsuchen
Ansicht
Themen-Optionen

TSQLDataSet, TSQLConnection Multithread Exception

Ein Thema von Barthiboy · begonnen am 4. Dez 2015 · letzter Beitrag vom 11. Dez 2015
Antwort Antwort
Seite 2 von 2     12   
nahpets
(Gast)

n/a Beiträge
 
#11

AW: TSQLDataSet, TSQLConnection Multithread Exception

  Alt 4. Dez 2015, 12:55
Wenn dem so ist, können wir diese Fehlerursache ja ausschließen.

Klar, bei 'nem Count bekommt man mindestens 0 zurück, wenn es was nicht gibt.

Was ist bei SQLDS_Work.CommandText := 'SELECT [IdentNr], [WareneingangsNr] from WEP02.dbo.WareneingangsNr WHERE Aktiv = 1'; ?
Wenn's das nicht gibt, ist die Ergebnismenge leer, EoF müsste dann erfüllt sein und FieldCount = 2. Fields[0].AsString geht dann und gibt 'ne leere Zeichenfolge zurück.

Gut, können wir den Fehler auch ausschließen.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#12

AW: TSQLDataSet, TSQLConnection Multithread Exception

  Alt 4. Dez 2015, 13:32
Ich frage mich was die beiden Code-Auszüge miteinander zu tun haben. Im ersten wird irgendetwas mit einer TCP-Verbindung gemacht, im zweiten werden Daten aus einer DB per SQL abgeholt. Wenn es da irgendwelche Seiteneffekte gibt, tippe ich auf Pointer-Arithmetik von Zauberlehrlingen.

Gruß
K-H

P.S.
was ist mit durchsteppen mittels F7/F8 kann da der Fehler eingegrenzt werden?
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#13

AW: TSQLDataSet, TSQLConnection Multithread Exception

  Alt 4. Dez 2015, 13:45
@p80286

naja, im "Thread" gibt es sowas wie DataNotInDB und DataExport.
Es könnte sich hier unter Umständen, eventuell, vielleicht um Funktionen handeln, die auf uminöse Weise auf die Datenbank zugreifen. Hier ließen sich dann Probleme und Konflikte beim Zugriff auf die Datenbank nicht zwingend ausschließen.

Im Eingangspost heißt es ja u. a.
Zitat:
... in einem Thread Daten via TCPIP von einem Server gelesen werden und in eine MSSQL Datenbank eingegraten werden...
Wie dies konkret funktioniert, ist aus dem zur Verfügung gestellten Quelltext aber leider nicht zu entnehmen.

Momentan gibt es noch zuviele , aus denen gelesen werden muss, um sich dem gestellten Problem anzunähern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#14

AW: TSQLDataSet, TSQLConnection Multithread Exception

  Alt 4. Dez 2015, 16:34
Bei soviel Konjunktiv kann ich Dir nicht widersprechen. es kann natürlich sein, daß zwei Threads sich ins Gehege kommen, das sollte aber nur der Fall sein wenn sie sich eine Ressource teilen müssen, aber welche mag das wohl sein.....

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#15

AW: TSQLDataSet, TSQLConnection Multithread Exception

  Alt 5. Dez 2015, 16:58
Hallo
danke für die vielen Antworten.
@p80286
also die zwei Codeschnipsel stellen die Datenbankzugriffe da, die in der Anwendung gemacht werden.

Programmübersicht:
Also in Einem Thread wird eine TCPIP Kommunikation aufgebaut. Hier werden Daten abgeholt und dann mittels SQLStatements
in die Datenbank geschrieben.

Im VCL-Thread wird in der Datenbank nachgeschaut (select count...) wie viele Datensätze denn schon eingetragen wurden und dies wird dann visualisiert.

In dem TCPIP Thread passiert eigentlich nicht recht viel mehr. Hier wir weiter oben lediglich Kommunikationsgeschichten abgearbeitet. Daher dann die Frage Datacount > 0 und dann gehts los mit Datenbank eintragen.
Die Eigenschaften des Threads wie z.B.: DataNotinDB oder weitere sind mittels CriticalSections geschützt und haben ihre Get und Set Methoden mit denen darauf zugegriffen wird

Ich habe selbstverständlich schon mit F7/F8 versucht zu debuggen. Allerdings lässt sich der Fehler nicht genau lokalisieren.
Also ich arbiete mit XE5 Enterprise und witzigerweise schmiert der Debugger auch ab wenn diese $C000005 Exception auftritt.
Ich kann am Montag gerne einen Auszug davon einstellen.


Zitat:
Im Eingangspost heißt es ja u. a.
Zitat:
... in einem Thread Daten via TCPIP von einem Server gelesen werden und in eine MSSQL Datenbank eingegraten werden...
Wie dies konkret funktioniert, ist aus dem zur Verfügung gestellten Quelltext aber leider nicht zu entnehmen.
Ja stimmt. Werde ich natürlich nachschicken.
Aber vorab schon mal so viel.
In der Funktion ProduktAuswerten wird das gemacht.
Hier werden die SQLStatments generiert und abgesetzt.

Jetzt noch eine ganz grundsätzliche Frage.
Es ist rein theoretisch schon möglich von zwei Threads aus auf die selbe Datenbank zuzugreifen?
Da hier ja der fehler in der dbxmss.dll auftritt.

Vielen Dank
einen schönen Abend
  Mit Zitat antworten Zitat
Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#16

AW: TSQLDataSet, TSQLConnection Multithread Exception

  Alt 7. Dez 2015, 06:58
Hallo.
Im Anhang ist jetzt das .pas file in dem der Thread gestartet wird und die Kommunikation läuft.
Den anderen Datenbankzugriff im Main findet ihr ja auf der ersten Seite.
Ich hoffe das jetzt nicht mehr fehlt.
Ich werde jetzt trotzdem gleich mal den Vorschlag von nahpets umsetzen und sehen ob ich zu einem Ergebnis komme.
Wenn ihr Vorschläge hab, nur her damit
Angehängte Dateien
Dateityp: pas Komm.pas (34,4 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#17

AW: TSQLDataSet, TSQLConnection Multithread Exception

  Alt 11. Dez 2015, 06:17
Hallo,
nach längerem vergeblichem probieren bin ich jetzt auf FireDAC umgestiegen.
Einach alle Komponenten ausgetauscht.
Und es funktioniert
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz