Berechnen von Feldern im Notes Designer / 'On Change' in Subform / LotusScript

  • Hallo ForumsmitgliederInnen,


    ich habe das Netz und die Beiträge schon nach der Lösung durchforstet, doch nichts Passendes gefunden - nur Stückwerk.
    Nach etlichen Versuchen, möchte ich die Lösungsfindung abkürzen und euch um ein wenig Zeit bitten- es sollte für euch ein Einfaches sein!


    Ich habe eine Tabelle in welcher mehrere nummerische Währungswerte eingetragen werden.
    Aus den gefüllten Feldern möchte ich eigentlich nur die Summe in einem Feld außerhalb dieser Tabelle laufend bilden.


    Die Idee war nun in den Wertefeldern in der Aktivität 'On Change' die Summe immer um den Eintrag zu erweitern.


    Folgendes Formelwerk habe ich nun zusammengestellt ... das Ergebnis ist "0"???


    Sub Onchange(Source As Field)
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim umsatz As String
    Dim umsatzsumme As String
    Dim umsatz2 As Integer
    Dim umsatzsumme2 As Integer
    Dim summe As Integer
    Set uidoc = ws.CurrentDocument


    umsatz = uidoc.FieldGetText(Cstr(Umsatz_1_1))
    umsatzsumme = uidoc.FieldGetText(Cstr(UmsatzSumme))
    umsatz2 = Val(umsatz)
    umsatzsumme2 = Val(umsatzsumme)
    summe = umsatz2 + umsatzsumme2
    Call uidoc.FieldSetText("UmsatzSumme", Cstr(summe))


    End Sub


    Für eure Hilfe wäre ich euch sehr verbunden!


    Folgendes habe ich schon probiert ohnedass es Erfolg brachte:


    ' summe = uidoc.FieldGetText(Cstr(Umsatz_1_1))
    ' summe = uidoc.FieldGetText(Umsatz_1_1)
    ' Call uidoc.FieldSetText("UmsatzSumme", summe) >> String expected
    ' Call uidoc.Document.ReplaceItemValue("UmsatzSumme", Umsatz_1_1) >> Nichts passiert
    ' Call uidoc.FieldSetText("UmsatzSumme", uidoc.FieldGetText(Umsatz_1_1)) >> String expected
    ' Call uidoc.FieldSetText("UmsatzSumme", uidoc.FieldGetText(Cstr(Umsatz_1_1))) >> "H"
    ' Call uidoc.FieldSetText("UmsatzSumme", Cint(uidoc.FieldGetText(Cstr(Umsatz_1_1)))) >> String found, Short expected
    ' Call uidoc.Document.ReplaceItemValue("UmsatzSumme", Cint(uidoc.FieldGetText(Cstr(Umsatz_1_1)))) >> String found, Short expected
    ' Call uidoc.FieldSetText("UmsatzSumme", Clng(uidoc.FieldGetText(Cstr(Umsatz_1_1)))) >> String found. Long expetced
    ' Call uidoc.FieldSetText("UmsatzSumme", Cstr(uidoc.FieldGetText(Cstr(Umsatz_1_1)))) >> "H"
    ' Call uidoc.Document.ReplaceItemValue("UmsatzSumme",uidoc.FieldGetText(Cstr(Umsatz_1_1))) >> Nichts passiert


    Beste Grüße und eine gute Zeit!

  • Hi
    Ist das das ganze Skript?


    Warum das Konstrukt mit uidoc.fieldgettext(CSTR(umsatz_1_1)) ?
    Ich nehme mal an Umsatz_1_1 ist die Bezeichnung des Feldes, dann würde der Codeschnipsel wie folgt aussehen
    umsatz = uidoc.fieldgettext("Umsatz_1_1")

  • Hallo Urs,


    dank dir für die zügige Meldung!


    Umsatz_1_1 ist definiert als Nummernfeld (Währung), daher hatte ich es noch einmal in einen String gewandelt. (wg. Fehler: Incorrect argument type; string expected)


    Ich habe scheinbar noch ein weiteres schwergewichtigeres Probelem:
    Das Ergebnis "0" ist der Inhalt des Feldes, welches rechts von Umsatz_1_1 steht- sehr merkwürdig! (Evtl. auch der Verursacher des Fehlers)


    Lasse es erst einmal bis morgen ruhen, denn es scheint doch schwerer zu sein, zwei Währungsfelder zu summieren?


    Beste Grüße und eine gute Zeit!


    Marc

  • Konnte mich nicht entfernen...
    Es war zu den falschen Variablen-Definitionen ein zeitleiches Problem.
    Nachdem ich den Aufruf aus dem 'OnChange' in 'Exiting' herübergeführt hatte, funktionierte es.


    Sub Exiting(Source As Field)
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Set uidoc = ws.CurrentDocument

    ' SUMMIEREN
    Dim umsatz As String
    Dim umsatzsumme As String
    Dim umsatz2 As Double
    Dim umsatzsumme2 As Double
    Dim summe As Double

    umsatz = uidoc.FieldGetText("Umsatz_1")
    umsatz2 = Cdbl(umsatz)
    umsatzsumme = uidoc.FieldGetText("UmsatzSumme")
    umsatzsumme2 = Cdbl(umsatzsumme)
    summe = umsatz2 + umsatzsumme2
    Call uidoc.FieldSetText("Umsatzsumme", Cstr(summe))
    End Sub


    Nun muss ich dem Feld nur noch vermitteln, dass, wenn der Wert in dem Feld geändert wird, der alte in der UmsatzSumme subtrahiert und der neue addiert wird - eine Idee?
    Kann ich im OnClick eine Variable füllen und diese dann im Exiting verwenden? Oder gibt es eine andere Lösung?