Seite 1 von 1

Datensatz weg nach schließen des Windows Fensters

Verfasst: Mo, 21. Apr 2008 14:27
von MatthiasF
Hallo, wieder mal was vom Windows Neuling:

Code: Alles auswählen

use TABELLE exclusiv
append blank
replace FELD1 with "bla bla", FELD2 with "blub blub"
append blank
replace FELD1 with "bla2 bla2", FELD2 with "blub2 blub2"
Wenn jetzt einer das Fenster zumacht, sind die neuen Datensätze weg. Es erfolgt keine Warnung mit Datenverlust oder ähnliches, das Fenster geht einfach zu und die Daten sind weg.
Es ist natürlich nicht so einfach wie oben, in einer Init - Datei wird ein Zähler hochgesetzt, das ganze ausgedruckt, usw.
Was kann ich gegen einen solchen Datenverlust GENERELL tun ?
Momentan helfe ich mir mit einem commit Befehl, bin mir aber nicht sicher ob das auch todsicher hilft. Außerdem ist dann jede dritte Zeile commit. Ich suche eher eine globale Einstellung.
Vielen Dank !!

Verfasst: Mo, 21. Apr 2008 14:39
von brandelh
Hi,

eigentlich dürfte das nicht sein !

commit und dbskip(0) (letzteres empfehle ich) ziehen nur den Schreibvorgang sofort durch, aber nach dem Programmende wird auch die DBF geschlossen, und was bis dahin noch nicht gespeichert war wird gespeichert.

Hast du XppError.LOG oder XppFatal.LOG Dateien im Verzeichnis ?
Ist es local ?

Wenn dein Programm größer ist, versuche den Quellcode in einer Testanwendung zu integrieren und prüfe ob der Fehler bleibt.

Wenn sie klein, ist, zeige uns die entscheidenten Passagen.

Verfasst: Mo, 21. Apr 2008 14:43
von Jan
Hallo Matthias,

vielleicht kannst Du etwas näher erklären, wie das ganze bei Dir abläuft? Du sprichst ganz Pauschal von einem "Fenster". Und Du erklärst nicht, woher die einzulesenden Werte herkommen.

Generell gibt es verschiedene sachen, die Du machen kannst: Zum Einen erstmal die ganzen Daten in LOCALs einlesen, und diese dann beim Verlassen des Dialoges in einem Rutsch in die Datenbank einlesen. Dann ist es meist schon mal abgeschaltet, daß nur Feld1 eingelesen ist, und Feld2 nicht, weil dazwischen geschlossen wurde. Auch eine Überprüfung der Werte könnte dazwischen nochstattfinden, aber das ginge auch anders.

Grundsätzlich wäre es aber gut, wenn Du das Schließen des Dialoges über eine eigene Funktion laufen lässt. Die z. B. das Schließen verhindert, wenn noch ein Wert offen steht. Aber um da mehr sagen zu können müsstes Du erstmal weitere Details verraten 8)

Da ich auch ein "Windows-Frischling" bin sind das nur spontan ein paar Ideen meinerseits. Da gibt es sicher noch mehr, vielleicht auch elegantere.

Jan

Verfasst: Mo, 21. Apr 2008 14:45
von Tom
Wenn mit dem Schließen des Fensters ein "DbCloseAll/Area" erfolgt, sollte das nicht geschehen. Wenn das NICHT erfolgt, sind die Tabellen noch offen - und man sieht die Veränderung ohne DbSkip(0) nicht. Wenn das Fenster auch noch in einem eigenen Thread lief, ist Datenverlust vorprogrammiert.

Verfasst: Di, 22. Apr 2008 9:41
von Rolf Ramacher
Hi Mattias,

ich mache das folgendermaßen.

zunächst lese ich die Datenbanken und überführe die Daten in ein Array

Dann erstelle ich ein Fenster mit XbpDialog. Hier kann der Anwender solange Dinge ändern eintragen wie er möchte. Erst wenn er auf den
Button "speichern" klickt werden die Datenbanken wieder geöffnet -
die Daten gespeichert - Datenbanken geschlossen - Fenster geschlossen.

Somit kann hier nichts verlorengehen.

Verfasst: Do, 24. Apr 2008 14:05
von MatthiasF
Hallo zusammen, danke für die Tipps.
eigentlich dürfte das nicht sein !
Habe durch Zufall mitbekommen, daß der Strom in dem Gebäude (beim Kunden) wo der PC steht abends mit dem Hauptschalter abgestellt wird. Die Information, das ein Windows PC heruntergefahren werden sollte oder eben anbleibt war dort nicht vorhanden....

Verfasst: Do, 24. Apr 2008 15:15
von brandelh
Hi Mathias,

und glauben dir die Leute dass dein Programm (und somit du) nichts dazu kannst, wenn man einfach den Saft abdreht ? :wink:

Verfasst: Do, 24. Apr 2008 15:43
von Bertram Hansen
Hallo Matthias,

und wieso kann Dein Programm so etwas nicht abfangen? :lol:
Ich liebe solche Fehler! :roll:

Verfasst: Do, 24. Apr 2008 15:47
von Jan
Bertram hat geschrieben:Ich liebe solche Fehler!
Welchen Fehler? Den DAU?

Aber hatte Manfred da nicht mal die Geschichte mit dem Corel-Mitarbeiter gepostet? Soetwas wird immer wieder passieren solange Menschen Computer bedienen werden. So manches in der Bedienung kann man ja durch endlose Prüfroutinen abfangen. Aber manches eben auch nicht, wie z. B. externe Stromkapper.

Jan