Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: alkuhn am 12.05.05 - 12:52:18

Titel: Aufruf einer Funktion
Beitrag von: alkuhn am 12.05.05 - 12:52:18
Hallo, ich habe einen Agent, der aus einer Script-Bibliothek eine Funktion aufruft. Beim Speichern des Agent erhalte ich immer den Fehler "Daten wurden aufgrund von Fehler im Script nicht gespeichert". Aber ich komme nicht auf den Fehler :-(

Im Agent soll eine Variable belegt werden
strPfad = ProfilLookUp("FeldName")
strPfad ist als String definiert

Und so sieht ProfilLookUp aus:
Function ProfilLookUp(sFeld As String) As String
   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim docProfile As NotesDocument
   
   Set db = session.CurrentDatabase   
   Set docProfile = db.GetProfileDocument( "(DB-Profil)" )
   
   ProfilLookUp = "dd"
End Function

ProfilLookUp habe ich auf dd gesetzt, weil ich zuerst dort den Wert aus dem Feld haben wollte, den ich der Funktion übergebe. Da ich dachte, dass vielleicht hier mein Fehler ist, habe ich es herausgenommen. Alles ohne Erfolg.

Hat mir jemand einen Tipp? Ich wollte über die Funktion gleich zwei Felder aus dem Profildokument holen - aber bekomme es ja schon mit einem nicht in den Griff :-)
Titel: Re: Aufruf einer Funktion
Beitrag von: umi am 12.05.05 - 12:55:13
Normalerweise sollte die Stelle wo der Fehler ist ja rot markiert werden.
Hast Du die ScriptLib nach dem Agenten erstellt?
evtl. zuerst die ScriptLib speichern.
dann im Agenten den Aufruf strPfad = ... auskommentieren. Agent speichern & schliessen, Agent wieder öffnen. Kommentar rückgängig. Speichern sollte jetzt funktionieren.

Notes hat z.T. ein kleines Refresh Problem bei ScriptLibs und Agenten.

gruss

umi
Titel: Re: Aufruf einer Funktion
Beitrag von: alkuhn am 12.05.05 - 12:59:33
Ich werde verrückt. Genau das war mein Problem. Ich habe völlig umsonst gesucht  ??? Da das Ganze noch ziemlich neu für mich ist, kannst du mir einen Tipp geben, wie ich gleich mehrere Felder übergebe bzw. als Antwort bekomme? Vielen Dank für Deine schnelle Antwort. Das hat mir echt geholfen
Titel: Re: Aufruf einer Funktion
Beitrag von: elajen am 12.05.05 - 13:07:27
Hallo,

wo hast du denn diesen Code stehen???
Zitat

strPfad = ProfilLookUp("FeldName")
strPfad ist als String definiert

Gruß von Ekki.
Titel: Re: Aufruf einer Funktion
Beitrag von: alkuhn am 12.05.05 - 13:10:31
In Sub Initialize habe ich ganz am Anfang
Dim strPfad As String

und anschließend strPfad = ProfilLookUp("TempDir")

Hoffe, ich habe Dich richtig verstanden.
Titel: Re: Aufruf einer Funktion
Beitrag von: elajen am 12.05.05 - 13:15:01
Ja, richtig verstanden.

Außer, dass du für session kein set gemacht hast, finde ich keinen Fehler.

Habe grad mal deinen Code bei mir in einen Agenten reinkopiert. Compiliert korrekt. Lösch doch mal den Agenten, und kopiere den Inhalt neu rein

Gruß von Ekki.
Titel: Re: Aufruf einer Funktion
Beitrag von: umi am 12.05.05 - 13:17:05
Da gibts mehrere Möglichkeiten:

a) als Parameter
function meinTest(param1 as notesdocument, param2 as string, param3 as integer) as boolean

Die Parameterübergabe erfolgt über Referenzen. D.h. Änderungen an den parametern werden auch in der aufrufenden Funktion sichtbar.



b) als Array
dim meinArray() as string
z.B. mit
function meinTest(meinarray() as string)as boolean
Hier musst du einfach die Position der einzelnen Parameter im Array festlegen.

c) als Liste
dim meineListe list as string
function meinTest(meineListe list as string)as boolean

Hier kannst Du mit zuweisen mit
meineListe("Feldname")=Wert
auslesen mit
Wert = meineListe("Feldname")

mfg umi
Titel: Re: Aufruf einer Funktion
Beitrag von: umi am 12.05.05 - 13:18:32
Ein Set ist auch nicht nötig, da mit
dim session as new notessession

die session schon gesetzt ist
Titel: Re: Aufruf einer Funktion
Beitrag von: elajen am 12.05.05 - 13:19:12
Stimmt. Habe ich überlesen.
Titel: Re: Aufruf einer Funktion
Beitrag von: alkuhn am 12.05.05 - 13:24:58
Ich danke Euch!!!!!!!!  :)