Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: Haku am 15.04.14 - 08:54:07

Titel: Lotus Script If bei einer Messagebox
Beitrag von: Haku am 15.04.14 - 08:54:07
Hallo Community,

ich habe einen Button der mit LS programmiert wurde.

Wenn man auf den Button drück kommt ein Promt Feld mit Ok Abbrechen. Wenn man jetzt Ok drückt soll eine Mail verschickt werden. (Das Funktioniert auch)

Wenn ich auf Abbrechen drücke, wird die Mail auch verschickt.

Einfach gesagt, was für einen Code/Syntax muss ich verwenden, das es die Mail nur verschickt wenn ich bei dem Promt Feld auf Ok geklickt habe?

Danke
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: Tode am 15.04.14 - 08:57:50
Falscher Ansatz: Zeig uns Deinen Code, und wir sagen Dir, was falsch daran ist.... Dann kann nämlich de rnächste, der hier drüber stolpert auch noch was aus dem Thread lernen.

Ausserdem: Falsches Unterforum, das gehört in die Entwicklung, nicht in die Administration...
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: Glombi am 15.04.14 - 10:10:12
Wenn Du die LS Prompt Funktion mit PROMPT_YESNO verwendet hast, kannst Du das Ergebnis abfragen:

PROMPT_YESNO, returns 1 if you select Yes. If you select No, returns 0.

Bspw so
dim ret as integer
...
ret = ws.Prompt(PROMPT_YESNO ,...)
if ret = 0 then
exit sub
end if


oder

if ret = 1 then
'mach was, bspw. Mail senden
end if
...und weiter im Code

Andreas
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: Haku am 15.04.14 - 10:59:59
Das ist der Code:

      Messagebox "...", 1, "Unterschrift"
      
      TmpMA = "Name"
      
      Dim TmpEditor As New NotesName(WSession.UserName)
      TmpUnterschrift = TmpEditor.common + " - " + Cstr(Date+Time)
      
      TmpMailBetreff = "..."
      macro$=|@explode("|+TmpMA+|";",")|
      TmpSendTo = Evaluate (macro$)
      Set WDocument2=New NotesDocument(WDatabase)   
      Set Wrtitem=New NotesRichTextItem(WDocument2, "Body")
      Call Wrtitem.AppendText( "...," )
      Call Wrtitem.Appendtext( "..." )
      WDocument2.Subject = TmpMailBetreff
      WDocument2.SendTo= TmpSendTo
      Call WDocument2.Send(False)
         
      ' Sysdoc => neue Nr. schreiben
      WSysDoc.Sys_PB_Nr=Cstr(TmpNeueNr)
      success =  WSysDoc.ComputeWithForm( False, False )
      Call  WSysDoc.Save( True, True )         
      
      ' UI-Doc
      WUiDoc.Save
      WUiDoc.Close
      
      Messagebox  "...", 64, "Info"
      
      Else
      End If
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: ascabg am 15.04.14 - 11:05:37
Hallo,

Die Meessagebox liefert Dir ja auch ein "Ergebnis" zurueck.

Siehe hierzu auch die Datei "lsconst.lss" im Programmverzeichnis von Notes (wo sich die Notes.exe befindet)

Code
If Messageboc("Text", 32, "Titel") = IDYES Then

    ' Anwender hat mit OK geantwortet
    ' mach was

End If


Andreas
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: Haku am 15.04.14 - 11:33:33
Ich habe jetzt diesen Code:

If Messagebox("...", 32, "...") = IDYES Then
     
      TmpMA = "Name"
     
      Dim TmpEditor As New NotesName(WSession.UserName)
      TmpUnterschrift = TmpEditor.common + " - " + Cstr(Date+Time)
     
      TmpMailBetreff = "..."
      macro$=|@explode("|+TmpMA+|";",")|
      TmpSendTo = Evaluate (macro$)
      Set WDocument2=New NotesDocument(WDatabase)   
      Set Wrtitem=New NotesRichTextItem(WDocument2, "Body")
      Call Wrtitem.AppendText( "...," )
      Call Wrtitem.Appendtext( "..." )
      WDocument2.Subject = TmpMailBetreff
      WDocument2.SendTo= TmpSendTo
      Call WDocument2.Send(False)
         
      ' Sysdoc => neue Nr. schreiben
      WSysDoc.Sys_PB_Nr=Cstr(TmpNeueNr)
      success =  WSysDoc.ComputeWithForm( False, False )
      Call  WSysDoc.Save( True, True )         
     
      ' UI-Doc
      WUiDoc.Save
      WUiDoc.Close
     
      Messagebox  "...", 64, "Info"
     
      End If

End Sub

Wenn ich speichern will kommt jetzt die Meldung: Unexpected Sub | Expected If

Was muss ich jetzt machen?

Ach und "ascabg", bei deinem Code hast Du "Messageboc" geschrieben.(:
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: ascabg am 15.04.14 - 11:47:36
Hallo,

Ist das der ganze Code?


Andreas

P.S.:
Zitat
Ach und "ascabg", bei deinem Code hast Du "Messageboc" geschrieben.(:
Eine Goldwaage steht aber nicht auf Deinem Tisch?  ;D
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: thkn777 am 15.04.14 - 11:52:27
@Haku
Wenn das der ganze Code ist, dann fehlt sowas wie

Code
Sub MeineTolleProzedur (parameter as String)

vor dem ersten IF  ;)

Zu Deiner eigentlichen Frage:
In der Lotus Notes Hilfe unter "MessageBox function and statement" ist das ziemlich genau beschrieben. Falls Du die Developer-Hilfe gerade nicht als Notes-DB zur Hand hast, kannst Du auch hier gucken: http://www-12.lotus.com/ldd/doc/domino_notes/rnext/help6_designer.nsf/f4b82fbb75e942a6852566ac0037f284/427aacc7d5a2bf6385256c54004c612f?OpenDocument

Wenn Du also an das %INCLUDE denkst oder bei Deiner IF Messagebox... Abfrage statt IDYES die passende Zahl zur Abfrage verwendest, bist Du wieder einen Schritt weiter.

Viel Erfolg,
Th.
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: Haku am 15.04.14 - 11:54:44
Nein, der ganze Code hat 250 Zeilen, und ich dachte es reicht erstmal den Teil zu schreiben der nicht funktioniert.
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: Peter Klett am 15.04.14 - 12:04:47
Wenn ich speichern will kommt jetzt die Meldung: Unexpected Sub | Expected If

Was muss ich jetzt machen?
Du zählst die Ifs und End Ifs durch, da fehlt Dir wenigstens ein End If
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: Haku am 16.04.14 - 09:38:42
Ich habe den Button jetzt "fast" hinbekommen, ich hätte noch eine Frage zu der "Return value".

Mein Code lautet jetzt:

If Messagebox("Frage?", 32, "Unterschrift") = IDYES Then
'Sendet Mail
End if

Wenn ich jetzt die Messagebox bestätige oder das Fenster schieße ignoriert der Button die Befehle, allerdings soll der Button die Befehle durchführen wenn ich die Frage bestätige.

Ich habe auch schon "<>" probiert, dort werden die Befehle immer ausgeführt.

Hoffe mein Problem ist für Euch verständlich, und vielen Dank für die Hilfe:)
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: ata am 16.04.14 - 09:52:22
... du hast die Konstanten vermutlich nicht eingebunden - daher kann er nicht richtig entscheiden.
Lass die den Rückgabewert der Messagebox ausgeben und nimm ihn als Zahl

ret = Messagebox("Frage?", 32, "Unterschrift")
Print "Rückgabe = " & ret

da müsste dann in der Statusleiste eine Zahl erscheinen - je nach OK oder Cancel. Diese Zahl nimmst du dann anstelle der Konstanten.


Das ist doch die falsche Ziffer - mit 32 erhälst du kein ja oder Nein - sondern nur OK

Toni
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: ata am 16.04.14 - 10:01:31
... die richtige Ziffer ist 36 - und die Rückgabe für Ja ist dann 6

Toni ;-)
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: pram am 16.04.14 - 10:10:27
Tut euch und ggf. dem nächsten Entwickler einen Gefallen und verwendet keine Zahlen sondern die Konstanten aus der lsconst.lss  ;D

MB_ICONQUESTION + MB_YESNO = 36


Ausschnitt:
Code
'-----------------------------------------------------------------------------
' MsgBox parameters
'-----------------------------------------------------------------------------

Public Const MB_OK = 0                 ' OK button only
Public Const MB_OKCANCEL = 1           ' OK and Cancel buttons
Public Const MB_ABORTRETRYIGNORE = 2   ' Abort, Retry, and Ignore buttons
Public Const MB_YESNOCANCEL = 3        ' Yes, No, and Cancel buttons
Public Const MB_YESNO = 4              ' Yes and No buttons
Public Const MB_RETRYCANCEL = 5        ' Retry and Cancel buttons

Public Const MB_ICONSTOP = 16          ' Critical message
Public Const MB_ICONQUESTION = 32      ' Warning query
Public Const MB_ICONEXCLAMATION = 48   ' Warning message
Public Const MB_ICONINFORMATION = 64   ' Information message

Public Const MB_APPLMODAL = 0	       	' Application Modal Message Box
Public Const MB_DEFBUTTON1 = 0	      ' First button is default
Public Const MB_DEFBUTTON2 = 256       ' Second button is default
Public Const MB_DEFBUTTON3 = 512       ' Third button is default
Public Const MB_SYSTEMMODAL = 4096     ' System Modal

'-----------------------------------------------------------------------------
' MsgBox return values
'-----------------------------------------------------------------------------

Public Const IDOK = 1                  ' OK button pressed
Public Const IDCANCEL = 2              ' Cancel button pressed
Public Const IDABORT = 3               ' Abort button pressed
Public Const IDRETRY = 4               ' Retry button pressed
Public Const IDIGNORE = 5              ' Ignore button pressed
Public Const IDYES = 6                 ' Yes button pressed
Public Const IDNO = 7                  ' No button pressed


Gruß
Roland
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: koehlerbv am 16.04.14 - 10:16:10
Ein einfaches Option Declare hätte zudem einen solchen Basisfehler gleich angezeigt.
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: Haku am 16.04.14 - 10:26:44
Mein Code lautet jetzt:

If Messagebox("Report versenden?", 32, "Unterschrift") = 36 Then
'Mail senden
End if

Stimmt das überhaupt so? Entschuldigung, aber ich kenne mich mit LS fast nicht aus.
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: Peter Klett am 16.04.14 - 10:31:37
Nein, wenn Du die Konstanten ignorierst, muss es so lauten

If Messagebox("Report versenden?", 32 + 4, "Unterschrift") = 6 Then
'Mail senden
End if
Titel: Re: Lotus Script If bei einer Messagebox
Beitrag von: Haku am 16.04.14 - 10:36:06
Vielen Dank es geht!:)