Domino 9 und frühere Versionen > Entwicklung
Feld in anderem Dokument setzen
Christian97:
Ich hab zwar kein Poster vom Notes-Klassenmodell da, hab aber schon mal eins gesehen. Auch das Durchhangeln von einer Klasse zur anderen ist mir theoretisch klar.
Es mangelt am Verständnis, wann und wieso ich welches Objekt anlegen muß und wie ich es dann an das nächste übergebe.
Glombi:
Ich verwende bei der Programmierung immer die Notes Designer Hilfe. Was anderes braucht eigentlich kein Mensch.
Die Bespiele dort sind gut.
Nach einigen Scripts geht es dann in Fleisch und Blut über.
Zurück zu deinem Problem: Du hast im aktuell geöffneten Dokument (NotesUIDocument) die Replik-ID und die Dok-ID stehen. Du willst wenn ein neues Dokument erstellt wird, beim Schliessen im Zieldokument ein Feld setzen. Also brauchst Du
(Declarations)
dim session as NotesSession
dim db as NotesDatabase
dim zieldb as NotesDatabase
dim zieldoc as NotesDocument
dim doc as NotesDocument
dim DocIsNew as Integer
dim zielReplicaID as String
dim zielDocID as String
Im Postopen...
set session = New NotesSession
set db = session.CurrentDatabase
set doc = Source.Document
zielReplicaID = doc.ReplikID(0) 'das ist Extended Class Syntax : äquivalent zu doc.GetItemValue("ReplikID")(0)
'":" ausschneiden
if Instr(zielReplicaID ;":") > 0 then
zielReplicaID = Left$(zielReplicaID,8) & Right$(zielReplicaID,8)
end if
zielDocID = doc.DocID(0)
if Source.IsNewDoc then
DocIsNew = true
else
DocIsNew = false
end if
Im QueryClose...
if DocIsNew then
set zieldDB = New NotesDatabase("","")
call zielDB.Open( db.Server, zielReplicaID )
if zielDB.IsOpen then
set zieldoc = zielDB.GetDocumentByUNID( zielDocID )
if not zieldoc is Nothing then
zieldoc.bearbeitet = "1"
call zieldoc.Save(false,true,true)
end if
end if
end if
Das sollte es tun. Wichtig ist, dass Du die einzelnen Schritte verstehst!
Andreas
TMC:
--- Zitat von: Christian97 am 27.07.04 - 22:50:19 ---Ich hab zwar kein Poster vom Notes-Klassenmodell da, hab aber schon mal eins gesehen.
--- Ende Zitat ---
Hier eins vom 6.5er Client. Du hast zwar in R5 nicht alle Klassen, aber zumindest als Überblick vielleicht hilfreich:
Christian97:
Vielen Dank Andreas für das Script und auch danke für das Klassenmodell!
Ich habe das Script ins (Declarations), PostOpen und QueryClose meiner Maske eingebaut, die beiden eingeschlichenen Tippfehler behoben und probiert. So ganz funktioniert's noch nicht. Ich hab mir dann alles mit dem Debugger anzeigen lassen. Die Variablen werden alle richtig gesetzt, allerdings wird das Feld "bearbeitet" nicht gesetzt, weil die ZielDB nicht geöffnet wird. Du hattest
Call zielDB.Open(db.Server, zielReplicaID )
geschrieben. Ich habe dann das db.Server weggelassen, weil die ZielDB auf dem gleichen Server liegt. Auch wenn ich anstelle von zielReplicaID den Dateinamen angebe, öffnet's die DB nicht. Der Abschnitt
If zielDB.IsOpen Then
wird dann übersprungen, zieldoc nicht gesetzt und das Feld demzufolge auch nicht.
Woran kann das liegen?
Christian
Glombi:
Es muss
set zielDB = New NotesDatabase("","")
call zielDB.Open( db.Server, zielReplicaID )
heissen. Tippfehler entfernt.
Der Server muss angegeben werden.
Was zeigt der Debugger als Wert für zielReplicaID an? Es muss die Replik-ID der Zieldatenbank sein, allerding ohne ":"
Andreas
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln