Domino 9 und frühere Versionen > ND6: Entwicklung

String- oder Variant Array erstellen

(1/3) > >>

Bilbo10:
Hallo!

Ich hab mir ein "History-Script" von http://www.notes-links.de runtergeladen und möchte es
in einer Db einsetzen, damit die Veränderungen von Feldinhalten protokolliert werden. Mit Formelsprache habe ich das auch hingekriegt, ist aber sehr mühsam. Das Script erledigt das, so siehst es auf jedenfall aus, wesentlich eleganter. Die Implementierung ist auch gut beschrieben nur habe ich da ein Problem, weil ich nur sehr wenig Script-Kenntnisse habe. Ich poste  mal den ein Teil der Originalbeschreibung:

Im Postopen-Event der Maske folgende Zeilen hinzufügen:
Set g_history = New History("History")
Call g_history.PostopenStartObservation(Source, vItemNamesArray)
Dabei ist "History" der Feldname des Historienfeldes und => die Variable vItemNamesArray ein String- oder Variant - Array, welches die zu überwachenden Feldnamen enthält. Sie können die zu überwachenden Feldnamen entweder in einem (Profil-)Dokument vorhalten und entsprechend auslesen oder aber direkt im Postopen das Array erzeugen.<=

Wie würde den ein Array ausschauen, dass z.b die Felder Name, Vorname, Personal-Nr. und User-ID
enthält und im Postopen das Array mit den Feldinhalten erzeugt??
Da hänge ich!!

Gruß Torsten

Marinero Atlántico:
vermutlich so:

--- Code: ---on Error goto Fehler
Set g_History = new History("History")
Dim vItemNamesArray(3) As Variant
vItemNamesArray(0) = "Name"
vItemNamesArray(1) = "Vorname"
vItemNamesArray(2) = "PersonalNr"
vItemNamesArray(3) = "User-ID"

Call g_history.PostopenStartObservation(Source, vItemNamesArray)

exit sub
Fehler:
Msgbox |Fehler in Postopen | & Error$ & |(| & Cstr(Err) & |) in Zeile:| & Cstr(Erl)
exit sub

--- Ende Code ---



Bilbo10:
habe das mal so umgesetzt und da wird in das Feld History die u.a. Wert gespeichert und sonst nichts.

16.04.2005 - 20:21   "user name"l   Document created.

Bin da ganz nach der Beschreibung vorgegangen. Hat jemand das mit der Loggingfunktion mal ausprobiert?

 => http://www.notes-links.de/cpo/eigenentwicklungen/detail.php?nr=519&kategorie=eigenentwicklungen

# Die unten angehängte history.lss downloaden und in eine Script-Library importieren. Die Script-Library unter einem entsprechenden Namen speichern, z.B. "ClassHistory".
# In der entsprechenden Maske
a) in den 'Global Declarations' folgende Zeile hinzufügen:
Dim g_history As History
b) in den Global Options folgende Zeile hinzufügen:
Use "ClassHistory"
# Im Postopen-Event der Maske folgende Zeilen hinzufügen:
Set g_history = New History("History")
Call g_history.PostopenStartObservation(Source, vItemNamesArray)
Dabei ist "History" der Feldname des Historienfeldes und die Variable vItemNamesArray ein String- oder Variant - Array, welches die zu überwachenden Feldnamen enthält. Sie können die zu überwachenden Feldnamen entweder in einem (Profil-)Dokument vorhalten und entsprechend auslesen oder aber direkt im Postopen das Array erzeugen.
# In der Maske ein Feld History hinzufügen: Typ: Text, Mehrfachwerte zulassen, 'Berechnet beim anlegen', 'Display separate values with -New Line-'. In diesem Feld wird die Historie gespeichert. Es empfiehlt sich, über dem Feld eine Tabelle (1 Zeile, 3 Spalten) zu platzieren:



Besten Dank für die Unterstützung!!

Gruß Torsten

-Michael-:
Hi Torsten,

ich bin zufällig der Ersteller dieser History-Klasse  ;D

Ich bekomme mehrmals wöchentlich Anfragen, wie man denn diese Klasse implementiert.
Den Anfragen und weiterem Feedback entnehme ich, dass einige die Klasse mit Erfolg einsetzen.

Einen Teil hat ja schon Marinero beschrieben, nämlich wie Du zu dem Array kommst.

Auf OpenNTF habe ich auch ein paar Dinge erklärt:
http://www.openntf.org/Projects/codebin/codebin.nsf/CodeByDate/71E930683C3401A3C1256F2F00611BAA

Warum da jetzt nicht mehr in der Historie geschrieben wird, kann ich jetzt auch nicht sagen, dazu fehlen mir Details von Dir. Am besten Du hängst mal Deine DB hier an (oder per Mail), dann kann ich mir das gelegentlich ansehen.
Eigentlich - wenn Du 1:1 nach der Beschreibung vorgegangen bist - sollte es auch funktionieren.
Ich empfehle allerdings nicht, diese einzusetzen, wenn man keine oder nur wenig Script-Kenntnisse hat. Du solltest schon genau verstehen, was innerhalb der Klasse passiert, wenn Du diese einsetzt. Dies kann Dir ein reiner Code, der über GNU-Lizenz veröffentlicht wird, nicht abnehmen.

Michael

P.S. Weitere Hilfe kann etwas dauern, da ich erst kürzlich umgezogen bin und so entsprechend noch vieles zu tun habe...

Marinero Atlántico:
Lass mich raten: Die Instanz muß global instantiiert werden, right  ???

--- Zitat ---der über GNU-Lizenz veröffentlicht wird, nicht abnehmen.

--- Ende Zitat ---
hm. Glaub ja nicht das du dem gerichtlich nachgehst. Aber im Prinzip kann man so leicht unbedarfte Mitmenschen kriminalisieren.
Warum nicht LPGL oder Apache Lizenz?
Wenn man das wirklich will, dürfte es ja kein Problem sein, eine Skriptklasse so zu entfremden, dass sie nicht mehr als deine erkennbar ist.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln