Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Alperen15 am 01.03.11 - 13:49:30

Titel: Mailsend button
Beitrag von: Alperen15 am 01.03.11 - 13:49:30
Hallo alle zusammen. Ich habe hier eine Schaltfläche die ne mail verschicken soll, wenn man die Schaltfläche betätigt...allerdings habe ich eine Fehlermeldung "Object varialbe not set" an der Fett markierten Stelle. Ich habe doch doc definiert. Würde mich sehr freuen wenn Ihr mir sagen würdet was genau da falsch ist.


Sub Click(Source As Button)
   
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim db As NotesDatabase
   Dim names As NotesDatabase
   Dim namesdoc As NotesDocument
   Dim ProfilDoc As NotesDocument
   Dim uid As String
   Dim namespath As Variant
   Dim email As NotesDocument
   Dim rtitem As NotesRichTextItem
   
   Set db = session.CurrentDatabase
   Set uidoc = ws.CurrentDocument   
   Set doc = uidoc.Document
   
   
   If doc.fdNeuVerantwortlicher = "" Then
      'email versenden
      Set email = New NotesDocument(db)
      email.Form = "Memo"
      email.Subject = "Ein neuer Verbesserungsvorschlag ist eingetroffen"
      Set rtitem = New NotesRichTextItem( email, "Body" )
      Call rtitem.AppendText( "Umsetzung des Vorschlags wurde durch den LAS freigegeben. Link zum Dokument --> " )
      Call rtitem.AppendDocLink(doc, "link to document" )      
      Call email.Send( False, doc.fdVerantwortlicher)   
      Msgbox("Verantwortlicher wird informiert")
   Else
      'email versenden
      Set email = New NotesDocument(db)
      email.Form = "Memo"
      email.Subject = "Ein neuer Verbesserungsvorschlag ist eingetroffen"
      Set rtitem = New NotesRichTextItem( email, "Body" )
      Call rtitem.AppendText( "Umsetzung des Vorschlags wurde durch den LAS freigegeben. Link zum Dokument -->" )
      Call rtitem.AppendDocLink(doc, "link to document" )      
      Call email.Send( False, doc.fdNeuVerantwortlicher)   
      Msgbox("Verantwortlicher wird informiert")
   End If
   
   doc.fdYesNo4 = "Yes"
   doc.fdNameYes4= session.CommonUserName
   doc.fdDatumYes4 = Now
   
   'doc speichern
   Call uidoc.Refresh
   Call doc.Save(True, False)
End Sub
Titel: Re: Mailsend button
Beitrag von: oxyd21 am 01.03.11 - 13:53:27
If doc.fdNeuVerantwortlicher(0) = "" Then
Titel: Re: Mailsend button
Beitrag von: koehlerbv am 01.03.11 - 13:59:07
Das ergibt aber einen Type mismatch statt "Object variable not set".

Bernhard
Titel: Re: Mailsend button
Beitrag von: Alperen15 am 01.03.11 - 14:04:33
Danke oxyd21, jep Bernahrd hast recht  :)
Titel: Re: Mailsend button
Beitrag von: Peter Klett am 01.03.11 - 14:10:07
Das hattest Du nicht gefragt, bekommst aber trotzdem eine Antwort: Du schreibst viel Script doppelt. Dabei unterscheiden sich die beiden Mails nur darin, aus welchem Feld der Empfänger gezogen wird. Dein Code wird dadurch schwerer les- und wartbar. Versuche, alles nur einmal zu schreiben.

sinngemäß:

Dim verantwortlicher As Variant
If doc.fdNeuVerantwortlicher (0) = "" Then
   verantwortlicher = doc.fdNeuVerantwortlicher
Else
   verantwortlicher = doc.fdVerantwortlicher
End If
'email versenden
....
Call email.Send( False, verantwortlicher) 
....

Natürlich gibt es noch viele andere Möglichkeiten, das zu schreiben, aber vermeide Doppeltes !
Titel: Re: Mailsend button
Beitrag von: atbits am 01.03.11 - 14:11:22
Peter hat Recht ...

Und ganz Verwegene machen für sowas sogar schon mal ne eigene function
Titel: Re: Mailsend button
Beitrag von: koehlerbv am 01.03.11 - 14:14:12
Noch übler ist, dass "Alperen" immer nur Code findet, der keinen ErrorHandler hat  ;)

Bernhard