Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: klaussp am 18.07.05 - 11:52:07
-
Hallo Zusammen!
Ich habe eine DB in der ich ein neues Dokument anlege. Beim Laden des Dokumentes wird aus einem anderen Dokument der gleichen DB ein Wert geladen, der dann addiert wird, und bei Speicherung des neuen Dokumentes wird der addierte Wert ebenfalls in das andere Dokument zurückgeschrieben. Bis zur Version 6.5.3 funktionierte das Problemlos, seit dem wir 6.5.3 einsetzen stürzt der Client entweder ab bevor er den Wert in das andere Dok speichert, oder es wird ein völlig utopischer Wert in das andere Dokument zurückgeschrieben (immer 12 stellig)!
Hier der Code der Aktion "Speichern":
Sub Click(Source As Button)
Const Benutzer$ = "@Name([CN]; @UserName) "
Dim ws As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Dim doc As NotesDocument
Dim s As NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim cBenutzer As Variant
Dim cBenutzer1 As Variant
Dim schluessel As String
Dim nGesamt As Currency
Dim nStunden As Currency
Set uiDoc = ws.CurrentDocument
Set s = New NotesSession
Set db = s.CurrentDatabase
Set view = db.GetView("Personal-Nr")
' Prüfung, ob bei Bemerkung Freizeitausgleich das Stundenfeld negativ ist, wenn nicht dann entsprechend umrechnen
If uidoc.FieldGetText("cBemerkung") = "Freizeitausgleich" And Val(ReplaceSubstring(uidoc.FieldGetText("cStunden"),",",".")) > 0 Then
Call uidoc.FieldSetText("cStunden", Cstr(Ccur(uiDoc.FieldGetText("cStunden")) * -1))
End If
' Stammdaten suchen
schluessel = uiDoc.FieldGetText("cPers_nr")
Set Doc = view.GetDocumentByKey(schluessel, True)
cBenutzer1 = uidoc.FieldgetText("cVorname") + " " + uidoc.FieldgetText("cName") + "/A" + uidoc.FieldGetText("cStellen_nr") + "/Bank1Saar/De"
Call uidoc.Fieldsettext("SaveOptions", "1")
Call uidoc.Fieldsettext("cLeser", "[Personal]" + "," + doc.cVorgesetzter(0) + "," + "[Administrator]" + "," + "[Betriebsrat]" + "," + "," + cBenutzer1)
If uiDoc.IsNewDoc = False Then
cBenutzer = Evaluate(Benutzer$, doc)
Call uiDoc.FieldSetText("FiTxGeändert", cAltgeaendert + Chr(13) + Chr(10)+ Str(Today) + " " + Time$ + " " + cBenutzer(0))
End If
Call uidoc.Save
nStunden = Ccur(uiDoc.FieldGetText("cStunden"))
nGesamt = Ccur(Doc.cGesamtstunden(0)) + nStunden
Doc.cGesamtstunden = nGesamt
success = Doc.ComputeWithForm(False, False)
Call Doc.Save(True, False)
Call uidoc.Close
End Sub
Danke für Eure Unterstützung!
Gruß, Klaus
-
Hallo Namensvetter,
wo stürzt das Script denn ab ? Schon mal den Debugger genommen ?
klaus
-
Hier:
nStunden = Ccur(uiDoc.FieldGetText("cStunden"))
-
Ja, das ist ein Bug in R6.5.3 - der Client crasht, wenn Du einer Currency-Variablen einen Wert aus einem Currency-Item zuweist. Total bescheuert und erst ab 6.5.3, abre es ist so.
Wenn Du nStunden als Double deklarierst, ist die Welt wieder in Ordnung.
Bernhard
-
OK - dann muss ich ja nicht weiter suchen!
DANKE!!!
Gibt es eigentl. irgendwo eine offizielle Bugliste???
oder eine Inoffizielle???
-
Hier die offizielle Fixlist:
http://www.lotus.com/ldd/r5fixlist.nsf/Public?OpenView
An die inoffizielle kommt man nicht so leicht.
Andreas
-
Und dort findet man dann folgenden Eintrag:
YDJI4PRHC7 6.0.5,6.5.4 01/27/2005 Fixed a Client crash when using the method "ReplaceItemValue" with the type "Currency".
Bernhard