PDA

Vollständige Version anzeigen : Historienführung


horse79
02.11.2001, 11:34
Servus,

wenn ich bestimmte Felder in meinem Formular ändere wird diese Änderung in einer anderen Tabelle mit Datum protokolliert.

Wenn der User 4 Änderungen macht, bekomme ich 4 Datensätze. Jetzt wäre es schon wenn nur ein Datensatz mit den 4 Änderungen aufgezeichnet wird. Die Tabelle des Formulars und die Tabelle der Historie sind absolut identisch. Es sollen für jeden Datensatz in der Historie auch alle nicht geänderten Felder übernommen werden. Das funktioniert aber schon über ne Anfügeabfrage beimAktualisieren eines jeden Feldes im Form.

Wie kann ich es erreichen, dass nur ein Datensatz mit allen Änderungen erzeugt wird?

Vielen Dank

Kurt aus Kienitz
02.11.2001, 12:50
Hallo,

Du solltest die Aktualisierungsabfrage besser bei den Formularereignissen

Vor oder Nach Anfügen
Vor oder Nach Eingabe
Vor Löschen

aufrufen.

HTH

horse79
02.11.2001, 13:25
das habe ich mittlerweile drin
hat ja auch sinn gemacht, dass die neuen daten gespeichert wurden ;-)

Wie könnte mann soetwas lösen, damit nur ein Datensatz entsteht, bei dem aber alle Änderungen integriert sind.

Kurt aus Kienitz
02.11.2001, 13:41
Hallo,

Na ja, ich dachte das würde passieren, wenn man die Abfrage in der Ereignisprozedur Vor Aktualisierung des Formulares aufruft.

Hast Du das schon ausprobiert ?

horse79
02.11.2001, 14:11
Jepp,

da ist dann folgendes Problem.
User gibt Änderung 1 ein. Datensatz wird erstellt.
User gibt Änderung 2 ein. Datensatz wird gelöscht und neu erstellt.
D.h. in meiner Historie schauts so aus als wäre Änderung1 der alte Zustand gewesen.

Ich hätte halt gern, dass der alte Zustand vor beiden Änderungen (oder im schlimmsten Fall vor Änderung aller Felder) gespeichert wird.

Hoffe mein Problem ist halbwegs verständlich.

Kurt aus Kienitz
02.11.2001, 14:25
Hallo,

OK, nehm den Aufruf in der Ereignisprozedur Nach Eingabe raus, so das die Abfrage nur bei Nach Aktualisierung aufgerufen wird.

Bei mir klappt es so perfekt.

Kontrollieren auch noch, ob Du den Aufruf der Abfrage bei den Textfeldern komplett entfernt hat ;)

horse79
02.11.2001, 14:47
Ich hab mich wohl ein bischen falsch ausgedrückt. Ich geb mal ein Beispiel.

Usrpüngliche Inhalte der Felder:
Mustermann, 40.000 Euro, Text1

Änderung1:
Mustermann, 30.000 Euro, Text1

Jetzt wird der Historiendatensatz angelegt:
Mustermann, 40.000 Euro, Text1

Änderung2:
MusterFRAU, 30.000 Euro, Text1

Jetzt wird der Historiendatensatz angelegt:
Mustermann, 30.000 Euro, Text1

Das will ich aber nicht. Es soll stehen:
Mustermann, 40.000 Euro, Text1

Erst wenn die Eingabe an einem neuen Tag gemacht wird, sollen 2 Datensätze in der Historie stehen. (das klappt bei mir aber schon über ne Löschabfrage).

Ich geb noch schnell meinen code und die sql dazu:

DoCmd.OpenQuery "abfLöschenHistorie"
DoCmd.OpenQuery "abfHistorie"

SQL abfLöschHistorie:

DELETE DISTINCTROW tblHistorie.lngLfdNr, tblHistorie.*, tblHistorie.Änderungsdatum
FROM tblEurokreditgeschäfte, tblHistorie
WHERE (((tblHistorie.lngLfdNr)=[forms]![frmEurokredit]![lngLfdNr]) AND ((tblHistorie.Änderungsdatum)=Date()));

SQL abfHistorie:
der ist zu lang, es werden aber alle Felder aus dem Form in die Historie geschrieben.