Document aufrufen
- Stony
- Erledigt
-
-
set uidoc = ws.EditDocument(.., doc)
doc muss das BackEnd_Dokument sein.
Gruß
Dirk -
Wenn du dir den Unterschied zwischen Frontend- und Backend-Dokument klargemacht hast (und dieser Unterschied ist elementar und auch elementar wichtig - und deine Fragestellung zeigt deutlich, daß er dir noch nicht klar ist), wirst du merken, daß im Frontend (das ist immer wenn UI in der Namensklasse vorkommt) DU das Objekt bestimmst. Im Backend gibt es die Möglichkeit, z.B. mit db.GetDocumentbyUNID ein Dokument anhand einer Eigenschaft oder eines Inhalts zu bestimmen.
-
Hmm,
ich bastelle da jetzt schon einige Zeit dran herum und komme einfach nicht weiter! :-?
Ich brauche einfach nur einen Code, der mir ein Document in der Currentdb nach seiner ID öffnet, da ich dann mit den Feldnamen des Documents weiter arbeiten möchte.
Gruß Jan
-
Das wurde doch schon beschrieben:
db.getDocumentByUNID -
ok,
aber wie setze ich db auf currentdb?
Gruß jan
-
dim s as new notessession
dim db as notesdatabase
set db = s.currentdatabase -
dim ws as New notesuiworkSpace
dim uidb as NotesuiDatabase
dim db as NotesDatabase
set uidb = ws.CurrentDatabase
set db = uidb.Databaseoder
dim ws as New notesuiworkSpace
dim db as NotesDatabase
set db = ws.CurrentDatabase.Databaseoder
dim session as new NotesSession
dim db as NotesDatabase
set db = session.CurrentDatabaseGruß
Dirk -
ok, irgendwie bekomme ich es nicht hin, hier mal der Code:
Code
Alles anzeigenFunction Connections (pathName) Dim ws As New NotesUIWorkspace Dim db As NotesDatabase Dim view As NotesView Dim uidoc As NotesUIDocument Dim doc As NotesDocument Dim num As Integer Dim docID As String Dim s As New notessession Dim dbCurrent As notesdatabase Dim uidoc2 As NotesUIDocument Set dbCurrent = s.currentdatabase Set db = New NotesDatabase( "", ""& pathName &"\names.nsf" ) Set view = db.GetView( "Connections" ) Set doc = view.GetFirstDocument While Not doc Is Nothing Call doc.Remove(True) Set doc = view.GetFirstDocument Wend 'Hier versuche ich jetzt die "Aufmerksamkeit" der db auf die currentdb zu richten ;-) Set uidoc = ws.CurrentDocument docID = uidoc.FieldGetText ("docID") Set doc = dbCurrent.GetDocumentByID (docID) Set uidoc2 = ?? num = 1 While uidoc.FieldGetText( "Server_" + Cstr( num% ) ) <> "" Call CreateConnection( db, "0", "", uidoc.FieldGetText( "Server_" + Cstr( num% )), uidoc.FieldGetText( "ServerAddress_" + Cstr( num% )), "*" ) If doc.PassthruYN(0) = "1" Then.........
Hier wird halt von Notes aus eine Datenbank upgedated bzw. verändert.
Mein Problem ist, dass sich die Felder in der 2ten while auf ein anderes document in der currentdb beziehen.
Und auf dieses Doc versuche ich mit der id zu zugreifen.Schon mal vielen Dank für die bisherige Hilfe!
Gruß Jan
-
mal eine andere Frage, warum machst Du dies im Frontend und nicht im Backend?
Gruß
Dirk -
Du meinst...
While uidoc.FieldGetText( "Server_" + Cstr( num% ) ) <> ""mit uidoc soll auf ein anderes Doc zugegriffen werden??
-
Hallo,
musste so sein.
Das Problem ist halt, dass eine externe notes db upgedated wird, dies wird von einem document gesteuert und diese prozedur bezieht die daten von einem anderen document. Diese beiden Docs liegen in der CurrentDb.
Gruß Jan
-
Hallo,
ZitatDu meinst...
While uidoc.FieldGetText( "Server_" + Cstr( num% ) ) <> ""mit uidoc soll auf ein anderes Doc zugegriffen werden??
Ja genau diese Stelle meinte ich. Mit uidoc soll auf ein anderes Document über die ID zugegriffen werden.
Ist das möglich?
Gruß Jan
-
-
Warum willst Du eigentlich mit uidoc weiter arbeiten??
Benutz doch das Objekt Doc weiter. Also so..
While doc.getItemValue( "Server_" + Cstr( num% ) )(0) <> "" -
nix mit Current..., Du hast doch das doc im BackEnd. Um es in den FrontEnd (UI) zu bekommen machst Du einen NotesUIWorkSpace.EditDocument(EditMode,doc).
Gruß
Dirk -
In den ersten Antworten von Diali und mir kam der Kern des Problems zum Ausdruck: der Unterschied zwischen Frontend und Backend ist nicht klar. Kein Codeschnipsel der Welt wird dir weiterhelfen, solange du glaubst, mit dieser Wissenslücke und Notes-Programmierung eine dauerhafte Partnerschaft eingehen zu können.
Natürlich können auch wir noch etwas lernen. Z.B. die Art und Weise, wie du in einer Schleife Dokumente löschst. Das hat mir schon die Socken ausgezogen.
Set doc = view.GetFirstDocument
While Not doc Is Nothing
Call doc.Remove(True)
Set doc = view.GetFirstDocument
WendDu ziehst der Schleife das Objekt unterm Hintern weg und hoffst, durch einen überirdischen Mechanismus würde der Rest schon nachrutschen und das "nächste" Dokument zum ersten Dokument.
Daß ein Programm das Handle auf ein Objekt durch die Löschung verliert (und somit nach der vollzogenen Löschung nicht mehr auf ein "nächstes Dokument" zugreifen kann) bedeutet noch lange nicht, daß damit das nächste Dokument zum ersten Dokument wird, solange du das Referenzobjekt (die view) nicht auffrischst. Dies am Rande.
Ich will nicht ausschließen, daß sich eine arme Seele findet, die dir dein akutes Problem jetzt und hier löst, aber du kannst sicher sein, daß du morgen wieder ein akutes Problem hast, das auf der gleichen Basis-Wissenslücke basiert. An einer Stelle beschreibst du, daß du seit einiger Zeit daran "herumbastelst". Etwas anderes als Basteln kann das auch nicht sein, solange dir die elementare Arbeitsweise unklar bleibt.
-
Hallo,
LN4ever danke für die Belehrung! :idea:
ZitatWarum willst Du eigentlich mit uidoc weiter arbeiten??
Benutz doch das Objekt Doc weiter. Also so..
While doc.getItemValue( "Server_" + Cstr( num% ) )(0) <> ""Habe es jetzt mit doc.getItemValue versucht:
CodeSet uidoc = ws.CurrentDocument docID = uidoc.FieldGetText ("docID") Set doc = dbCurrent.GetDocumentByID (docID) num = 1 While doc.GetItemValue( "Server_" + Cstr( num% ) ) <> ""
Ich bekomme aber die Fehlermeldung:
Object variable not set!Gruß Jan
-
Gehen wir einmal davon aus, daß jedes Dokument ein Feld mit dem Namen "SERVER_1" hat (das prüfst du nicht weiter), dann bleibt doch aus dem vorhergehenden Posting eine minimale Winzigkeit zwischen der letzten Klammer und dem nach links zeigenden Pfeil übrig. Richtig - ich meine die geklammerte Null.
Um die in das Script einzubringen, muß man die Vorlage nicht einmal verstehen, man muß sie nur abschreiben, aber richtig.*huestel - zum Zweiten.
-
Ich stehe jetzt komplett auf dem Schlauch, von was kommt denn die Fehlermeldung nun? :-?
Schonmal vielen Dank für die bisherige Hilfe...
Gruß Jan