DAO + mdb Datensätze vermißt

31/01/2008 - 22:34 von Thomas Hübner | Report spam
Hallo Newsgroup,

Ich habe da für eine Gruppe von ca. 50 Leuten ein Tool geschrieben, in
dem einfach nur per db.execute(SQL) Datensàtze in eine im Netzlaufwerk
befindliche mdb geschrieben werden. Pro Tag kommen ca. 11000 Datensàtze
zusammen. Heute ereilte mich die Info, das pro Tag zwischen 20 und 30
Datensàtze fehlen. Syntaxfehler im SQL String kann ich ausschließen, da
keine Usereditierbaren Felder (Freitext) vorhanden sind. Die ID ist
Autowert.

Wie würdet Ihr eine Fehlersuche gestalten und was könnte die Ursache
sein. Ich kann es mir nur so erklàren, das 2 Leute gleichzeitig das
execute ausführen und ein Datensatz dadurch verworfen wird (AutowertID
doppelt?). Wenn dieser Fall möglich ist - wie kann man diesen vermeiden?

Liebe Grüße,
Thomas
 

Lesen sie die antworten

#1 Peter Götz
01/02/2008 - 12:33 | Warnen spam
Hallo Thomas,

Ich habe da für eine Gruppe von ca. 50 Leuten ein Tool
geschrieben, in dem einfach nur per db.execute(SQL)
Datensàtze in eine im Netzlaufwerk befindliche mdb
geschrieben werden.



Heisst das, dass konkret ca. 50 Benutzer gleichzeitig
mit dieser *.mdb verbunden sind und daran Änderungen
vornehmen?


Pro Tag kommen ca. 11000 Datensàtze zusammen.
Heute ereilte mich die Info, das pro Tag zwischen 20
und 30 Datensàtze fehlen. Syntaxfehler im SQL String
kann ich ausschließen, da keine Usereditierbaren
Felder (Freitext) vorhanden sind. Die ID ist
Autowert.



Mit Syntaxfehlern in irgendwelchen SQL-Strings hat das
wohl eher weniger zu tun, aber vermutlich damit, dass
Du eine für den Einzelbenutzerbetrieb konzipierte
Desktopdatenbank (*.mdb) für einen Mehrbenutzerbetrieb
"missbrauchst".
Grundsàtzlich kann man eine *.mdb schon auch im
Mehrbenutzerbetrieb bearbeiten, aber man sollte sich
dann eben auch bewusst sein, dass es auf der Serverseite
kein aktives Programm gibt, welches Mehrbenutzerkonflikte
erkennt und diese bei Bedarf sinnvoll auflöst. Die DB-
Funktionalitàt ist beim Gespann *.mdb/Jet-Engine rein auf
der Clientseite und es ist Deine Aufgabe im Programmcode
dafür zu sorgen, dass Mehrbenutzerkonflikte erkannt und
je nach Situation sinnvoll aufgelöst werden.


Wie würdet Ihr eine Fehlersuche gestalten und was könnte
die Ursache sein.



Die Frage kann man ohne Kenntnis Deines Programmcodes
nicht beantworten. Es liegt aber die Vermutung nahe, dass
Dein Programmcode Mehrbenutzerkonflikte nicht oder
zumindest ungenügend erkennt und auflöst.


Ich kann es mir nur so erklàren, das 2 Leute gleichzeitig das
execute ausführen und ein Datensatz dadurch verworfen wird
(AutowertID doppelt?).



Da wird nicht einfach was verworfen, sondern eine solche
Situation löst einen Fehler aus, den Dein Programmcode
erkennen, analysieren und sinnvoll behandeln muss.

Wenn dieser Fall möglich ist - wie kann man diesen
vermeiden?



Du musst Deinen Programmcode mit einer lückenlosen
Fehler- und Konflikterkennung ausstatten.

Schau Dir mal

www.gssg.de -> Visual Basic -> VB.classic
-> Datenbank -> ADO DemoMU 2002

an. Dieses Programm ist für den Mehrbenutzerbetrieb
auf eine *.mdb ausgelegt.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen