Datensatz weg nach schließen des Windows Fensters

Auf dem Weg von Clipper, FoxPro u.ä. nach Xbase++

Moderator: Moderatoren

Antworten
MatthiasF
Rookie
Rookie
Beiträge: 14
Registriert: Mi, 27. Feb 2008 7:18
Wohnort: Berlin

Datensatz weg nach schließen des Windows Fensters

Beitrag 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 !!
Gruß Matthias Fischer
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag 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.
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag 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
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9356
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag 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.
Herzlich,
Tom
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag 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.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
MatthiasF
Rookie
Rookie
Beiträge: 14
Registriert: Mi, 27. Feb 2008 7:18
Wohnort: Berlin

Beitrag 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....
Gruß Matthias Fischer
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag 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:
Gruß
Hubert
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Beitrag von Bertram Hansen »

Hallo Matthias,

und wieso kann Dein Programm so etwas nicht abfangen? :lol:
Ich liebe solche Fehler! :roll:
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag 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
Antworten