Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: sperri am 09.08.05 - 11:55:56
-
Hallo,
ich will im error handle festlegen das das dokument nicht gespeichert werden soll.
Weiß jemand wie unter lotus script die anweisung aussieht?
Danke
-
An welcher Stelle denn genau ? Im Querysave-Event z.B. mit Continue=False.
Wenn das in einer Sub ist, kannst Du mit Exit Sub aussteigen.
Bißchen mehr Infos und Code wären schon praktisch.
-
Doppelposting oder was?
http://www.dominoforum.de/modules/newbb/viewtopic.php?topic_id=9262&forum=5&post_id=48655#forumpost48655
-
>:(
-
Aslo der Code sieht so aus
Sub Submit
REM Subroutine to sign new BMT Order and to send it to accountant
Dim uiwork As New Notesuiworkspace
Dim maildoc As Notesdocument
Dim rtitem As NotesRichTextItem
Dim answer As Integer
On Error Goto ErrorHandle
Set uidoc=uiwork.CurrentDocument
Set doc=uidoc.Document
If Not OrderIsReady(uidoc) Then Exit Sub
answer=Messagebox("Are you sure that you want to sign this document?",36, dbtitle)
If answer<>6 Then Exit Sub
uidoc.EditMode=True
If(doc.accountant(0) <> "" ) Then
Call doc.ReplaceItemValue("StageG",10)
End If
If(doc.accountant2(0) <> "" ) Then
Call doc.ReplaceItemValue("StageG",20)
End If
Set maildoc=doc.Parentdatabase.CreateDocument
maildoc.SendTo=doc.AccountantEMail
maildoc.SendTo= Arrayappend(maildoc.SendTo, doc.AccountantEMail2)
maildoc.SendTo= Arrayappend(maildoc.SendTo, doc.AccountantEMail3)
maildoc.SendTo= Arrayappend(maildoc.SendTo, doc.AccountantEMail4)
maildoc.SendTo= Arrayappend(maildoc.SendTo, doc.AccountantEMail5)
maildoc.SendTo= Arrayappend(maildoc.SendTo, doc.AccountantEMail6)
maildoc.SendTo= Arrayappend(maildoc.SendTo, doc.AccountantEMail7)
maildoc.SendTo= Arrayappend(maildoc.SendTo, doc.AccountantEMail8)
maildoc.SendTo= Arrayappend(maildoc.SendTo, doc.AccountantEMail9)
maildoc.SendTo= Arrayappend(maildoc.SendTo, doc.FachlichEMail)
maildoc.SendTo=Arrayappend(maildoc.SendTo, doc.ManagerEMail)
maildoc.SendTo=Arrayappend(maildoc.SendTo, doc.ManagerEMail1)
maildoc.SendTo=Arrayappend(maildoc.SendTo, doc.FachlichEMail1)
Set rtitem=New NotesRichTextItem(maildoc,"Body")
Call rtitem.AppendText("The following PCN order needs your approval. "+_
"Click on the icon below to review this document."+Chr$(13)+Chr$(13)+"- > ")
Call rtitem.AppendDocLink(doc,"")
Call doc.ReplaceItemValue("Stage",10)
'AssignReqNum
Call uidoc.refresh
Call doc.ReplaceItemValue("RDate", Date)
Call uidoc.save
Print "Sending notification to accountant... Please wait"
maildoc.Subject="Process Change Notice: "+doc.LFD_Num(0)
' maildoc.Subject="BMT order "+doc.BMTnumber(0)
Call maildoc.Send(False)
Print " "
Call uidoc.close
ErrorHandle:
Dim status As String
status$ = "Fehler! " & ": " & Error()
Messagebox(status$)
hier nicht speichern
Exit Sub
End Sub
-
wo wird den dass aufgerufen?
Was soll nicht gespeichert werden? UIdoc oder Maildoc?
evtl. hilft hier das saveoptions feld
gruss umi
-
das uidoc soll bei einem fehler nicht gespeichert werden.
-
Meine Kugel verrät mir, dass Submit durch einen Button ausgelöst wird und nicht im QuerySave. Dann würde das UIDOC ja nur gespeichert, beim Aufruf von uidoc.save().
D.h. wenn es zu einem Fehler vor uidoc.save() kommt, springt er in den Errorhandler, bringt die Meldung und das wars. UIdoc wird dann ja nicht mehr gespeichert.
Wenn der Code im QuerySave aufgerufen würde, müsste nur die Variable Continue des QuerySave events auf false gesetzt werden.
gruss umi
-
Ja und, da du das in einem eigenen Submit programmiert hast wird das doch auch nicht gespeichert, da du die Sub nach einem Error mit Exit Sub verlässt und damit call uidoc.save nicht mehr zieht.
Was ganz anderes ist die Tatsache das es unter Umständen möglich sein kann das ich das Dokument trotzdem speichere wenn ich ganz normal über den QuerySave Event, der für solche Stunts eigentlich da ist gehe.
-
das is richtig aber was passiert wenn der fehler nach dem speichern auftritt. z.b wenn die mail adresse falsch ist?
dann soll das uidoc nicht gespeichert werden
-
Wenn der Code im QuerySave aufgerufen würde, müsste nur die Variable Continue des QuerySave events auf false gesetzt werden.
Und wenn er das haben will dann muss die Submit keine Sub mehr sein sondern eine Function und einen Error zurückliefern wenn sie nicht richtig funktioniert hat.
-
das is richtig aber was passiert wenn der fehler nach dem speichern auftritt. z.b wenn die mail adresse falsch ist?
dann soll das uidoc nicht gespeichert werden
HÄH? Wie soll das denn gehen. Nach dem Speichern nicht speichern. Das wäre dann konzeptionell und logisch kompletter Humbug.
Entweder hast du deine Prüfungen durchlaufen dann darf er das Speichern oder eben nicht, dann nicht.
-
wenn die mail adresse von notes nicht gefunden werden kann oder nicht stimmt, dann wird das doc gespeichert.
das will ich mit dem error handle verhindern. ich weiß jetzt nur nicht genau wie ich die anweisung doc nicht speichern definieren soll.
-
Da wirst Du kein glück haben denke ich mal...
Da müsstest Du ja warten bis die Fehlermeldung vom Mailrouter retour kommt.
Sonst musst Du halt vorher prüfen ob es eine gültige Emailadresse ist
z.B. mit @ValidateInternetAddress
oder ob die Adresse in irgendeinem Adressbuch auftaucht.
oder aber das uidoc.save nach dem maildoc.send aufrufen?
gruss umi
-
ok danke ich probier mal aus
-
Mal völlig abgesehen davon: Ein maildoc.Form = "Memo" sollte auch noch in den Code mit hinein.
Bernhard
-
Umi hat recht, da hast du so kein Glück. Du kannst wie er gesagt hat höchstens noch die Gültigkeit deiner Email Adresse vorher überprüfen.
-
Hey @ all,
ich habe jetzt den call uidoc.save einfach hinter den mail sende teil gesetzt. das klappt auch soweit wenn die mail adresse falsch sein sollte.
das doc wird erst mal nicht gespeichet. wenn ich allerdings das doc schließe und bei der frage speichern ja/nein, nein sage, wird es trotzdem gespeichert!!
ich weiß nicht warum
Call uidoc.refresh
Call doc.ReplaceItemValue("RDate", Date)
Print "Sending notification to accountant... Please wait"
maildoc.Subject="Process Change Notice: "+doc.LFD_Num(0)
' maildoc.Subject="BMT order "+doc.BMTnumber(0)
Call maildoc.Send(False)
Print " "
Call uidoc.save
Call uidoc.close
-
Weil wenn das Dokument bearbeitet wurde und Du es schliessen willst, Notes automatische danach fragt.
Damit das auch noch abgefangen wird müsstest Du in deinem Dokument ein Saveoptions Feld einfügen (Textfeld mit Namen SaveOptions).
In deinem Errorhandler müsstest Du dann das Feld auf "0" setzen, d.h. es wird nicht automatisch gespeichert und Notes sollte auch nicht nachfragen.
gruss umi
PS: Control - S hast Du auch noch nicht abgefangen :-)
-
Hab folgendes gemacht:
Call uidoc.refresh
Call doc.ReplaceItemValue("RDate", Date)
Print "Sending notification to accountant... Please wait"
maildoc.Subject="Process Change Notice: "+doc.LFD_Num(0)
' maildoc.Subject="BMT order "+doc.BMTnumber(0)
Call maildoc.Send(False)
Print " "
Call uidoc.save
Call uidoc.close
ErrorHandle:
'nicht speichern
Dim status As String
status$ = "Fehler! " & Error()
Messagebox(status$)
Call uidoc.fieldsettext( "SaveOptions" , "0")
Exit Sub
jetzt wird zwar nicht mehr nach speichern gefragt aber es werden jetzt 2 dokumente gespeichert