Autor Thema: Formel in Skript umwandeln  (Gelesen 3341 mal)

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Formel in Skript umwandeln
« am: 07.03.06 - 11:39:13 »
Guten Tag zusammen

Ich bin zur Zeit an der Entwicklung einer Datenbank. Jetzt habe ich aber folgendes Problem. Mein Vorgänger hat alles in Formel Sprache gemacht. Doch für die neue Datenbank brauche ich den Code als Skript. Da ich absolut keine Peilung habe von Skript, ausser ein bisschen basic frage ich mich wie man diese Formel ganz einfach in ein Skript umwandeln kann. Es geht nur um die Mail Formel:

safe:= @Prompt([YesNo];"Safety First";"Are you sure you want to set this document to active?");   

@If(safe=1;
@Do(
   @Command([EditDocument]);
   @Do(@SetField("zeigestatus"; "active"));
   @Do(@SetField("Author"; ""));
   @Command([ViewRefreshFields]);
   @Do(@Command([FileSave]);
   FIELD SaveOptions := SaveOptions;
   @SetField("SaveOptions";"0");
   @MailSend( v_username ; add_berechtigte ; blindCopyTo ; "Your E-Mail address request" ; "Dear " +v_name ; "Für weitere Informationen klicken Sie bitte auf die Verknüpfung: "; [IncludeDoclink] : [Sign] ))
);
""
)

Das Problem ist nämlich das QuerySave. Wenn jetzt ein Feld nicht ausgefüllt ist und das im QuerySave überprüft wird, wird das Mail trotzdem verschickt, darum muss ich diese Formel in das QuerySave hinzufügen. Nur ich weiss nicht wie ich das als Skript schreiben soll:
@MailSend( v_username ; add_berechtigte ; blindCopyTo ; "Your E-Mail address request" ; "Dear " +v_name ; "Für weitere Informationen klicken Sie bitte auf die Verknüpfung: "; [IncludeDoclink] : [Sign] )

Mit freundlichen Grüssen
Thomas Flach
« Letzte Änderung: 07.03.06 - 11:46:12 von judicious »

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Formel in Skript umwandeln
« Antwort #1 am: 07.03.06 - 12:37:56 »
so mal zum Anfangen.

Code

dim uiws as new notesuiworkspace
dim safe as variant
%rem
safe = uiws.prompt(PROMPT_YESNO,"Safety First","Are you...")
if safe = 1 then

end if
safe:= @Prompt([YesNo];"Safety First";"Are you sure you want to set this document to active?");   

@If(safe=1;
@Do(
   @Command([EditDocument]);
   @Do(@SetField("zeigestatus"; "active"));
   @Do(@SetField("Author"; ""));
   @Command([ViewRefreshFields]);
   @Do(@Command([FileSave]);
   FIELD SaveOptions := SaveOptions;
   @SetField("SaveOptions";"0");
   @MailSend( v_username ; add_berechtigte ; blindCopyTo ; "Your E-Mail address request" ; "Dear " +v_name ; "Für weitere Informationen klicken Sie bitte auf die Verknüpfung: "; [IncludeDoclink] : [Sign] ))
);
""
)

%endrem


Sieh dir mal die Notesuiworkspace und NotesuiDocument und NotesDocument Klassen an in der Designerhilfe
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Formel in Skript umwandeln
« Antwort #2 am: 07.03.06 - 12:48:26 »
Super Vielen Dank, das bringt mich bei einem anderen Problem schon viel weiter :)

Doch für mein jetztiges Problem brauche ich nur das in der Skript Sprache:
@MailSend( v_username ; add_berechtigte ; blindCopyTo ; "Your E-Mail address request" ; "Dear " +v_name ; "Für weitere Informationen klicken Sie bitte auf die Verknüpfung: "; [IncludeDoclink] : [Sign] )

Offline ghost

  • Aktives Mitglied
  • ***
  • Beiträge: 174
  • Geschlecht: Männlich
  • Notes ist gut!
Re: Formel in Skript umwandeln
« Antwort #3 am: 07.03.06 - 12:58:55 »
Versuche es mit der Send-Methode der NotesDocument Klasse.

Viele Grüße
ghost

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Formel in Skript umwandeln
« Antwort #4 am: 07.03.06 - 13:00:59 »
Hi,

Und nicht zu vergessen die Klasse "NotesRichTextItem", da ja Doclinks versendet werden sollen.

Andreas

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Formel in Skript umwandeln
« Antwort #5 am: 07.03.06 - 13:03:34 »
Soviel ich jetzt aus den Helpnotes lesen konnte sollte mein Script irgend wie so aussehen. Stimmt das ungefähr?
Code
		Dim ses As New NotesSession
		Dim ndbCurrentDB As NotesDatabase
		Dim docMailDocument As NotesDocument
		Dim rtBody As NotesRichTextItem
		Dim nSendto As NotesName
		
		Set ndbCurrentDB = ses.CurrentDatabase
		Set docMailDocument = New NotesDocument( ndbCurrentDB )
		Set rtBody = docMailDocument.CreateRichTextItem( "Body" )
		Set nSendto = ses.CreateName(sSendto)
		
	'Set Fields for the Mail
		docMailDocument.SendTo = v_name
		docMailDocument.Subject = "Your Email request"
		
	'Set Body Field for the Mail
		Call rtBody.AppendText( "Guten Tag" )
		Call rtBody.AddNewLine( 2 )
		
		Call rtBody.AppendText( sMailtext )
		Call rtBody.AddNewLine( 1)
		Call rtBody.AppendDocLink( docRequestdoc, "Zum Antrag gehen")
		Call rtBody.AppendText( " - Link zum Dokument" )
		Call rtBody.AddNewLine( 2)
		
		Call rtBody.AppendText( "Mit freundlichen Grüssen" )
		Call rtBody.AddNewLine( 2 )
		Call rtBody.AppendText(sOriginator )
		
	'Send the Mail
		Call docMailDocument.Send( True )	

Hmm funktioniert irgend wie nicht. Diese beiden Fehler kommen.
« Letzte Änderung: 07.03.06 - 13:15:27 von judicious »

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Formel in Skript umwandeln
« Antwort #6 am: 07.03.06 - 13:15:35 »
Hallo

So sollte aussehen!
DU musst nur noch um CopyTo etc. erweitern

Dirk
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Formel in Skript umwandeln
« Antwort #7 am: 07.03.06 - 13:26:30 »
wo werden den diese bieden Variabeln gesetzt?

Code
Call rtBody.AppendDocLink( docRequestdoc, "Zum Antrag gehen")
docMailDocument.SendTo = v_name
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Formel in Skript umwandeln
« Antwort #8 am: 07.03.06 - 13:32:55 »
Da ich nicht skripten kann, kann es vorkommen das ich echt dumme Fehler mache, also bitte nicht hauen ;)

      Dim uiws As New notesuiworkspace
      Dim ses As New NotesSession
      Dim ndbCurrentDB As NotesDatabase
      Dim docMailDocument As NotesDocument
      Dim rtBody As NotesRichTextItem
      Dim nSendto As NotesName
      
      Dim v_name As String
      
      Set ndbCurrentDB = ses.CurrentDatabase
      Set docMailDocument = New NotesDocument( ndbCurrentDB )
      Set rtBody = docMailDocument.CreateRichTextItem( "Body" )
      Set nSendto = ses.CreateName(sSendto)
      
   'Set Fields for the Mail
      docMailDocument.SendTo = v_name
      docMailDocument.Subject = "Your Email request"
      
   'Set Body Field for the Mail
      Call rtBody.AppendText( "Guten Tag" )
      Call rtBody.AddNewLine( 2 )
      
      Call rtBody.AppendText( sMailtext )
      Call rtBody.AddNewLine( 1)
      Call rtBody.AppendDocLink( docRequestdoc, "Zum Antrag gehen")
      Call rtBody.AppendText( " - Link zum Dokument" )
      Call rtBody.AddNewLine( 2)
      
      Call rtBody.AppendText( "Mit freundlichen Grüssen" )
      Call rtBody.AddNewLine( 2 )
      Call rtBody.AppendText(sOriginator )
      
   'Send the Mail
      Call docMailDocument.Send( False )

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Formel in Skript umwandeln
« Antwort #9 am: 07.03.06 - 13:40:18 »
Wir hauen doch nicht.... wir schiessen :-)
v_name ist immer noch leer
Set nSendto = ses.CreateName(sSendto) ist ein wenig komisch?
evtl. hilft dir folgendes
Code
dim v_username as string
dim berechtigte as string
dim blindCopyTo as string
....
v_username = source.fieldgettext("v_username")
berechtigte = source.fieldgettext("berechtigte")
blindCopyTo = source.fieldgettext("blindCopyto")
...
...

docMailDocument.SendTo = v_username
docMailDocument.copyto = berechtigte
docMaildocument.BlindCopyTo = blindcopyto
....
set  docRequestDoc = source.document
...

...
Ausserdem solltest du unter Options noch ein Option Declare einfügen. Damit entgehst Du eineigen der gröbsten Fehler....
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Formel in Skript umwandeln
« Antwort #10 am: 07.03.06 - 13:44:31 »
Immer noch nicht  ???



Code
Dim uiws As New notesuiworkspace
		Dim ses As New NotesSession
		Dim ndbCurrentDB As NotesDatabase
		Dim docMailDocument As NotesDocument
		Dim rtBody As NotesRichTextItem
		Dim nSendto As NotesName
		
		Dim v_username As String
		Dim blindCopyTo As String	
		
		v_username = source.fieldgettext("v_username")
		
		Set ndbCurrentDB = ses.CurrentDatabase
		Set docMailDocument = New NotesDocument( ndbCurrentDB )
		Set rtBody = docMailDocument.CreateRichTextItem( "Body" )
		Set nSendto = ses.CreateName(sSendto)
		
	'Set Fields for the Mail
		docMailDocument.SendTo = v_username
		docMailDocument.Subject = "Your Email request"
		
		Set  docRequestDoc = source.document
		
	'Set Body Field for the Mail
		Call rtBody.AppendText( "Guten Tag" )
		Call rtBody.AddNewLine( 2 )
		
		Call rtBody.AppendText( sMailtext )
		Call rtBody.AddNewLine( 1)
		Call rtBody.AppendDocLink( docRequestdoc, "Zum Antrag gehen")
		Call rtBody.AppendText( " - Link zum Dokument" )
		Call rtBody.AddNewLine( 2)
		
		Call rtBody.AppendText( "Mit freundlichen Grüssen" )
		Call rtBody.AddNewLine( 2 )
		Call rtBody.AppendText(sOriginator )
		
	'Send the Mail
		Call docMailDocument.Send( False )

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 478
Re: Formel in Skript umwandeln
« Antwort #11 am: 07.03.06 - 13:49:08 »
Woher kommt sSendTo  (für Notesname) ?

Glombi

  • Gast
Re: Formel in Skript umwandeln
« Antwort #12 am: 07.03.06 - 13:50:02 »
Mein Vorschlag:

Dim uiws As New notesuiworkspace
      Dim ses As New NotesSession
      Dim ndbCurrentDB As NotesDatabase
      Dim docMailDocument As NotesDocument
      Dim rtBody As NotesRichTextItem      
      Dim v_username As String
      
      v_username = source.fieldgettext("v_username")
      
      Set ndbCurrentDB = ses.CurrentDatabase
      Set  docRequestDoc = Source.document

      Set docMailDocument = ndbCurrentDB.CreateDocument
         
   'Set Fields for the Mail
docMailDocument.Form = "Memo"
      docMailDocument.SendTo = v_username
      docMailDocument.Subject = "Your Email request"
      
      
   'Set Body Field for the Mail
      Set rtBody = New NotesRichTextItem( docMailDocument, "Body" )

      Call rtBody.AppendText( "Guten Tag" )
      Call rtBody.AddNewLine( 2 )
      
      Call rtBody.AppendText( sMailtext )
      Call rtBody.AddNewLine( 1)
      Call rtBody.AppendDocLink( docRequestdoc, "Zum Antrag gehen")
      Call rtBody.AppendText( " - Link zum Dokument" )
      Call rtBody.AddNewLine( 2)
      
      Call rtBody.AppendText( "Mit freundlichen Grüssen" )
      Call rtBody.AddNewLine( 2 )
      Call rtBody.AppendText(sOriginator )
      
   'Send the Mail
      Call docMailDocument.Send( False )

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Formel in Skript umwandeln
« Antwort #13 am: 07.03.06 - 13:52:17 »
Hmmm..... Jetzt motzt Notes es hätte kein Default View für meine Datenbank

Glombi

  • Gast
Re: Formel in Skript umwandeln
« Antwort #14 am: 07.03.06 - 13:56:50 »
Dann gib Notes doch eine  ;D

Die brauchst Du für den Doklink. Ohne geht es nicht, auch nicht mit der Formelsprache.

Andreas

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Formel in Skript umwandeln
« Antwort #15 am: 07.03.06 - 14:03:03 »
@MailSend( antragsteller ; copyTo ; blindCopyTo ; "Your E-Mail address request" ; "Dear " +v_name ; "Für weitere Informationen klicken Sie bitte auf die Verknüpfung: "; [IncludeDoclink] : [Sign] );

Das klappt aber? Also da kommt kein Error und der Link wird auch geschickt.

ICh habe hier noch etwas anderes, dort kommt aber immer der Fehler ich rufe eine unbekannte Funktion auf. Bei den Scripts ist dieses File: lib20SendMail
Code
Sub SendMail(sSendto As String, sSubject As String, sMailtext As String, _ 
docRequestdoc As NotesDocument, sOriginator As String)
	
	Dim ses As New NotesSession
	Dim ndbCurrentDB As NotesDatabase
	Dim docMailDocument As NotesDocument
	Dim rtBody As NotesRichTextItem
	Dim nSendto As NotesName
	
	Set ndbCurrentDB = ses.CurrentDatabase
	Set docMailDocument = New NotesDocument( ndbCurrentDB )
	Set rtBody = docMailDocument.CreateRichTextItem( "Body" )
	Set nSendto = ses.CreateName(sSendto)
	
	'Set Fields for the Mail
	docMailDocument.SendTo = nSendto.Abbreviated
	docMailDocument.Subject = sSubject
	
	'Set Body Field for the Mail
	Call rtBody.AppendText( "Guten Tag" )
	Call rtBody.AddNewLine( 2 )
	
	Call rtBody.AppendText( sMailtext )
	Call rtBody.AddNewLine( 1)
	Call rtBody.AppendDocLink( docRequestdoc, "Zum Antrag gehen")
	Call rtBody.AppendText( " - Link zum Dokument" )
	Call rtBody.AddNewLine( 2)
	
	Call rtBody.AppendText( "Mit freundlichen Grüssen" )
	Call rtBody.AddNewLine( 2 )
	Call rtBody.AppendText(sOriginator )
	
	'Send the Mail
	Call docMailDocument.Send( False )
End Sub

Dann habe ich einen Button der das macht:
Code
Sub Click(Source As Button)
	

	Dim vReaders As Variant	'The Readers of the Document
	Dim sSendto As String		'The  Sendto part of the Mail
	Dim sSubject As String		'The Subject of the Mail
	Dim sMailtext As String		'The Text of the Mail
	Dim sMailSender As String	'The Originator of the Mail
	
	Dim uiws As New NotesUIWorkspace
	Dim uidocCurrentDocument As NotesUIDocument
	
	Dim ses As New NotesSession
	Dim docCurrentDocument As NotesDocument
	Dim nmDecisionMaker As NotesName
	Dim itemReaders As NotesItem
	
	Set uidocCurrentDocument = uiws.CurrentDocument
	Set docCurrentDocument = uidocCurrentDocument.Document
	Set nmDecisionMaker = New NotesName(ses.UserName )
	Set itemReaders = docCurrentDocument .getfirstitem("rReaders")
	
	'Goes shure that the Document is in the Edit mode
	uidocCurrentDocument.EditMode = True
	
	'Adds the Role of the Time Administrators to the Readers field
	itemReaders.AppendToTextList("[TimeAdmin]")
	
	'Is because the item is updated. it isn't possible to update the other fields without saving
	Call uidocCurrentDocument.save
	
	'Setting the Fields 
	Call uidocCurrentDocument.FieldSetText("nmDecisionOf",Cstr(nmDecisionMaker.Abbreviated))
	Call uidocCurrentDocument.FieldSetText("dtDecisiondate", Cstr(Now))
	Call uidocCurrentDocument.FieldSetText("tStatus", "Genehmigt")
	Call uidocCurrentdocument.fieldsettext("aAuthors","[DBAdmin] ; [TimeAdmin]")
	
	Call uidocCurrentDocument.save
	
	'Sets the Variables to send the mail
	
	sSendto = Cstr(uidocCurrentDocument.FieldGetText("nmOriginator"))
	sSubject = "Ihr Antrag wurde bestätigt"
	sMailtext  = "Ihr Antrag wurde genehmigt. Anbei noch den Link zu ihrem Antrag."
	sMailSender  = nmDecisionMaker.Common
	
	
	Call SendMail(sSendto , sSubject , sMailtext, docCurrentDocument, sMailsender)
	
	'Goes shure that the user isn't asket if he wants to save and saves the Document
	Call uidocCurrentDocument.FieldSetText("SaveOptions", "0")
	Call uidocCurrentDocument.Close
	
End Sub

Dabei kommt der Fehler beim Button:
Not a sub or function name: SENDMAIL
« Letzte Änderung: 07.03.06 - 14:10:04 von judicious »

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Formel in Skript umwandeln
« Antwort #16 am: 07.03.06 - 14:21:20 »
Benutzt Du den diese Lib auch ?
use "lib20sendmail" im Abschnitt options deines Buttons oder des Forms?
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Formel in Skript umwandeln
« Antwort #17 am: 07.03.06 - 14:30:04 »
Ich habe es doch jetzt kommt wieder der Fehler ich hätte keine Default View. Wie kann ich eine Default View festlegen? WO und WIE? Sorry für die blöden Fragen.

Juhu ich habe es hinbekommen. Man muss die View offen haben und dann kann man das in den Properties ändern. Ich habe es immer mit einem Rechtsklick versucht. Das ging natürlich nicht.
« Letzte Änderung: 07.03.06 - 14:36:57 von judicious »

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Formel in Skript umwandeln
« Antwort #18 am: 07.03.06 - 14:37:31 »
View Eigenschaften -> "i"-Reiter -> "Default when database ist first opened"

p.s. es gibt keine blöden Fragen.

Grüsse

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Formel in Skript umwandeln
« Antwort #19 am: 07.03.06 - 15:43:46 »
So jetzt wird es doch nochmal mysteriös. Ich habe einen Button der diese Formel hat:

Code
safe:= @Prompt([YesNo];"Safety First";"Are you sure you want to decline this request?");	

@If(safe=1;
@Do(
	@Command([EditDocument]);
	@Do(@SetField("zeigestatus"; "declined"));
	@Do(@SetField("Author"; ""));
	@Command([ViewRefreshFields]);
	@Do(@Command([FileSave]))
);
""
)

Funktioniert wunderbar. Im querysave habe ich dann den Mailcode

Code
If Source.FieldGetText("zeigestatus") = "declined" Then
		If Source.FieldGetText("ablehnungsgrund") = "" Then
			source.GotoField("ablehnungsgrund")
			Messagebox "Decline reason field is empty",  0 + 48, "Failure"
			Continue = False
			Exit Sub
		End If 	
		
		Dim vReaders As Variant	'The Readers of the Document
		Dim sSendto As String		'The  Sendto part of the Mail
		Dim sSubject As String		'The Subject of the Mail
		Dim sMailtext As String		'The Text of the Mail
		Dim sMailSender As String	'The Originator of the Mail
		
		Dim uiws As New NotesUIWorkspace
		Dim uidocCurrentDocument As NotesUIDocument
		
		Dim ses As New NotesSession
		Dim docCurrentDocument As NotesDocument
		Dim nmDecisionMaker As NotesName
		Dim itemReaders As NotesItem
		
		Set uidocCurrentDocument = uiws.CurrentDocument
		Set docCurrentDocument = uidocCurrentDocument.Document
		
		sSendto = Cstr(uidocCurrentDocument.FieldGetText("v_username"))
		sSubject = "Ihr Antrag wurde bestätigt"
		sMailtext  = "Ihr Antrag wurde genehmigt. Anbei noch den Link zu ihrem Antrag."
		sMailSender  = Cstr(uidocCurrentDocument.FieldGetText("v_username"))
		
		Call SendMail(sSendto , sSubject , sMailtext, docCurrentDocument, sMailsender)
		
		Call uidocCurrentDocument.FieldSetText("SaveOptions", "0")
		
		Call uidocCurrentDocument.Close
		
	End If 

Das Mail wird mir auch geschickt, das heisst der Status ist also eine zeit lang auf declined. Das Dokument wird aber nicht mit dem neuen Status gespeichert sondern wieder mit dem alten, also als Request.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz