Domino 9 und frühere Versionen > ND6: Entwicklung

Gültigkeit von Variablen

(1/5) > >>

BigWim:
ich verstehe es einfach nicht!

Ich habe mir eine Funktion gebastelt, die per Agent Fälligkeiten von Verträgen rechnet. Nach erfolgreichem Test habe die Funktion um zwei Parameter erweitert (zwecks „universellen“ Einsatzes) und danach lief sie nicht mehr.

Nehme ich Variante 1, rennt die Funktion wie gewollt.
Nehme ich Variante 2, liefert viewCheck.GetFirstDokument Nothing zurück

Und ich verstehe nicht warum ?? Warum kann ich in diesem Fall nicht den übergebenen Parameter innerhalb der Funktion nutzen? Ist doch Standard - zumindest bei mir. Ich habe jetzt den ganzen Tag damit verbracht, herauszufinden, was ich übersehe. Vielleicht ist da jemand, der mich aufklärt ...

Vielen Dank im voraus!
Markus



*** Variante 2 ***
Sub BerechneFaelligkeiten (docCheck As NotesDocument, sNameView As String)
   
   Dim session       As New NotesSession
   Dim db          As NotesDatabase
   Dim viewCheck      As NotesView
   Dim objVZeiten      As New CVertragszeiten
   Dim iAgentstatus      As Integer
   Dim sSearch      As String
   Dim docColKonfig      As NotesDocumentCollection
   Dim docKonfig      As NotesDocument
‘   Dim docCheck      As NotesDocument
<Replace docHallo in docCheck>




*** Variante 1 ***

Sub BerechneFaelligkeiten (docHallo As NotesDocument, sNameView As String)
   
   Dim session       As New NotesSession
   Dim db          As NotesDatabase
   Dim viewCheck      As NotesView
   Dim objVZeiten      As New CVertragszeiten
   Dim iAgentstatus      As Integer
   Dim sSearch      As String
   Dim docColKonfig      As NotesDocumentCollection
   Dim docKonfig      As NotesDocument
   Dim docCheck      As NotesDocument
   
   Set db    = session.CurrentDatabase
   
   
   If docHallo Is Nothing Then
      
'      ***   VIEW neu berechnen
      
      Set viewCheck = db.GetView("KeyList\Alle\Vertrag")
'      Set viewCheck = db.GetView("KeyList\TestMarkus")
'      Set viewCheck = db.GetView (sNameView)
      Print "sNameView = " + sNameView + "; viewCheck.Name = " + viewCheck.Name
      Set docCheck = viewCheck.GetFirstDocument
      If docCheck Is Nothing Then
         Messagebox "View enthält " + Cstr(viewcheck.AllEntries.Count) + " Dokument(e)", 0, "funzt nicht"
      End If
      While Not docCheck Is Nothing
         
'         Fälligkeiten aktualisieren      
         Call objVZeiten.Berechnung (docCheck, "DebugAgentBerechnung")
         
'         Status der Berechnung
         If objVZeiten.bBerechnungOK = False Then
            docCheck.DebugAgentAktionen = "Berechnung unvollständig"
         Else
            docCheck.DebugAgentAktionen = "Berechnung OK"
         End If
         
'         nächste Dokument prüfen
         Call docCheck.Save(True, True)
         Set docCheck = viewCheck.GetNextDocument(docCheck)
      Wend
      
   Else
      
'      ***   ein Dokument neu berechnen
      
'      Fälligkeiten aktualisieren      
      Call objVZeiten.Berechnung (docHallo, "DebugAgentBerechnung")
      
'      Status der Berechnung
      If objVZeiten.bBerechnungOK = False Then
         docHallo.DebugAgentAktionen = "Berechnung unvollständig"
      Else
         docHallo.DebugAgentAktionen = "Berechnung OK"
      End If
      
'      Dokument speichern
      Call docHallo.Save(True, True)
   End If
   
End Sub

DerAndre:
Eine Variante fehlt...

BigWim:
Sorry, ist aber nur die Beschriftung, die ich vergessen habe. Die funktionierende Variante 1 habe ich komplett gepostet.

Ich editiere mal das Ursprungsposting.

Meine Vermutung geht ja dahin, dass ich bei der fehlerhaften Variante ein Nothing für docCheck übergebe und dann im späteren Funktionsverlauf die Variable doch benutzen will - eben, das viewCheck.GetFirstDokument.

Aber kann das wirklich sein?


   Dim docKonfig      As NotesDocument
‘   Dim docCheck      As NotesDocument
<Replace docHallo in docCheck>


---> Variante 1 <--- im Ursprungspost ergänzt.

Sub BerechneFaelligkeiten (docHallo As NotesDocument, sNameView As String)
   
   Dim session       As New NotesSession
   Dim db          As NotesDatabase
   Dim viewCheck      As NotesView

DerAndre:
Wie sieht der Aufrufende Code aus?

Bitte poste jeweils den kompletten Code.
Das ist sehr sehr Mühsam sich das Lesbar zu machen.

Danke

BigWim:
Der "Aufruf"  enthielt ein "use" auf die ScriptBibliothek, die die Klasse CVertragszeiten enthält und den Funktionsaufruf, der auch in der SB untergebracht ist.

*** a) Ich habe eine Schaltfläche mit direktem Funktionsaufruf
Der "Aufruf"  enthielt ein "use" auf die ScriptBibliothek, die die Klasse CVertragszeiten enthält und den Funktionsaufruf, der auch in der SB untergebracht ist.

*** b) ich habe eine Schaltfläche, die einen Agenten starte @Command([RunAgent];".."), der den Aufruf von a) enthielt

*** c) ich habe einen zeitgesteuerten Agenten probiert, der den Aufruf aus a) hatte


Ich hoffe, ich habe es jetzt klarer dargestellt. Danke schonmal für Dein Interesse
Markus




*** Aufruf per call BerechneFaelligkeiten  (nothing, "KeyList\TestMarkus") - funktioniert.

Sub BerechneFaelligkeiten (docHallo As NotesDocument, sNameView As String)
   
   Dim session       As New NotesSession
   Dim db          As NotesDatabase
   Dim viewCheck      As NotesView
   Dim objVZeiten      As New CVertragszeiten
   Dim iAgentstatus      As Integer
   Dim sSearch      As String
   Dim docColKonfig      As NotesDocumentCollection
   Dim docKonfig      As NotesDocument
   Dim docCheck      As NotesDocument
   
   Set db    = session.CurrentDatabase
   
   
   If docHallo Is Nothing Then
      
'      ***   VIEW neu berechnen
      
'      Set viewCheck = db.GetView("KeyList\Alle\Vertrag")
'      Set viewCheck = db.GetView("KeyList\TestMarkus")
      Set viewCheck = db.GetView (sNameView)
      Print "sNameView = " + sNameView + "; viewCheck.Name = " + viewCheck.Name
      Set docCheck = viewCheck.GetFirstDocument
      If docCheck Is Nothing Then
         Messagebox "View enthält " + Cstr(viewcheck.AllEntries.Count) + " Dokument(e)", 0, "funzt nicht"
      End If
      While Not docCheck Is Nothing
         
'         Fälligkeiten aktualisieren      
         Call objVZeiten.Berechnung (docCheck, "DebugAgentBerechnung")
         
'         Status der Berechnung
         If objVZeiten.bBerechnungOK = False Then
            docCheck.DebugAgentAktionen = "Berechnung unvollständig"
         Else
            docCheck.DebugAgentAktionen = "Berechnung OK"
         End If
         
'         nächste Dokument prüfen
         Call docCheck.Save(True, True)
         Set docCheck = viewCheck.GetNextDocument(docCheck)
      Wend
      
   Else
      
'      ***   ein Dokument neu berechnen
      
'      Fälligkeiten aktualisieren      
      Call objVZeiten.Berechnung (docHallo, "DebugAgentBerechnung")
      
'      Status der Berechnung
      If objVZeiten.bBerechnungOK = False Then
         docHallo.DebugAgentAktionen = "Berechnung unvollständig"
      Else
         docHallo.DebugAgentAktionen = "Berechnung OK"
      End If
      
'      Dokument speichern
      Call docHallo.Save(True, True)
   End If
   
End Sub





*** Aufruf per call BerechneFaelligkeiten (nothing, "KeyList\TestMarkus") - funktioniert nicht.

Sub BerechneFaelligkeiten (docCheck As NotesDocument, sNameView As String)
   
   Dim session       As New NotesSession
   Dim db          As NotesDatabase
   Dim viewCheck      As NotesView
   Dim objVZeiten      As New CVertragszeiten
   Dim iAgentstatus      As Integer
   Dim sSearch      As String
   Dim docColKonfig      As NotesDocumentCollection
   Dim docKonfig      As NotesDocument
   
   Set db    = session.CurrentDatabase
   
   
   If docCheck Is Nothing Then
      
'      ***   VIEW neu berechnen
      
'      Set viewCheck = db.GetView("KeyList\Alle\Vertrag")
'      Set viewCheck = db.GetView("KeyList\TestMarkus")
      Set viewCheck = db.GetView (sNameView)
      Print "sNameView = " + sNameView + "; viewCheck.Name = " + viewCheck.Name
      Set docCheck = viewCheck.GetFirstDocument
      If docCheck Is Nothing Then
         Messagebox "View enthält " + Cstr(viewcheck.AllEntries.Count) + " Dokument(e)", 0, "funzt nicht"
      End If
      While Not docCheck Is Nothing
         
'         Fälligkeiten aktualisieren      
         Call objVZeiten.Berechnung (docCheck, "DebugAgentBerechnung")
         
'         Status der Berechnung
         If objVZeiten.bBerechnungOK = False Then
            docCheck.DebugAgentAktionen = "Berechnung unvollständig"
         Else
            docCheck.DebugAgentAktionen = "Berechnung OK"
         End If
         
'         nächste Dokument prüfen
         Call docCheck.Save(True, True)
         Set docCheck = viewCheck.GetNextDocument(docCheck)
      Wend
      
   Else
      
'      ***   ein Dokument neu berechnen
      
'      Fälligkeiten aktualisieren      
      Call objVZeiten.Berechnung (docCheck, "DebugAgentBerechnung")
      
'      Status der Berechnung
      If objVZeiten.bBerechnungOK = False Then
         docCheck.DebugAgentAktionen = "Berechnung unvollständig"
      Else
         docCheck.DebugAgentAktionen = "Berechnung OK"
      End If
      
'      Dokument speichern
      Call docCheck.Save(True, True)
   End If
   
End Sub

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln