Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Harry am 17.07.02 - 16:59:16

Titel: User speichern der ein Dokument geändert hat?
Beitrag von: Harry am 17.07.02 - 16:59:16
Hallo Notes Gurus ich bin dabei eine Datenbank zu Entwickeln die als Serverinformationsystem dienen soll jetzt möchte ich für jedes Dokument eine Bearbeitungshistorie einbauen also erstellt am und geändert am ist leicht mit @created und @modified zu realisieren auch den Ersteller des Dokuments zu speichern geht gut nur wenn es nach der Estellung nochmal geändert wird weiss ich nicht wie ich den User der Änderungen vorgenommen hat erfassen kann?

Vielen Dank im Voraus

Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: doliman am 17.07.02 - 19:43:56
Hi,

ich ahbe mir ein Feld eingebaut, das berechnet Mehrfachwerte anzeigt und mit folgender Formel gefüllt:
FIELD SaveHistory := SaveHistory;
list := "0-" + @Text(@Created; "D0T1") + "-" + " erstellt von: " + @Text(@UserName);
@If(@IsNewDoc; @SetField("SaveHistory"; list); @False);
ListSize := 5;
@If(@IsDocBeingSaved; @True; @Return(SaveHistory));
EditList := SaveHistory;
A := @Word(EditList; "-"; 1);
NEWNUM := @Text(@TextToNumber("0" + @Word(@Implode(A); " "; 1)) + 1);

NEWLINE := NEWNUM + "-" + @Text(@Now; "D0T1") + "-" + " geändert von: " + @UserName;
@Trim(@Subset(NEWLINE : EditList; ListSize))

Damit erreiche ich ein History Feld, daß mir die Hiostorie im Dokument mitspeichert.
Ich hoffe das hilft.
Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: Harry am 18.07.02 - 08:08:14
Danke für die Formel und wie kann ich die beiden Zeilen voneinander trennen
sprich erstellt von auf einer Zeile und geändert von auf einer anderen wegen der Übersichtlichkeit???
Aber sonst funzt die Formel gut!!!
Besten Dank
Titel: User speichern der ein Dokument geändert hat?
Beitrag von: luna am 18.07.02 - 08:21:09
du musst in den eigenschaften des feldes eingeben:
new line
bei "display separate values with"
dann hast du eine zeile pro eintrag.

habs grad ausprobiert.

@doliman:
wenn ich das computed feld mit "notes style" belege, dann zeigt er mir untereinander nur 5 zeilen an, also die 5 letzten eintraege. ansonsten muesste ich "native OS style" nehmen, damit er mir ein von mir vorgegebenes kaestchen anzeigt, sieht aber doof aus, wenn es noch leer ist.

wie hast du das geregelt?

gruss,
daniela
Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: Harry am 18.07.02 - 08:32:36
Hallo Daniela
wo kann ich bitte bei Feldeigenschaften irgendwas eingeben bitte genauer wenn es geht???
Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: luna am 18.07.02 - 08:37:26
hallo harry,

also, du gehst auf das feld, wo die history rein soll.
doppelklick auf  das feld, damit du das eigenschaften fenster bekommst.

dort gehst du auf den dritten reiter von links, das ist so ein propeller.

dort gehst du in das feld, wo links daneben steht: "display separate values with" und gibst dann "new line" an.

das bewirkt, dass jeder neue eintrag durch eine neue zeile getrennt wird.

gruss,
daniela
Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: Harry am 18.07.02 - 08:40:06
Danke habs grad mitbekommen ich wusste ja nicht das du Englische Versionen von Notes nutzt
kleiner Denkfehler!!!
Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: doliman am 18.07.02 - 19:59:24
Hi,

mit dem Eintrag
....
ListSize := 5;
.....
wird die Anzahl der Einträge bestimmt.
Erhöht man diese werden auch mehr Zeilen angezeigt.
Titel: zeilenhoehe und nachname/vorname
Beitrag von: luna am 19.07.02 - 08:11:02
hi doliman,

vielen dank. habs probiert, geht. aber wie machst du das? ich hab jetzt mal 20 zeilen eingegeben bei list. aber wenn der nun 21 zeilen hat. dann sieht er die erste nicht mehr. dann muesste ich ja im designer jedesmal die zeilenzahl wieder erhoehen. weil der user hat doch ueberhaupt keine moeglichkeit, die eintraege zu sehen, die dann in zeile 1 standen, oder?

wie regelst du das?

und eine frage haett ich noch: der user steht im CN format da, ich haette aber gerne nachname/vorname. was muesste ich an deiner formel aendern?

danke und gruss,
daniela
Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: doliman am 19.07.02 - 09:20:47
Hi,

irgenwann ist man ja bei Feldern und deren Inhalt am Ende, da muß man halt einen Kompromiss machen. Je mehr in den Feldern drin steht desto0 langsamer werden die Dokumente beim öffnen. Außerdem gibt es ein Systemfeld seitens Notes, das auch mit protokolliert $revisions oder so ähnlich. Nichts desto trotz was macht sinn wieviel und wann anzuzeigen??!!!! Persönliches Befinden.

@UserName(0) liefert Dir das was Du willst. ;)
Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: luna am 19.07.02 - 09:32:23
hallo doliman,

vielen dank fuer deine antwort. ok, versteh ich. mit @UserName(0) kommt nix bei rum. irgendwie kann ich das nicht. und $Revisions liefert mir nur datum und uhrzeit.

mir hat mal jemand ein lotus script geschrieben, das genau sowas macht. ersteller, aenderer, normaler name, und es werden so viele zeilen erstellt, wie notig sind. ich dachte nur, deins waere einfacher. weil in meinem script muss man als user noch einen text eingeben, was man getan hat. das nervt halt manchmal die user. drum wollt ich lieber deins nehmen.

ich werde mir dann doch lieber mal mein script nochmal vornehmen, und es so abaendern, dass entweder der user nix reinschreiben muss, oder dass die tatsaechlich geaenderten feldwerte reinkommen, je nach DB.

vielen dank fuer deine tips und deine hilfe,
gruss,
daniela
Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: Raul am 22.07.02 - 12:41:07
Hi, all...

Hab diese so verändert...sieht nett aus..*zw*

schau mal daniela.

FIELD Savehistory := Savehistory;
list := @Text(@Created; "D0T") + " -" + " erstellt von: " + @Text(@Name([CN];@UserName))+ @Char (9)+ @Char (0);
@If(@IsNewDoc; @SetField("Savehistory"; list); @False);
ListSize := 7;
@If(@IsDocBeingSaved; @True; @Return(Savehistory));
EditList := Savehistory;
A := @Word(EditList ;" - " ;1);
NEWNUM := (@Text(@TextToNumber(@Left(@Unique;2);"00" + @Word(@Implode(A); " "; 1)+1)));

NEWLINE := @Text(@Now; "D0T") + " - " + " geändert von: " + @Name([CN];@UserName)+ @NewLine;
@Trim(@Subset( EditList : NEWLINE; ListSize))

MfG Raul
Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: luna am 23.07.02 - 17:29:39
@doliman, @raul,

vielen dank euch beiden, ich habe jetzt beide formeln von euch ausprobiert, und ich haette gerne eine mischung aus beiden.


hier die formel von doliman:
FIELD SaveHistory := SaveHistory;
list := "0-" + @Text(@Created; "D0T1") + "-" + " erstellt von: " + @Text(@UserName(0));
@If(@IsNewDoc; @SetField("SaveHistory"; list); @False);
ListSize := 15;
@If(@IsDocBeingSaved; @True; @Return(SaveHistory));
EditList := SaveHistory;
A := @Word(EditList; "-"; 1);
NEWNUM := @Text(@TextToNumber("0" + @Word(@Implode(A); " "; 1)) + 1);

NEWLINE := NEWNUM + "-" + @Text(@Now; "D0T1") + "-" + " geändert von: " + @UserName(0);
@Trim(@Subset(NEWLINE : EditList; ListSize))

und das ergebnis dazu:
4-23.07.2002 17:22- geändert von: CN=Daniela Maurer/OU=DE/O=SANYO-ENERGY-EU
3-23.07.2002 17:22- geändert von: CN=Daniela Maurer/OU=DE/O=SANYO-ENERGY-EU
2-23.07.2002 17:22- geändert von: CN=Daniela Maurer/OU=DE/O=SANYO-ENERGY-EU
1-23.07.2002 17:22- geändert von: CN=Daniela Maurer/OU=DE/O=SANYO-ENERGY-EU
0-23.07.2002 17:19- erstellt von: CN=Daniela Maurer/OU=DE/O=SANYO-ENERGY-EU


und hier die formel von raul:

FIELD save_test := save_test;
list := @Text(@Created; "D0T") + " -" + " erstellt von: " + @Text(@Name([CN];@UserName))+ @Char (9)+ @Char (0);
@If(@IsNewDoc; @SetField("save_test"; list); @False);
ListSize := 7;
@If(@IsDocBeingSaved; @True; @Return(save_test));
EditList := save_test;
A := @Word(EditList ;" - " ;1);
NEWNUM := (@Text(@TextToNumber(@Left(@Unique;2);"00" + @Word(@Implode(A); " "; 1)+1)));

NEWLINE := @Text(@Now; "D0T") + " - " + " geändert von: " + @Name([CN];@UserName)+ @NewLine;
@Trim(@Subset( EditList : NEWLINE; ListSize))

und das ergebnis dazu:

23.07.2002 17:19:04 - erstellt von: Daniela Maurer      
; 23.07.2002 17:22:38 - geändert von: Daniela Maurer
; 23.07.2002 17:22:47 - geändert von: Daniela Maurer
; 23.07.2002 17:22:51 - geändert von: Daniela Maurer
; 23.07.2002 17:22:55 - geändert von: Daniela Maurer

(hier sind ; vorne am anfang, anstatt der zahlen.)



waere einer von euch so nett und kombiniert mir die formel so, dass ich von doliman die laufende nummer am anfang hab und absteigend (also neuester eintrag oben) und ein erstellt von.
und von raul den richtigen namen?

also so:
3-23.07.2002 17:59 geaendert von Daniela Maurer
2-23.07.2002 17:15 geaendert von Daniela Maurer
1-23.07.2002 16:30 geaendert von Daniela Maurer
0-23.07.2002 15:15 erstellt von Daniela Maurer

wenn einer von euch beiden mir eine formel so aendern koenntet, dass dieses ergebnis als mischung von euch beiden rauskommt, das waere superklasse. ich selber krieg das nicht auf die reihe, die beiden sachen so zu kombinieren, weil ich dazu zu wenig davon verstehe. ich wuerde tage brauchen.

vorteil doliman:
zahlen am anfang, absteigend neuester oben
vorteil raul:
es muss keine feste groesse vorgegeben werden,
namen sind richtig

vielen lieben dank und gruss,
daniela
Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: Raul am 24.07.02 - 08:59:37
Hi Daniela,

ich denke das ist die geänderte Formel die Du benötigst.

Obwohl was mir nicht so gefällt ist ,dass sich die erste Reihe durch die Zahl immer verschiebt.

FIELD Savehistory := Savehistory;
list := "0 - " + @Text(@Created; "D0T1") + " -" + " erstellt von: " + @Text(@Name([CN];@UserName))+ @Char (9)+ @Char (9);
@If(@IsNewDoc; @SetField("Savehistory"; list); @False);
ListSize := 7;
@If(@IsDocBeingSaved; @True; @Return(Savehistory));
EditList := Savehistory;
A := @Word(EditList ;" - " ;1);
NEWNUM := (@Text(@TextToNumber(@Left(@Unique;2);"0" + @Word(@Implode(A); " "; 1)) +1));

NEWLINE := NEWNUM +  " - " + @Text(@Now; "D0T1") + " - " + " geändert von: " + @Name([CN];@UserName)+ @NewLine;
@Trim(@Subset(NEWLINE : EditList; ListSize))

Aber schau mal.


Gruss Bye

Raul
Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: luna am 24.07.02 - 16:37:45
hallo raul,

also, wie schon per kurznachricht geschrieben, die ist es leider nicht.

bei der hab ich jetzt eben diese komische leerzeile drin, und ausserdem seh ich wieder nur eine begrenzte anzahl von zeilen. will aber alle sehen.

also, ich will im prinzip (der wichtigkeit nach):
- der name muss kurz sein, ohne OU und so (wie bei raul)
- das ganze muss absteigend sein, aeltester eintrag ganz oben (wie bei doliman)
- ich will alle eintraege sehen, nicht nur ein paar (wie bei raul)
- die leerzeile muss weg (wie bei raul oder bei doliman vorher)
- der strichpunkt am anfang muss weg. entweder mit doliman's zahl oder was anderes

wenn du also nochmal eine formel haettest, die das alles kann, dann waere ich uebergluecklich und koennte das in fast alle meine datenbanken implementieren.

vielen dank und gruss,
daniela
Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: doliman am 24.07.02 - 18:10:12
Hi,

FIELD SaveHistory := SaveHistory;
list := "0-" + @Text(@Created; "D0T1") + "-" + " erstellt von: " + @Text(@Name([CN];@UserName));
@If(@IsNewDoc; @SetField("SaveHistory"; list); @False);
ListSize := 15;
@If(@IsDocBeingSaved; @True; @Return(SaveHistory));
EditList := SaveHistory;
A := @Word(EditList; "-"; 1);
NEWNUM := @Text(@TextToNumber("0" + @Word(@Implode(A); " "; 1)) + 1);

NEWLINE := NEWNUM + "-" + @Text(@Now; "D0T1") + "-" + " geändert von: " + @Name([CN];@UserName);
@Trim(@Subset(NEWLINE : EditList; ListSize))


wenn ich Dich richtig verstanden habe.

Titel: document change history
Beitrag von: luna am 25.07.02 - 07:49:40
hallo doliman, hallo raul,

ich danke euch beiden !!!!! vielen lieben herzlichen dank. ich nehme jetzt die formel, und die bleibt jetzt so. ich kann das wirklich tierisch gut gebrauchen.

gruss,
daniela  :-* :-*
Titel: Re: User speichern der ein Dokument geändert hat?
Beitrag von: Raul am 25.07.02 - 08:03:55
Hi Daniela,

no prob so funktioniert es hier und das ist auch schön jeder hilft jedem das gefällt mir..

Gruss
Bye Raul ;)