Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: sperri am 09.08.05 - 11:55:56

Titel: nicht speichern unter lotus script??
Beitrag 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
Titel: Re: nicht speichern unter lotus script??
Beitrag von: Driri am 09.08.05 - 11:59:59
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.
Titel: Re: nicht speichern unter lotus script??
Beitrag von: Glombi am 09.08.05 - 12:02:42
Doppelposting oder was?
http://www.dominoforum.de/modules/newbb/viewtopic.php?topic_id=9262&forum=5&post_id=48655#forumpost48655
Titel: Re: nicht speichern unter lotus script??
Beitrag von: Driri am 09.08.05 - 12:07:31
 >:(
Titel: Re: nicht speichern unter lotus script??
Beitrag von: sperri am 09.08.05 - 12:10:30
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
Titel: Re: nicht speichern unter lotus script??
Beitrag von: umi am 09.08.05 - 12:17:16
wo wird den dass aufgerufen?
Was soll nicht gespeichert werden? UIdoc oder Maildoc?

evtl. hilft hier das saveoptions feld

gruss umi
Titel: Re: nicht speichern unter lotus script??
Beitrag von: sperri am 09.08.05 - 12:18:50
das uidoc soll bei einem fehler nicht gespeichert werden.
Titel: Re: nicht speichern unter lotus script??
Beitrag von: umi am 09.08.05 - 12:22:55
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
Titel: Re: nicht speichern unter lotus script??
Beitrag von: Thomas Schulte am 09.08.05 - 12:24:43
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.
Titel: Re: nicht speichern unter lotus script??
Beitrag von: sperri am 09.08.05 - 12:25:32
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
Titel: Re: nicht speichern unter lotus script??
Beitrag von: Thomas Schulte am 09.08.05 - 12:26:45
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.
Titel: Re: nicht speichern unter lotus script??
Beitrag von: Thomas Schulte am 09.08.05 - 12:28:16
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.
Titel: Re: nicht speichern unter lotus script??
Beitrag von: sperri am 09.08.05 - 12:29:48
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.
Titel: Re: nicht speichern unter lotus script??
Beitrag von: umi am 09.08.05 - 12:36:38
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
Titel: Re: nicht speichern unter lotus script??
Beitrag von: sperri am 09.08.05 - 12:38:10
ok danke ich probier mal aus
Titel: Re: nicht speichern unter lotus script??
Beitrag von: koehlerbv am 09.08.05 - 12:43:49
Mal völlig abgesehen davon: Ein maildoc.Form = "Memo" sollte auch noch in den Code mit hinein.

Bernhard
Titel: Re: nicht speichern unter lotus script??
Beitrag von: Thomas Schulte am 09.08.05 - 12:56:31
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.
Titel: Re: nicht speichern unter lotus script??
Beitrag von: sperri am 09.08.05 - 13:34:02
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
Titel: Re: nicht speichern unter lotus script??
Beitrag von: umi am 09.08.05 - 13:39:03
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 :-)
Titel: Re: nicht speichern unter lotus script??
Beitrag von: sperri am 09.08.05 - 14:05:50
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