Domino 9 und frühere Versionen > ND6: Entwicklung
Problem mit WebQuerySave
HarryB:
Hallo Forum,
habe mal wieder ein Problem bei der Webentwicklung.
Nachdem ein bestimmtes Dokument eingegeben wurde, muss noch ein Feld berechnet werden. Dies ist ein wenig komplex und nur sinnvoll in einem WebQuerySave Agenten. Der funktioniert jedoch nicht richtig. Das Feld wird zwar gesetzt, aber es ist leer.
Um den Feldinhalt zu berechnen, benutze ich eine Funktion aus einer ScriptLibrary. Ist es grundsätzlich ein Problem, eine ScriptLibrary in einem WebQuerySave Agenten einzubinden? Im Notes Kontext funktioniert das einwandfrei, nur halt nicht im Zusammenhang mit dem Browser und WebQuerySave.
Viielleicht hat da ja jemand ne Idee zu.
Viele Grüße
Harry
Thomator:
Hi Harry,
also ich lehne mich mal so weit aus dem Fenster, dass ich sage:
Das Einbinden von LS-Bibliotheken in WQS- oder WQO-Agenten funktioniert astrein.
(Nutze ich selber des Öfteren)
Das Problem muss also wo anders zu finden sein. Kann es ein zeitliches Problem sein? (Wann wird denn das Feld gesetzt?)
Thomas
HarryB:
Damit wir wissen, worüber wir reden hier mal der Quellcode des Agenten:
--- Zitat ---Sub Initialize
Dim ses As New NotesSession
Dim doc As NotesDocument
Set doc = ses.DocumentContext
Dim researcherID As String
Dim isInternal As Integer
If doc.IsNewNote Then
isInternal = (doc.GetItemValue("_isInternalResearcher") = "-1")
researcherID = getResearcherID(isInternal)
Call doc.ReplaceItemValue("$researcherID", researcherID)
End If 'doc.IsNewNote
End Sub
--- Ende Zitat ---
Die Funktion 'getResearcherID' kommt aus der Bibliothek, liefert aber scheinbar einen Leerstring oder aber einen Fehler zurück. Ich habe keine Ahnung wieso, da dieselbe Funktion von Notes aus dem QuerySave eines Dokumentes heraus einwandfrei funktioniert.
Viele Grüße
Harry
animate:
noch interessanter wäre jetzt die getResearcherID-Funktion zu sehen, um zu prüfen, in welchen Fällen sie "" liefert und warum sie das in deinem Beispiel tut
HarryB:
--- Zitat ---Function getResearcherID(isInternal As Integer) As String
Dim ses As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim v As Variant
Dim tmpResearcherID As String
Set db = ses.CurrentDatabase
If isInternal Then
Set view = db.GetView("($internalResearcherIDs)")
tmpResearcherID = "in"
Else 'isInternal
Set view = db.GetView("($externalResearcherIDs)")
tmpResearcherID = "ex"
End If 'isInternal
Call view.Refresh
Set doc = view.GetFirstDocument
If Not (doc Is Nothing) Then
v = doc.GetItemValue("$researcherID")
tmpResearcherID = tmpResearcherID + Format$(Clng(Right(v(0),8)) + 1, "00000000")
Else
tmpResearcherID = tmpResearcherID + Format$(1, "00000000")
End If 'Not (doc Is Nothing)
getResearcherID = tmpResearcherID
End Function
--- Ende Zitat ---
Wie gesagt, bei einem Aufruf direkt aus Notes heraus kein Thema.
Die beiden Views sind jeweils absteigend sortiert und enthalten in der ersten Spalte die bereits vergebenen IDs. Die IDs sind wie folgt aufgebaut: Suffix ('in' für Intern, 'ex' für Extern) + 8 Stellige Zahl. Zum Beispiel: in00002635
Viele Grüße
Harry
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln