Variablenverwendung

    • Offizieller Beitrag

    Nein, aber wenn diese unter Declarations deklariert werden, kannst du diese im PostOpen beschreiben und im QuerySave wieder auslesen.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Hi,


    Und ich ebenfalls wieder.


    Jaein.


    Nur wenn die Variablen an einer "globalen" Stelle definiert wurden
    ==> siehe z.B. Abschnitt (Declarations) einer Maske


    Definierst du die Variablen im PostOpen mit
    Dim Variablenname
    kannst Du diese im QuerySave NICHT verwenden.


    Andreas

  • Du versuchst auf eine Variable, die ein Objekt enthalten soll, zuzugreifen, ohne dass diese ein entsprechendes Objekt enthaelt.


    z.B.


    Msgbox doc.GetItemValue("Feldname")(0)


    ohne dass vorher doc mit Set als Objekt initialisiert wurde.


    Hier hilft in den meisten Faellen der Debugger weiter.


    Andreas

  • Ach man, ich verzeifel gleich. Daher hier


    mein Quellcode (neues ist fett):


    <b>'Declarations:
    Dim speicher As String


    Sub Postopen(Source As Notesuidocument)
    Dim workspace As New NotesUIWorkspace
    Set Source = workspace.CurrentDocument
    If Source.Document.m02_Lieferantenname(0) <> "" Then
    speicher = Source.Document.m02_Lieferantenname(0)
    Else
    speicher = "leer"
    End If

    End Sub</b>


    Sub Querysave(Source As Notesuidocument, Continue As Variant)
    Dim workspace As New NotesUIWorkspace
    Dim temp As String
    Dim adresse As String
    Dim super As Integer
    <b>Dim s As New NotesSession
    Dim agent As NotesAgent

    Set agent = s.CurrentDatabase.GetAgent("Lieferantenname")</b>
    Set Source = workspace.CurrentDocument
    super = 0

    If Source.Document.m02_Lieferantenname(0) = "" Then temp = "Lieferantenname" & Chr(13)

    If Source.Document.m02_LieferantenEmail(0) = "" Then
    temp = temp & "E-Mail" & Chr(13)
    Else
    adresse = Source.Document.m02_LieferantenEmail(0)
    super = Instr(adresse, "@")
    If super = 0 Then
    Msgbox("Die E-Mail enthält kein @")
    Continue = False
    End If
    End If

    If temp >< "" And (adresse ="" Or super > 0) Then
    temp = "Es sind folgende Pflichfelder nicht ausgefüllt:" & Chr(13) & temp
    Msgbox(temp)
    Continue = False
    End If
    <B>speicher <> source.Document.m02_Lieferantenname(0) And speicher <> "leer" Then
    Call agent.run
    End If</b>



    End Sub

  • Code
    Dim workspace As New NotesUIWorkspaceSet Source = workspace.CurrentDocument


    kannst Du Dir sparen, da


    Code
    Sub Postopen([b]Source[/b] As Notesuidocument)


    bereits Dein aktuelles Dokument enthaelt.

  • Das ist schon richtig.


    Aber ist agent zu diesem Zeitpunkt auch ein Objekt ?


    Set ... reicht nicht aus.
    Wenn der angegebene Agent nicht existiert, dann hast Du in agent auch kein Objekt.


    In diesem Fall ist agent=Nothing


    Andreas

  • Hach ich muss noch soooooooo viel lernen ;)


    Ich bin grad dabei nen Agenten zu machen, der wenn ich den Lieferantennamen änder, diesen in allen Dokumenten der Ansicht Bestellungen ändert.


    Das mach ich doch wieder mit NotesDocumentCollection, oder?
    Aber wie bekomm ich da alle Dokumete der Ansicht rein???


    Ach wie schön wär's, wenn man alles auf Anhieb könnte!
    Aber dafür, dass es mein zweiter Tag Lotus Script ist, fühl ich mich schon ein bisschen gut :)

    • Offizieller Beitrag

    ich würde es über eine Collection machen. Diese könnte mit getAllDocumentsbykey aufgebaut werden. Mit einem
    Call notesDocumentCollection.StampAll( "FeldName", "Wert" )
    kannst du alle Dokumente auf einen Schlag ändern. Ist performanter als eine Schleife über alle Dokumente in der Ansicht.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein