Domino 9 und frühere Versionen > ND9: Entwicklung
Feld Wert abziehen/Substrahieren
Lurchi:
Hallo zusammen,
leider habe ich nichts passendes im Forum gefunden.
Ich habe eine Ansicht. In dieser Ansicht setze ich den Cursor auf ein bestehendes Dokument "Bereich". Dieses Dokument hat ein Feld mit der Bezeichnung "BereichBudget".
Wenn ich nun den unten aufgeführten Code per Klick ausführe. Öffnet sich eine Dialogbox mit der Maske "Seminar" mit Eingabefeldern. Eins dieser Feld ist das Feld "Semianrkosten". Nun soll beim Bestätigen der Dialogbox der Wert im Feld "Seminarkosten" vom Wert im Feld "BereichBudget" abgezogen/ substrahiert werden.
Mit dem Befehl:
Call doc.ReplaceItemValue("BereichBudget", - Str(newdoc.Seminarkosten(0)))
ersetzt mir es den Wert im Feld "BereichBudget" mit dem Wert vom Feld "Seminarkosten".
Leider zieht es mir nicht den Wert ab.
Irgendwie müsste es doch mit diesem Befehl gehen:
doc.BereichBudget(0) - newdoc.Seminarkosten(0)
Wo liegt der Fehler? Hat mir jemand eine Lösung? Bin am Verzweifeln.... :(
Sub Click(Source As Button)
Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim db As NotesDatabase
Dim newdoc As NotesDocument
Dim dlgdoc As NotesDocument
Set db = session.CurrentDatabase
Set dlgdoc = New NotesDocument(db)
'Dialog anzeigen und wenn mit OK bestätigt wird neues Dokument mit Maske Seminar angelegt.
If workspace.DialogBox( "Seminar", False, False, True, False, False, False, "Neues Dokument", dlgdoc, True) Then
'Neues Dokument mit Maske Seiminar anlegen
Set newdoc = New NotesDocument(db)
newdoc.Form = "Seminar"
'Daten aus den Dialogfeldern in die Felder der Maske Seminar einfügen
newdoc.Nachname = dlgdoc.Nachname
newdoc.Vorname = dlgdoc.Vorname
newdoc.Seminaranbieter = dlgdoc.Seminaranbieter
newdoc.Seminarkosten = dlgdoc.Seminarkosten
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Dim uiview As NotesUIView
Set uiview = workspace.CurrentView
Set doc = db.GetDocumentByID(workspace.CurrentView.CaretNoteID)
doc.BereichBudget(0) - newdoc.Seminarkosten(0)
Call doc.Save(True,False)
Set uidoc = workspace.CurrentDocument
'Neues Dokument speichern
Call newdoc.Save(True,False)
End If
End Sub
Peter Klett:
Bist Du sicher, dass doc auch das richtige Dokument ist? Ich würde mir das vor dem Öffnen der Dialogbox holen
Tode:
Eine Kombination aus Deinen beiden Zeilen ist die Lösung:
--- Code: ---Call doc.ReplaceItemValue("BereichBudget", doc.BereichBudget(0) - newdoc.Seminarkosten(0)))
--- Ende Code ---
Die Zeile doc.BereichBudget(0) - newdoc.Seminarkosten(0) macht die Berechnung. Du weist diesen Wert aber nirgends zu. Das macht doc.ReplaceItemValue()
Alternativ könntest Du -um komplett in der "verkürzten" Notation zu bleiben- das hier tun:
--- Code: ---doc.BereichBudget = doc.BereichBudget(0) - newdoc.Seminarkosten(0)))
--- Ende Code ---
Dass Dein Code nicht berücksichtigt, dass sowohl BereichBudget als auch SeminarKosten leer sein können, und dass Du "seltsame" Ergebnisse bekommst, wenn Du den Button mehrfach drückst (es werden jedesmal aufs neue die SeminarKosten vom Budget abgezogen), und dass kein ErrrorHandler generell in Verwendung ist lasse ich hier gezielt mal aussen vor...
rambrand:
Hallo Lurchi,
ich kenne zwar solche Konstrukte aus anderen Programmiersprachen, aber meines Wissens nach ist
--- Code: ---doc.BereichBudget(0) - newdoc.Seminarkosten(0)
--- Ende Code ---
in Lotusscript nicht möglich.
--- Code: ---doc.bereichbudget = doc.bereichbudget(0) - newdoc.seminarkosten(0)
--- Ende Code ---
Das sollte funktionieren. Und ReplaceItemValue macht genau das was es soll wie Du beschrieben hast. Es berechnet keine Differenzen, sondern ersetzt den Wert eines Items/Feldes.
Und das doc solltest Du vor dem Dialog setzen.
Bye,
Markus
Lurchi:
Vielen Dank rambrand und Tode. genau diese Lösung habe ich gebraucht. Als ich mir die Lösung angeschaut habe, war mir es klar. Echt blöd von mir. Es funktioniert :) Bin wohl Wochenendreif.
@ Peter Klatt: Das macht echt Sinn. Am Besten wär es, wenn geprüft wird, ob in der Ansicht ein Dokument mit der Maske "Bereich" angeklickt ist. Nur jetzt stellt sich die Frage, wie mache ich das? :-:
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln