Domino 9 und frühere Versionen > ND6: Entwicklung

Problem mit WebQuerySave

(1/2) > >>

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