Domino 9 und frühere Versionen > ND8: Entwicklung

Daten aus der names.nsf von einer Maske aus ändern

<< < (4/5) > >>

Peter Klett:
Vielleicht sollte auch noch erwähnt werden, dass es das Allerletzte ist, was man als Anfänger in Notes tun sollte, am Names oder an der Maildatenbank herumzuschrauben.

Wenn u.U. ein Entscheider in solch einem Kurs sitzt, kommt der später in das Unternehmen zurück und die Entwickler haben dann große Argumentationsnot, ihr oder ihm auszureden, dass man davon die Finger lassen sollte.

Ich weiß, dass das ein umstrittener Punkt ist, aber ich bleibe für mich dabei: Finger weg von der Maildatenbank und dem Adressbuch. In den letzten 15 Jahren, in denen ich mich fast ausschließlich mit Notesentwicklung befasst habe, hat es keine einzige Anforderungen gegeben, bei der zwingend in einer dieser Datenbanken etwas geändert werden musste.

Wenn es allerdings nur darum geht, in einem Personendokument im NAB ein Feld zu ändern, oder ein neues Item hineinzuschreiben, ohne dabei die Gestaltung der Datenbank zu verändern, bin ich mit dabei.

Also zu Schulungszwecken das Kommentarfeld für solche Zwecke zu "missbrauchen", ist in Ordnung, wenn man es wirklich als Schulungsthema ansieht. Es muss ja in der Praxis nicht gerade der "sensible" Urlaubsanspruch sein, vielleicht ein ganz anderes Thema, wie eine eingesetzte Software oder sonst was.

Sowas sollte, wie schon vorher erwähnt, in Lotus Script erfolgen, da das Schreiben mit Formeln nicht funktionieren wird. Hier ein Gerüst (ohne Errorhandlung und mit hart gedrahteten Dateinamen, was man in der Praxis umgehen sollte).

Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument ' das gerade geöffnete Dokument (Frontend)
Dim doc As NotesDocument
Set doc = uidoc.Document ' das geöffnete Dokument (Backend)
Dim db As NotesDatabase
Set db = doc.ParentDatabase ' die Datenbank, in der sich das geöffnete Dokument befindet
Dim ndb As New NotesDatabase (db.Server, "names.nsf") ' das Names auf dem Server der aktuellen DB
Dim nview As NotesView
Set nview = ndb.GetView ("($Users)") ' eine Ansicht aller User und mehr. Evtl. gibt es eine bessere Ansicht
Dim ndoc As NotesDocument
Set ndoc = nview.GetDocumentByKey (doc.Username (0), True) ' das Dokument, das mit dem Inhalt des Feldes Username im aktuell geöffneten Dokument in der Useransicht gefunden wird

' Jetzt hast Du das Personendokument im NAB (natürlich muss geprüft werden, ob eines gefunden wurde usw. aber etwas müsst Ihr ja auch noch selber machen)

ndoc.Comment = doc.MeinFeld ' der Inhalt von "MeinFeld" im aktuellen Dokument wird in Comment des Personendokuments geschrieben

Call ndoc.Save (True, True) ' damit die Änderung erhalten bleibt, muss das Personendokument gespeichert werden. Hier ist zu beachten, ob ausreichende Zugriffsrechte bestehen.

Wie gesagt, ist nur ein Gerüst. Vielleicht hilft es Euch weiter




 

Daniel1982:
Vielen Dank für die Hilfe! Ich hab das Script bei bei mir eingebaut.
Leider bekomme ich ich eine Fehlermeldung : "Object variable not set".
Ich hab den Script Debugger durchlaufen lassen und er hängt sich an dieser Zeile auf:
ndoc.Comment = doc.Tage 'Das Feld Tage ist mit einem Wert 2 belegt.

Ich kann mir nicht erklären warum... Bin im Debugger Zeile für Zeile durch gegangen. Die Variablen scheinen mit den richtigen Werten gefüllt zu sein.

DAU-in:
ndoc und doc sind belegt?

was sagt der Debugger?

WildVirus:
N'abend,

probierts mal mit

ndoc.Comment = doc.Tage(0)

CU,
Axel

Daniel1982:
Hmm... ndoc ist komischerweise leer... doc ist mit sämtlichen Werten gefüllt.
Set ndoc = nview.GetDocumentByKey (doc.Username (0), True)
Wenn ich das richtig verstanden habe wird die Ansicht in das Notesdokument ndoc geschrieben...was anscheinend nicht passiert, weil
der Debugger für ndoc nichts anzeigt...

@WildVirus
geht leider nicht

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln