Domino 9 und frühere Versionen > ND6: Entwicklung
Gültigkeit von Variablen
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