Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: novus246 am 21.11.07 - 11:50:12

Titel: Kalendereinträge automatisch erstellen
Beitrag von: novus246 am 21.11.07 - 11:50:12
Hallo zusammen,

ich habe eine Seminar-DB erstellt. In dieser können sich unsere Mitarbeiter zu internen Seminaren anmelden. Für jede Anmeldung wird ein neues Dokument erstellt.

Jetzt hätte ich es gerne so, dass ein Eintrag im persönlichen Kalender des Users automatisch nach der Anmeldung erstellt wird bzw. klick auf einen Button.

Bei uns hat jeder Schreibrechte auf die Kalender der anderen.

Wie kann ich das am besten lösen?  ???

Gruss Sandra
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: m3 am 21.11.07 - 12:16:49
Die Forumsuche ist Dein Freund:
http://atnotes.de/index.php?topic=19091.0
http://atnotes.de/index.php?topic=29857.msg188511#msg188511
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: novus246 am 21.11.07 - 12:21:21
ah! Sorry.

Werd es damit mal versuchen.

Danke
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: novus246 am 21.11.07 - 12:44:32
Ok, habe es versucht. Klappt leider nicht.

Ich hab auch noch nicht großartig mit Script gearbeitet. Habe einfach die Feldnamen ausgetauscht.
Aber ehrlich gesagt, hab ich keine Ahnung.
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: Fedaykin am 21.11.07 - 12:49:43
Hi Sandra

Wie sieht der Code denn in Moment so aus und was für Fehler bringt er denn?

Gruss
Remo
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: novus246 am 21.11.07 - 12:54:37
so siehts aus:

Sub Click(Source As Button)
   Set s = New NotesSession
   Set ws = New NotesUIWorkspace
   Set uidb = s.CurrentDatabase
   Set uiDocA = ws.CurrentDocument   
   Call uiDocA.Refresh
   Call uiDocA.Save
   Set docA = uiDocA.Document
   Einlad = docA.SendTo
   AnfangD = uiDocA.FieldGetText("start_termin")
   EndeD = uiDocA.FieldGetText("ende_termin")
   AnfangZ = Strleft(uiDocA.FieldGetText("beginn"), "-")
   EndeZ = Strright(uiDocA.FieldGetText("ende"), "-")
   tmpOrt = uiDocA.FieldGetText("ort")
   tmpBody = uiDocA.FieldGetText("Titel")
   tmpDokuTitel = uiDocA.FieldGetText("Inhalt")
   tmpKundenName = uiDocA.FieldGetText("referent")   
   tmpSubject = tmpKundenName & " -> " & tmpDokuTitel
   tmpSRV = uiDocA.FieldGetText("srv_1")
   tmpMAIL = uiDocA.FieldGetText("MailDatei")
   Set db = New NotesDatabase( tmpSRV, tmpMAIL )
   Call MailSenden()
End Sub


Habe einfach das rausgenommen, was ich nicht brauche bzw. nicht habe
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: just.do.it am 21.11.07 - 14:41:34
Hmm, ohne den Code, der sich hinter der Prozedur MailSenden verbirgt ist schwer zu beurteilen, ob das alles so Sinn macht.

Gruß
Dirk
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: Fedaykin am 21.11.07 - 14:44:38
Hi Sandra

Habe mir mal einen Agent gebaut der mir mehrtägige Veranstaltung erstellt.

Sub Initialize
   Dim session As New NotesSession
   Dim dbMailbox As New NotesDatabase( "", "" )
   Dim docAppointment As NotesDocument
   Dim dateRange As NotesDateRange
   Dim dauer As Integer
   Dim tmpdate As String
   Dim tmpdate2 As String
   Dim datum_von As String
   Dim datum_bis As String
   Dim Betreff As String
   Dim startDate As NotesDateTime
   Dim endDate As NotesDateTime
   Dim CalendarDateTime() As NotesDateTime
   Dim i As Long
   
   datum_von = "20.11.2007"
   datum_bis = "23.11.2007"
   Betreff="Seminar"
   
   dbMailbox.OpenMail
   If Not dbMailbox Is Nothing Then
      Set startDate=New NotesDateTime(datum_von)
      Set endDate=New NotesDateTime(datum_bis)
      
      dauer=endDate.TimeDifference(startDate)/60/60/24
      
      Set docAppointment=New NotesDocument(dbMailbox)
      With docAppointment
         .Form = "Appointment"
         .subject = Betreff
         .AppointmentType="2"
         Set dateRange = session.CreateDateRange
         
         tmpDate = datum_von + " 00:00:01"
         tmpDate2 = datum_bis + " 23:59:59"
         
         Set dateRange.StartDateTime = startDate
         Set dateRange.EndDateTime = endDate
         Set .TimeRange = dateRange
         
         Redim CalendarDateTime(dauer)
         For i=0 To dauer
            Set CalendarDateTime(i)=New NotesDateTime(tmpDate)
            CalendarDateTime(i).AdjustDay(i)
         Next
         .ReplaceItemValue "CalendarDateTime",CalendarDateTime
         .SequenceNum = 1
         .OrgTable = "P0"
         
         Set .StartDateTime = New NotesDateTime (tmpDate)
         Set .StartDate = New NotesDateTime (tmpDate)
         Set .EndDateTime = New NotesDateTime (tmpDate2)
         Set .EndDate = New NotesDateTime (tmpDate2)
         
         .ComputeWithForm False,False
         .Save False,False
      End With
   End If
End Sub

Hoffe hilft Dir weiter.

Gruss
Remo
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: novus246 am 21.11.07 - 14:45:27
Hallo Remo und Dirk,

klar MailSenden hab ich vergessen. Hier der Code

Function MailSenden()
   Set docM = db.CreateDocument
   Set item = docM.GetFirstItem( "SendTo" )
   docM.Form = "Appointment"
   docM.AppointmentType = "3"
   docM.EnterSendTo = user
   docM.SendTo = user
   docM.RequiredAttendees = user
   docM.AltRequiredNames = user
   docM.tmpRequiredAttendees  = user
   docM.Subject = tmpSubject
   docM.Location = tmpOrt
   docM.Body = tmpBody
   Set rtitem = New NotesRichTextItem( docM, "Body" )
   Call rtitem.AppendText( tmpBody )
   Call rtitem.AddNewLine( 2 )
   Call rtitem.AppendText( "Dokumentverknüpfung:  " )
   Call rtitem.AppendDocLink ( docA, tmpSubject )
   docM.StartDateTime =Cdat(AnfangD & " " & AnfangZ)
   docM.EndDateTime =Cdat(EndeD & " " & EndeZ)
   docM.StartDate = Cdat(AnfangD)
   docM.EndDate = Cdat(EndeD)
   docM.StartTime =Cdat(AnfangZ)
   docM.EndTime = Cdat(EndeZ)
   DocM.~$PublicAccess = "1"
   docM.CalendarDateTime =Cdat(AnfangD & " " & AnfangZ)
   Call docM.ComputeWithForm( False, False )
   Call docM.Save( True, True )
   If (user(0) <> "") Then
      Call docM.Send( False, Einlad )
   End If
   Call docM.Save( True, True )
   
End Function

Danke und Gruss
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: just.do.it am 21.11.07 - 14:48:07
Und was genau sind die Symptome? Kommt die Einladung nicht an? Oder gibt es eine Fehlermeldung?

Gruß
Dirk
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: m3 am 21.11.07 - 14:49:03
Ok, habe es versucht. Klappt leider nicht.
"Klappt leider nicht" ist halt ein bissi wenig. Mehr Input == mehr Output.
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: novus246 am 21.11.07 - 14:52:42
Es kommt ein Fehlerhinweis: Dokumentbefehl ist nicht verfügbar.
Nach OK macht er gar nichts mehr.

Wahrscheinlich ist das für nen Script-Anfänger eindeutig zu hoch.  ;)
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: m3 am 21.11.07 - 14:58:04
Debugger aktivieren? ;)
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: dirk_2909 am 21.11.07 - 15:01:53
Hallo

als erstes würde ich eine ordentliche Fehlerbehandlung einbauen.

Wie rufst Du das Script auf? im UI? Ist das Doc im EditMode?
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: novus246 am 21.11.07 - 15:07:11
@m3

ok aktiviert, sagt sofort das    Set s = New NotesSession    falsch ist.

@dirk

was heißt UI? Ja es ist im EditMode.
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: novus246 am 21.11.07 - 15:19:32
ah war eben falsch. sorry.

debugger bleibt stehen bei CalluiDocA.Refresh
gibt dann an Dokumentenbefehl ist nicht verfügbar
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: Klafu am 21.11.07 - 15:29:06
UI steht für User Interface
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: Axel am 21.11.07 - 15:38:27
Wo ist denn deine Variablendeklaration.

Dim ....


Axel
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: novus246 am 21.11.07 - 15:47:41
Hallo Axel,


Dim ws As NotesUIWorkspace   
Dim s As NotesSession
Dim db As NotesDatabase
Dim uidb As NotesDatabase
Dim uiDocA As NotesUIDocument
Dim docA As NotesDocument
Dim uiDocM As NotesUIDocument
Dim docM As NotesDocument
Dim tmpSRV As String
Dim tmpMAIL As String
Dim AnfangD As Variant
Dim EndeD As Variant
Dim AnfangZ As String
Dim EndeZ As String
Dim Einlad As Variant
Dim tmpBody As Variant
Dim tmpOrt As String
Dim tmpSubject As String
Dim tmpDokuTitel As String
Dim tmpKundenName As String
Dim rtitem As NotesRichTextItem
Dim item As NotesItem


Versuche auch gerade noch den Agenten von Remo.

Gruss
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: Axel am 21.11.07 - 15:52:18
debugger bleibt stehen bei CalluiDocA.Refresh
gibt dann an Dokumentenbefehl ist nicht verfügbar

Bist du dir sicher, dass das entsprechende Dokument im Editmodus geöffnet ist?


Axel
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: novus246 am 21.11.07 - 15:54:45
ja ist wirklich. Hab grad nochmal nachgeschaut.

Sandra
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: Fedaykin am 21.11.07 - 16:33:29
Hi Sandra

Habe Code etwas angepasst und Sub daraus gemacht.
Aufruf:
Sub Initialize
   Dim datum_von As String
   Dim datum_bis As String
   Dim Betreff As String
   
   datum_von = "20.11.2007"
   datum_bis = "23.11.2007"
   Betreff="Ferien"
   
   CreateAppointment datum_von,datum_bis,Betreff
End Sub


Sub CreateAppointment(Von As String,Bis As String,Betreff As String)
   Dim session As New NotesSession
   Dim dbMailbox As New NotesDatabase( "", "" )
   Dim docAppointment As NotesDocument
   Dim dateRange As NotesDateRange
   Dim dauer As Integer
   Dim tmpdate As String
   Dim tmpdate2 As String
   Dim datum_von As String
   Dim datum_bis As String
   Dim startDate As NotesDateTime
   Dim endDate As NotesDateTime
   Dim CalendarDateTime() As NotesDateTime
   Dim user As NotesName
   Dim i As Long
   
   dbMailbox.OpenMail
   If Not dbMailbox Is Nothing Then
      Set startDate=New NotesDateTime(Von)
      Set endDate=New NotesDateTime(Bis)
      
      dauer=endDate.TimeDifference(startDate)/60/60/24
      
      Set docAppointment=New NotesDocument(dbMailbox)
      With docAppointment
         .Form = "Appointment"
         .subject = Betreff
         .AppointmentType="2"
         Set dateRange = session.CreateDateRange
         
         tmpDate = Von + " 00:00:01"
         tmpDate2 = Bis + " 23:59:59"
         
         Set dateRange.StartDateTime = startDate
         Set dateRange.EndDateTime = endDate
         Set .TimeRange = dateRange
         
         Redim CalendarDateTime(dauer)
         For i=0 To dauer
            Set CalendarDateTime(i)=New NotesDateTime(tmpDate)
            CalendarDateTime(i).AdjustDay(i)
         Next
         .ReplaceItemValue "CalendarDateTime",CalendarDateTime
         .ReplaceItemValue "_ViewIcon",9         
         .SequenceNum = 1
         .OrgTable = "P0"
         
         Set .StartDateTime = New NotesDateTime (tmpDate)
         Set .StartDate = New NotesDateTime (tmpDate)
         Set .EndDateTime = New NotesDateTime (tmpDate2)
         Set .EndDate = New NotesDateTime (tmpDate2)
         
         Set user=session.CreateName(session.UserName)
         .Chair=user.Canonical
         .Principal=user.Canonical
         
         .ComputeWithForm False,False
         
         .Save False,False
      End With
   End If
End Sub

Gruss
Remo
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: novus246 am 22.11.07 - 08:29:51
Morgen Remo,

vielen Dank. Habe es grad nochmal versucht.

Aber er setzt mir den Eintrag immer noch in die Entwürfe meines Postkorbes. Wenn ich dann den Eintrag nochmal speichere, dann erscheint er auch richtig im Kalender.

Kann man das noch ändern?

Gruss
Sandra
Titel: Re: Kalendereinträge automatisch erstellen
Beitrag von: novus246 am 22.11.07 - 09:59:35
So hab es nochmal versucht und zwar setzt er es mir jetzt richtig in den Kalender.

Aber eine Kopie landet immer noch in den Entwürfen. Aber ich glaube damit könnte ich zur Not leben.

Hab es auch mal als Aufgabe umgestellt, funktioniert auch.

Vielen Dank nochmal für die Hilfe.