Autor Thema: Problem mit WebQuerySave  (Gelesen 1677 mal)

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Problem mit WebQuerySave
« am: 03.02.05 - 14:34:15 »
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
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: Problem mit WebQuerySave
« Antwort #1 am: 03.02.05 - 14:55:30 »
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
+++To be human is more important than to be important!+++

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re: Problem mit WebQuerySave
« Antwort #2 am: 03.02.05 - 15:19:39 »
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

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
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Problem mit WebQuerySave
« Antwort #3 am: 03.02.05 - 15:36:03 »
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
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re: Problem mit WebQuerySave
« Antwort #4 am: 03.02.05 - 15:45:41 »
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

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
« Letzte Änderung: 03.02.05 - 15:47:33 von HarryB »
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: Problem mit WebQuerySave
« Antwort #5 am: 03.02.05 - 16:15:33 »
Hi,
nur mal so als Vorschlag: Mach Dir doch vor dem Funktionsaufruf mal eine msgbox mit dem Übergabewert in den WQS-Agenten, damit Du siehst, ob überhaupt was übergeben wird.

Thomas
+++To be human is more important than to be important!+++

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re: Problem mit WebQuerySave
« Antwort #6 am: 03.02.05 - 16:18:46 »
Wo wird denn die msgBox im WQS dargestellt? An welcher Stelle meinst du denn, soll ich welche Variable prüfen?

Viele Grüße
Harry
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: Problem mit WebQuerySave
« Antwort #7 am: 03.02.05 - 16:29:45 »
Hi,
 die msgbox wird an sich nicht dargestellt, sondern der Inhalt in die Serverkonsole geprintet, wenn der Agent auf dem Server läuft.

Und ich meine den Wert, den Du an die Funktion aus der Library übergibst (isInternal).

Evtl. wird ja dort schon nix weitergereicht?

obwohl ...  Der boolsche Wert dort sollte in jedem Fall erzeugt werden, gell? ::)

Dann mach doch in die Library-Funktion auch noch mal ein paar msg-boxen, dann siehst Du auf jeden Fall, ob das Dingen überhaupt angezogen wird und läuft.

Thomas
+++To be human is more important than to be important!+++

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re: Problem mit WebQuerySave
« Antwort #8 am: 03.02.05 - 18:19:21 »
Hm, ich bekomme irgendwo einen Type Mismatch, aber ich habe keine Ahnung wo...  ???

Viele Grüße
Harry
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re: Problem mit WebQuerySave
« Antwort #9 am: 03.02.05 - 18:28:12 »
Zitat
isInternal = (doc.GetItemValue("_isInternalResearcher") = "-1")
Fehlerhafte Zeile entdeckt. Korrekt ist:
Zitat
isInternal = (doc.GetItemValue("_isInternalResearcher")(0) = "-1")

Viele Grüße
Harry
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz