Hallo,
kurz vorab: Ich hab die Suchfunktion schon erfolgreich gequält und erfahren dass dbase und
BDE im Netzwerk nicht so das wahre sind. Eine Lösung für mein Problem hab ich leider dennoch nicht gefunden. Wäre nett, wenn mir hier jemand weiterhelfen könnte.
Mein Problem:
Wir haben in unserem Verein ein Uraltprogramm, geschrieben in Delphi 3, welches im Netzwerk probleme macht und da der ursprüngliche Entwickler nicht mehr zur Verfügung steht, hab ich die tolle Aufgabe nun den Fehler zu suchen
Folgende Situation:
Das Programm läuft auf zwei Rechnern, die beide in eine dbase-Datei Daten mittels TTable und "appendrecord" Daten schreiben. Die Datei liegt auf dem einen Rechner, das Verzeichnis ist für den anderen Rechner freigegeben und der greift so auf die selbe Datei zu.
Das Problem ist nun, dass die Datensätze, die das Programm schreibt auf dessen Rechner die Datendatei liegt alle da sind. Die Datensätze, die vom verbundenen Rechner geschrieben werden, sind unvollständig. Komischerweise ist es auch nicht so, dass alle Datensätze fehlen, sondern es werden einige Datensätze geschrieben (so ca. 7%).
Im Einplatzbetrieb funktioniert das Programm tadellos. Wenn ich das, was ich im Netz gefunden habe, richtig interpretiere, müsste das Programm dann doch eigentlich auch problemlos im Netzwerkbetrieb laufen, da die
BDE sich um das Locking usw. kümmert. ISt das richtig?
Ich hab zu dem Programm auch eine rudimentäre Doku gefunden, in der steht, dass in der
BDE Konfiguration bei den dbase-Dateien als BatchCount der Wert 1 eingetragen sein soll. Das ist aber der Fall.
Auch funktionieren die Auswertungen usw. von beiden Rechnern problemlos. Der grundlegende Datenzugriff scheint also zu funktionieren, es scheint so, dass es nur ein Problem beim Schreiben der Daten in die Datei gibt.
Ich hab leider keine Ahnung, wo ich da ansetzen kann.
Sicherlich wäre es am sinnvollsten, das ganze auf
SQL umzustellen, aber die Arbeit wollte ich mir eigentlich ersparen, weil dann muss ich die ganzen Auswertungen ja auch neu machen
Vor allem bin ich auch nicht so die Leuchte in Delphi, sondern bin die arme Sau, die früher mal was in Pascal gemacht hat und wurde deshalb als Opfer auserkoren.
Nach einem ersten Blick in den Sourcecode hab ich den Eindruck, dass dies vermutlich früher schon mal probleme gemacht haben muss, weil nach jedem "Appendrecord" wird die Tabelle geschlossen ("zeiten.close") und neu geöffnet ("zeiten.open"). Ich denke das müsste doch aber trotz dieser gewöhnungsbedürftigen Programmierung funktionieren, weil bei einem Close müssten doch alle Daten, die noch irgendwo in einem Cache oder ähnlichem sind, geschrieben werden. Oder etwa nicht?
Hat jemand eine Idee, an was dieses Problem liegen kann? Wenn ich das mit möglichst wenig Änderungen am bestehenden Programm oder vielleicht nur durch Konfiguration in den Griff kriegen könnte wäre das toll.
Gruß
drigger
Ach so:
Der Verein hat leider nur eine Lizenz für Delphi 3 und ist wie üblich chronisch Klamm bei Kasse. Ein Upgrade auf eine höhere Delphi-Version oder kostenpflichtige Komponenten werden daher wohl nicht möglich sein ...