Autor Thema: Feldänderungen festhalten  (Gelesen 2502 mal)

Offline KiTaMann

  • Aktives Mitglied
  • ***
  • Beiträge: 111
  • Geschlecht: Männlich
  • Nimm Platz in meiner Datenbank!
Feldänderungen festhalten
« am: 07.03.06 - 07:05:17 »
Guten Morgen zusammen,

als Script-Anfänger stehe ich vor folgendem Problem:

Ich möchte die Änderungen an einem Dokument feldweise dokumentieren und jede Änderung in einem Änderungsdokument festhalten.

Dabei bin ich folgendermaßen vorgegangen:

Im PostOpenEvent des zu beobachtenden Dokuments wird die Prozedur AenderungenAufzeichnen aufgerufen.

Diese Prozedur hält den Inhalt der einzelnen Felder nach dem Öffenen des Dokuments fest, also

Sub AenderungenAufzeichnen (Source as NotesUIDocument)

Set doc = Source.Document

If Source.IsNewDoc Then Exit Sub

Feld1Anfang = Source.FieldGetText("Name")
usw....


Wenn der Benutzer das Dokument speichern möchte, rufe ich über den QuerySave-Event folgende Funktion auf:


Function Aenderungen (Source as NotesUIDocument) As Integer

Dim session As New NotesSession
Dim uiws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uidoc As NotesUiDocument
Dim Doc As NotesDocument

Dim Feld1Ende As String
usw...


Feld1Ende = Source.FieldGetText("Name")
usw....

Aenderungen = False


If Not source.IsNewDoc Then
      
If Strcompare(Feld1Ende, Feld1Anfang, 5)<>0   Then
         
Aenderungen = True
         
Set Doc = New NotesDocument(db)
Doc.Form = "Protokoll"
Doc.Bemerkungen = | Der Name wurde von | & |"| & Feld1Angang & |"| & | auf | & |"| & Feld1Ende & |"| & | geändert|
Doc.AktuellesDatum = Today      
usw...

End If


Laut Debugger bekomme ich keine Fehlermeldung, auch stehen die Anfangsdaten in gewünschter Form bereit.

Wo liegt der (Denk-)fehler? Wer kann mir weiterhelfen?

Danke schonmal


Grüße

Klaus










Gruß Klaus

"Alle Menschen sind klug.
Die einen vorher, die anderen nachher."

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Feldänderungen festhalten
« Antwort #1 am: 07.03.06 - 08:32:47 »
Auf den ersten Blick sehe ich jetzt mal keinen Denkfehler.

Dass der Debugger keinen Fehler meldet ist erstmal ein Zeichen, dass kein grober Fehler vorliegt. Aber hast du mal deine Variableninhalte genau untersucht? Was steht wann in welcher Variable und muss/darf das zu diesem Zeitpunkt drin stehen.

Außerdem müssen die Variablen Feld1Anfang,... global sein.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline KiTaMann

  • Aktives Mitglied
  • ***
  • Beiträge: 111
  • Geschlecht: Männlich
  • Nimm Platz in meiner Datenbank!
Re: Feldänderungen festhalten
« Antwort #2 am: 07.03.06 - 08:47:24 »
Hallo, Axel,

danke für die prompte Antwort.

Hatte vergessen zu erwähnen, dass ich die Anfangswerte in den Globals | (Declarations) deklariert hatte, um sie später verfügbar zu machen.

Mein Problem ist, dass ich nicht genau nachvollziehen kann, was nicht funktioniert, da sich der Debugger zu einem gewissen Punkt einfach "verabschiedet" und seine Pflichten vernachlässigt; sonst wäre das Problem sicherlich besser einzugrenzen.

Fakt ist, dass keine neuen Änderungsdokumente erstellt werden, hierfür jedoch Maske und Felder vorhanden sind  ???

Wie kann man denn das Debugger-Problem lösen?

Weiß hierauf jemand eine Antwort?


Klaus
Gruß Klaus

"Alle Menschen sind klug.
Die einen vorher, die anderen nachher."

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Feldänderungen festhalten
« Antwort #3 am: 07.03.06 - 08:51:17 »
Blöde Frage. Warum nimmst du nicht die History Klasse von Michael Woehrer. Die ist gut dokumentiert, sauber zu integrieren und  von außen konfigurierbar, welche Felder überwacht werden sollen.
Die findest du hier im Forum und wenn du ein Integrationsbeispiel brauchst, auch im !!Help!!.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline KiTaMann

  • Aktives Mitglied
  • ***
  • Beiträge: 111
  • Geschlecht: Männlich
  • Nimm Platz in meiner Datenbank!
Re: Feldänderungen festhalten
« Antwort #4 am: 07.03.06 - 08:58:02 »
Danke, Thomas,

werde mich gleich auf die Suche danach machen...

Vielleicht fallen mir beim nächsten Problem ja "schlauere" Fragen ein  ;D

Grüße

Klaus
Gruß Klaus

"Alle Menschen sind klug.
Die einen vorher, die anderen nachher."

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Feldänderungen festhalten
« Antwort #5 am: 07.03.06 - 18:07:43 »
 ;D
Nein die Frage die ich stellen wollte war eine "blöde" in Sinn von "da stelle mer uns eemal janz dumm und froche, wat is een Dampfmaschin".
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldänderungen festhalten
« Antwort #6 am: 07.03.06 - 18:23:36 »
Ich stelle dann auch noch mal eine "blöde Frage" ganz aus einer anderen Ecke: Geht es nur um die Überwachung eines oder ganz weniger Felder (aus einer grösseren Anzahl von Feldern, die geändert werden könnten)? Dann wäre Michis klasse Klasse nämlich ggf. eine Nummer zu gross ...

Ausserdem protokollierst Du, Klaus, in separate Log-Dokumente. Das macht Michis Klasse nicht. Obwohl sich das Logging mit separaten Dokumenten eher noch für Michis Klasse anbieten würde.
Was Dir bei den Protokoll-Dokumenten aber scheinbar noch fehlt, ist der Schutz der Dokumente vor einem Löschen durch Anwender, die die Doks gerade erstellt haben. Das wäre fatal. Aber Du hast ja auch nicht den ganzen Code gepostet.

Vielleicht sollten wir Deinen Ansatz doch weiterverfolgen bzw. korrigieren, wenn Du meine obige Frage mit "ja" beantwortest.

Bernhard

Glombi

  • Gast
Re: Feldänderungen festhalten
« Antwort #7 am: 07.03.06 - 18:34:39 »
Ich sehe in dem String einen Tippfehler:

Doc.Bemerkungen = | Der Name wurde von | & |"| & Feld1Angang & |"| & | auf | & |"| & Feld1Ende & |"| & | geändert|

es muss statt Feld1Angang heißen: Feld1Anfang

Kürzer geht es dann noch mit:
Doc.Bemerkungen = | Der Name wurde von "| & Feld1Anfang & |" auf "| & Feld1Ende & |" geändert|

Aber ob das die Ursache ist... Mal ausprobieren.

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldänderungen festhalten
« Antwort #8 am: 07.03.06 - 18:38:34 »
Wertvoller Hinweis, Andreas.
ABär: Das Erstellen eines Protokoll-Dokuments kann das nicht verhindern. Dies würde dann nur einen leeren Anfangswert zeigen. Das sich das kompilieren lässt, setzt wiederum ein fehlendes Option Declare voraus (was mit der Laufzeit nix zu tun hat).

Warten wir mal ab, was unser KitaMan aka Klaus sagt.

Bernhard

Glombi

  • Gast
Re: Feldänderungen festhalten
« Antwort #9 am: 07.03.06 - 18:47:35 »
db ist nicht im obigen Auszug gesetzt - vielleicht liegt es auch daran.
Aber auch dann müsste Notes zur Laufzeit herummosern.

Andreas

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Feldänderungen festhalten
« Antwort #10 am: 08.03.06 - 10:27:49 »
... ich würde nicht über das Frontent gehen, sondern das Backend-NotesDocument verwenden. Gibt es irgendwo noch ein Fehlerhandling wie "On Error Resume Next" oder ähnliches ?

Toni
Grüßle Toni :)

Offline KiTaMann

  • Aktives Mitglied
  • ***
  • Beiträge: 111
  • Geschlecht: Männlich
  • Nimm Platz in meiner Datenbank!
Re: Feldänderungen festhalten
« Antwort #11 am: 08.03.06 - 12:17:25 »
Hoppla, hoppla, hoppla,

... da kam ja noch eine ganze "Resonanzwelle" 'rübergeschwappt, wo ich doch dachte, dass das Thema erledigt sei.

Hatte eine Nachtschicht eingelegt und das Problem dann auch noch gelöst  8)
Trivial, wenn man's im Nachhinein weiß (nachdem man stuuuundenlang nach dem Fehler gesucht hat) - man sollte die neuen Dokumente einfach über die save-Methode abspeichern und schon fuktionierts!!

@Thomas
iss scho recht  ;)

@Bernhard
Mein Script dokumentiert die Änderungen in jedem Feld. Für jedes Feld, das geändert wird, wird ein Dokument erzeugt, das dem Anwender nachher in Form einer eingebetteten Ansicht präsentiert wird.
Die nachträgliche Bearbeitung ist ausgeschlossen.

@Andreas
Hatte das Script nicht per Copy + Paste gepostet, sondern manuell "reingehämmert", dabei ist es zum "Angang" gekommen, also ein "Dreckfuhler" meinerseits - sorry...

@Toni
Bin wie gesagt relativer Script-Anfänger - macht es denn Sinn das Dokument, in dem ich augenblicklich arbeite, nachträglich im Backend zu bearbeiten?

So kann ich doch (mehr oder weniger) wunderbar über das QueryClose-Event das gewünschte Ergebnis erzielen?


@All
Nochmals vielen vielen Dank!

Grüße

Klaus




Gruß Klaus

"Alle Menschen sind klug.
Die einen vorher, die anderen nachher."

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Feldänderungen festhalten
« Antwort #12 am: 14.03.06 - 11:54:29 »
@Klaus

... die Backend-Klassen sind besser verwendbar. Du hast damit alle Feldwerte, die du im Frontend siehst zur Verfügung - im originären Datentyp - während du das im Frontend nur mit Strings bekommst und dann umständlich konvertieren musst.

Die Event's bleiben dir weiterhin zur Verfügung...

Toni  ;-)
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz