Seltsamer Fehler mit Datenbank
-
Hi ...
Ich habe eine Access Datenbank und im Programm hab ich diese mit ODBC eingebunden.
Ich kann Akten anlegen und verwalten und alles funktioniert soweit ganz ordentlich. In einem anderen Programmteil empfange ich Werte mittels WLan und schreibe diese in eine Stringliste. Die Werte können auf Wunsch gespeichert werden und ein Eintrag über das aktuelle Datum wird in die Datenbank geschrieben.Nun zum Fehler: Es kommt manchmal vor, dass der WLan Socket, obwohl immer die gleiche Anzahl an Werten geschickt werden, eine ungleiche Anzahl von Werten erhält (bzw. ausliest). Tritt dieser Fehler wären der Programmausführung auf kann ich nicht mehr auf die DB zugreifen und eine Exception erscheint. Werden immer die gleiche Anzahl an Bytes empfangen, kann ich auch die DB ganz normal weiter benutzen. Ich habe keine Erklärung wie der Socket mit der DB in Verbindung steht.
mfg
devilempire81
-
Hallo
wenn ich das richtig verstehe, erwartest du x Werte, die in einer StringList gespeichert werden. Dein Fehler wird sein, das wenn du nicht x Werte, sondern z.B. x-1 erhälst, du trotzdem in der StringList nach x Werten schaust und daher einen Zugriffsfehler bekommst wenn du den x-ten Wert auslesen willst.
Und du solltest auch mal schauen, warum du weniger Werte als erwartest bekommst.
bis bald
akari
-
@Akari... Das Problem liegt nicht bei der Stringlist, sondern bei der Datenbank. DIe Datenbank funktioniert solange ordentlich bis mein Socket eine ungleiche Anzahl an Bytes ausgibt als er eigentlich empfängt. Ich habe schon mehrere Postings deshalb hier im Forum geschrieben, aber noch keine Lösung gefunden. Ich kann mir ja den Zusammenhang zwischen Socketserver und Datenbank selber nicht erklären. Es ist ja auch nicht so schlimm, wenn der Socket ungleiche Werte ausliest, weil die restlichen Werte ja beim nächsten Lesebefehl des Serversockets gelesen werden. Es wird ja auch keine Exception beim Socketlesen verursacht, sondern erst beim Aufrufen der DB nachdem der "Fehler" mit der WLanübertragung geschehen ist. Die Exception ist auch kein DBFehler, sondern ein EAccessFehler beim Zugreifen auf eine bestimmte Adresse.
Vielleicht verursacht der Serversocket einen Fehler im Speicher, oder ich habe irgendetwas falsch vereinbart, dass vielleicht eine Adresse überschrieben wird, die von der DB benötigt wird.
mfg
evilempire81