Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet 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
-
Die Forumsuche ist Dein Freund:
http://atnotes.de/index.php?topic=19091.0
http://atnotes.de/index.php?topic=29857.msg188511#msg188511
-
ah! Sorry.
Werd es damit mal versuchen.
Danke
-
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.
-
Hi Sandra
Wie sieht der Code denn in Moment so aus und was für Fehler bringt er denn?
Gruss
Remo
-
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
-
Hmm, ohne den Code, der sich hinter der Prozedur MailSenden verbirgt ist schwer zu beurteilen, ob das alles so Sinn macht.
Gruß
Dirk
-
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
-
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
-
Und was genau sind die Symptome? Kommt die Einladung nicht an? Oder gibt es eine Fehlermeldung?
Gruß
Dirk
-
Ok, habe es versucht. Klappt leider nicht.
"Klappt leider nicht" ist halt ein bissi wenig. Mehr Input == mehr Output.
-
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. ;)
-
Debugger aktivieren? ;)
-
Hallo
als erstes würde ich eine ordentliche Fehlerbehandlung einbauen.
Wie rufst Du das Script auf? im UI? Ist das Doc im EditMode?
-
@m3
ok aktiviert, sagt sofort das Set s = New NotesSession falsch ist.
@dirk
was heißt UI? Ja es ist im EditMode.
-
ah war eben falsch. sorry.
debugger bleibt stehen bei CalluiDocA.Refresh
gibt dann an Dokumentenbefehl ist nicht verfügbar
-
UI steht für User Interface
-
Wo ist denn deine Variablendeklaration.
Dim ....
Axel
-
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
-
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
-
ja ist wirklich. Hab grad nochmal nachgeschaut.
Sandra
-
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
-
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
-
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.