Domino 9 und frühere Versionen > ND7: Entwicklung
DokumentObjekt als Funktionsrückgabewert?!
MadMetzger:
Hm... Was ist, wenn du das Dokument danach noch mal neu über die vorher beschaffte UNID erzeugst?
samWare:
Klasse Idee! An UNID denk ich natürlich wieder nicht.. danke dir Markus!
ascabg:
Also dieser kleine Code tut bei mir genau das gewuenschte.
--- Code: ---Sub Initialize
Dim ses As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = ses.CurrentDatabase
If db.IsOpen Then
Call GetDoc(doc)
If doc Is Nothing Then Msgbox "Nothing" Else Msgbox "immer noch da"
End If
End Sub
Sub GetDoc(doc As NotesDocument)
Dim s As New NotesSession
Dim db1 As NotesDatabase
Dim vw As NotesView
Set db1 = s.CurrentDatabase
If db1.isopen Then
Set vw = db1.GetView("alldoc")
If Not (vw Is Nothing) Then
Set doc = vw.GetFirstDocument
End If
End If
End Sub
--- Ende Code ---
Andreas
samWare:
Hallo Andreas,
die Methode habe ich ja bereits gepostet. Leider mit nur mäßigem Erfolg.
In der Call Funktion, befinde ich mich in DB-1. Das Configdoc liegt allerdings in DB-2.
mit "Call get_doc(doc)" übergebe ich ein leeres Dokument (nur Deklariert noch nicht initialisiert). Dieses setze ich dann in der "get_doc()" Funktion.
"get_doc" Intern funktioniert das, das "doc" bleibt in der Call Funktion aber trozdem un-initialisiert. Ich kapier das nicht.
hierzu mal ein wenig Code:
--- Code: ---Function environment_get_config_doc(sdo As NotesDocument)
'Funktion holt das Stammdaten-Dokument und giebt es zurück
'Dimentions festlegen
Dim s As New NotesSession
Dim db As NotesDatabase
Dim vw As NotesView
'DB//VW initialisieren
Set db = s.GetDatabase(environment_constants(1), environment_constants(2), False)
Set vw = db.GetView(environment_constants(3))
'Dokument-Objekt zuweisen
Set sdo = vw.GetFirstDocument
End Function
--- Ende Code ---
Aufgerufen wird das ganze in dieser Funktion:
--- Code: ---Function environment_get_config_doc_value(itn As String, ca As Integer) As String
%REM
Funktion giebt den geforderten Feldwert aus den Stammdaten zurück
itn => ItemName
ca => Case (im itn)
%END REM
'Dimentions festlegen
Dim sdo As NotesDocument
Dim s As New NotesSession
Dim db As NotesDatabase
Dim vw As NotesView
'Konfigurationsdokument holen // initialisieren
Call environment_get_config_doc(sdo)
'Wert ausgeben
environment_get_config_doc_value = sdo.GetItemValue(itn)(ca)
End Function
--- Ende Code ---
Mein Call bewirkt NULL. Da wird nichts initialisiert... :-:
Wo ist der Fehler?!
ascabg:
Hallo,
Dann wuerde ich sagen sieht es schlecht aus, da ja eigentlich alle benoetigten Objekte beim verlassen Deiner Funktion zum Holen des Dokumentes wieder "terminiert" werden.
(Session, db, View)
Somit wirst Du wahrscheinlich nicht umhinkommen die entsprechenden Variablen entweder global zu definieren oder als Parameter mit zu uebergeben.
Andreas
P.S.
Sollte es noch einen aderen Weg geben, ich moechte ja auch noch lernen.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln