Autor Thema: Schulungskalender  (Gelesen 7059 mal)

Offline TazDevil20

  • Frischling
  • *
  • Beiträge: 37
Schulungskalender
« am: 05.10.05 - 15:48:23 »
Hallo,

ich suche einen Kalender in den ich eine Schulung eintragen kann. Auf diesen Kalender können alle Mitarbeiter zugreifen und sich für die Schulung anmelden. Ab einer von mir vorher definierten Mitgliederanzahl wird die Schulung geschlossen.

Kennt jemand ein solches Produkt? Ist es schwer so etwas mit "wenig" (nur LS) Kenntnissen selbst zu bauen?

mfg

Michael
Michael

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: Schulungskalender
« Antwort #1 am: 05.10.05 - 15:53:46 »
Schwer ist so relativ...
Also Standardmässig gibt es das nicht.
Du könntest einen Standardkalender, Groupkalender, ....kalender anpassen - Dazu müsstest Du dann noch Felder für Teilnehmer in der entsprechenden Maske einbauen.
Definitiv kein Hexenwerk - aber auch nicht trivial.
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Schulungskalender
« Antwort #2 am: 05.10.05 - 16:00:13 »
Richtig: Schwer ist relativ ...
Ich würde allerdings kein mitgeliefertes Template (vor allem nicht das Mail-Template) verwenden, da hier einfach zuviele Dinge ablaufen, die für den Zweck gar nicht gebraucht werden und sogar kontraproduktiv sind. Das alles sauber (!) zu entfernen, ist deutlich mehr Arbeit, als from the scratch zu starten.

Was braucht es ? Ein Dokumenttyp für die angesetzte Schulung mit Angaben von / bis und weiteren Infos zur Schulung, Ansichten (Kalender und Standard) zur Visualisierung, Knöpfchen zur Anmeldung (incl. Kontrolle der erlaubten Teilnehmerzahl) und Stornierung.
Die Tücken kommen dann eher im Detail (was passiert, wenn ein Kurs abgesagt wird, Routinen, um Mails an die Kursteilnehmer senden zu könenn usw. usf.)

Bernhard

Offline theBastian

  • Senior Mitglied
  • ****
  • Beiträge: 484
  • Geschlecht: Männlich
Re: Schulungskalender
« Antwort #3 am: 05.10.05 - 22:47:22 »
Hi,

Vielleicht kann man doch ein mitgeliefertes Template nutzen.
Meine Idee zur Umsetzung wäre folgende:

- Erstellung einer Ressourcen-DB und Schaffung einer neuen Ressource (z.B. Schulung)
- automatische Annahme von Planungen für diese Ressource
- wenn Teilnehmerzahl erreicht ist dann manuelles Löschen dieser Ressource oder automatische Annahme ausstellen

Damit könnte das Absagen auch über das Canceln des Termins gehen.

Alternativ könnte man auch prüfen, wie der Annahmeprozess abläuft und eine Bedingung einbauen. Sowas wie

If Anzahl der Buchungen = Anzahl der Teilnehmer Then Buchung ablehnen Else Buchung annehmen
...
Ist aber nur reine Theorie von mir, da ich gerade kein Template da habe um mal zu schauen.  ???

cu
der B@sti
 
Domino, Notes, Sametime

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Schulungskalender
« Antwort #4 am: 05.10.05 - 23:42:33 »
Das ist eine schlechte Idee. Auch die Ressourcen-Reservierung steckt voll von Routinen und Automatismen, die man für den gewünschten Zweck nicht benötigt und die daher entfernt oder stillgelegt werden müssen. Mit allen Risiken und Nebenwirkungen ... Allein der Mechanismus der Verweigerung weiterer Teilnehmer wird da schon viel zu aufwändig gegenüber einem Ansatz "from the scratch".
Ausserdem: Wenn die Ressource bei Erreichen der Teilnehmerzahl gelöscht wird und danach ein Teilnehmer doch absagt, könnte ja ein neuer Teilnehmer wieder aufgenommen werden. Und dann ?
Weiterhin: Die Ressourcen-Reservierung setzt auf das Zusammenspiel mit dem DD und dem AdminP. Möchtest Du da wirklich eingreifen ?

Bernhard

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Schulungskalender
« Antwort #5 am: 06.10.05 - 00:12:55 »
Das ist nicht so schwer zu entwickeln.
Die Schulung ist das Hauptdokument und die Anmeldung ist das Antwortdokument.
Das geht wirklich ganz gut mit Notes.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Schulungskalender
« Antwort #6 am: 06.10.05 - 00:23:24 »
Das wäre eine saubere Lösung, ist aber vielleicht gar nicht nötig, wenn eine Rotine die Anmeldung und Stornierung übernimmt und die Teilnehmer direkt ins das Seminar-Dokument schreibt (und die Anmeldungen und Stornierungen dokumentiert). Das erspart dann wieder den Deal mit der Ermittlung der Teilnehmer und der Teilnehmerzahl aus dem Hauptdokument auf die Repsonses.
Wie schon gesagt: Die Tücke liegt dann eher im Detail, und auch hier sollte man "nicht ohne Plan aufs Klo gehen" ("Jagd auf Roter Oktober" ?)  ;)

Bernhard

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Schulungskalender
« Antwort #7 am: 06.10.05 - 05:02:47 »
Ich habe so etwas für unser unternehmen entwickelt. Da arbeite ich ausschließlich mit Hauptdokumenten. Die Datenbank ist allerdings auf unseren Prozeß "innerbetriebliche Fortbildung" zugeschnitten; Daher macht es wenig Sinn, die hier zu posten.

- User kann eine Veranstaltung aus Katalog wählen und sich anmelden
- Vorgesetzter genehmigt
- Personalabteilung plant die Schulung und lädt ein
- Teilnehmer bestätigt Termin
- Teilnehmerliste an Referent übermitteln
- Schulung durchführen; Rückmeldung über Teilnahme werden anhand der Liste eingetragen
- Teilnehmer erhält Aufforderung zur Abgabe einer Seminarbewertung ( incl. Reminder )
- Vorgesetzter erstellt Wirksamkeitsbeurteilung
- ENDE

Viele Routinen sind aus !!HELP!! ( Eskalationsmanagement wird hier für die Benachrichtigungen verwendet, Feldvalidierung )
Die Steuerung des "Workflow" erfolgt über simple @Formula und Leser- und Autorenfelder.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline TazDevil20

  • Frischling
  • *
  • Beiträge: 37
Re: Schulungskalender
« Antwort #8 am: 06.10.05 - 13:33:51 »
Hallo,

ich habe gestern abend auch mit einer neuen Datenbank angefangen, da ich gerne weiß was sich so alles in den Programmen/Datenbanken abspielt.

@eknori
könntest du mir evtl. trotzdem die Datenbank mal zukommen lassen? Dann kann ich mir verschiedene Sachen mal anschauen. !!HELP!! hab ich mal versucht durchzublicken, habe es aber nie so richtig geschafft. Denke mal, dass diese nicht so groß ist.
Besonders interessiert es mich wie du folgende Punkte bearbeitet hast:

- Personalabteilung plant die Schulung und lädt ein
- Teilnehmerliste in Haupdokument
- Teilnehmer erhält Aufforderung zur Abgabe einer Seminarbewertung ( incl. Reminder )

Wär echt super. Werde dann meine fertige Arbeit hier mal bereit stellen. (kann aber noch ein wenig dauern)

mfg

Michael

Michael

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Schulungskalender
« Antwort #9 am: 06.10.05 - 22:16:48 »
- Personalabteilung plant die Schulung und lädt ein
- Teilnehmerliste in Haupdokument
- Teilnehmer erhält Aufforderung zur Abgabe einer Seminarbewertung ( incl. Reminder )

Ha, und hier haben wir schon die "besonderen Feinheiten", die dann nach den "grundlegenden Dingen" so kommen - wie es hier schon angesagt wurde.

Mein Fazit:
Du brauchst einen sauberen Plan. Dann erst anfangen, wenn Du der Meinung bist, diesen Plan erfüllen zu können.
Dir nützt nicht nur kein Notes / Domino-immanentes Template, genauso nützt Dir auch eknori's DB nix, da diese spezifisch ist für sein Unternehmen (und Du bei !HELP! auch nicht komplett durchblickst).

Meine Meinung: Wir helfen hier gerne. Daher sollten wir als erstes Eure Anforderungen diskutieren. Dann Ansätze zur Umsetzung. Und Dir dann bei Problemen bei der Umsetzung helfen. Fertiger Code für sehr spezfische Umgebungen nützt Dir aber gar nichts.

Bernhard

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Schulungskalender
« Antwort #10 am: 06.10.05 - 23:53:37 »
Kann man sich hier unter Umständen mal darauf einigen, dass Arbeit das ist, wo man sich ab und zu mal ein bischen Mühe geben muß und man sich eigentlich immer in einem gewissen Zustand der Unsicherheit befindet?
Ich vermute ja, dass esder allerersten Amöbe schon genauso ging. Und dann die ganze Evolution. Die menschliche Kulturgeschichte.
Das ist ein Projekt für den fortgeschrittenen Notes-Anfänger.
Bei konkreten Fragen kriegst du auch sicher eine Antwort.
Sonst würde es ja Software-Bestand und nicht Software-Entwicklung heissen.  ;D
« Letzte Änderung: 07.10.05 - 00:27:06 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Schulungskalender
« Antwort #11 am: 06.10.05 - 23:59:19 »
Kann man sich hier unter Umständen mal darauf einigen, dass Arbeit das ist, wo man sich ab und zu mal ein bischen Mühe geben muß und man sich eigentlich immer in einem gewissen Zustand der Unsicherheit befindet?

Genau auf diesen Umstand wurde doch schon hingewiesen, Axel. Mehrfach. Du hast es aber prägnant auf den richtigen Punkt gebracht.

Das ist ein Projekt für den fortgeschrittenen Notes-Anfänger.
Bei konkreten Fragen kriegst du auch sicher eine Antwort.

Sehe ich exakt genau so. Nur den Plan muss man jetzt mal aufmalen. Und dann konkrete Fragen stellen.

Bernhard

Offline TazDevil20

  • Frischling
  • *
  • Beiträge: 37
Re: Schulungskalender
« Antwort #12 am: 07.10.05 - 07:55:36 »
Hallo,

also, folgende dinge soll die Datenbank erfüllen:

- Schulung planen von einer gewissen Gruppe (die mit Rollen angegeben wird)
- Schulung mit Anmeldung / ohne Anmeldung (Ersteller gibt Personen vor)
- mit Anmeldung:
  - Person bekommt eMail und bekommt den Termin in pers. Kalender eingetragen
  - Person kann sich wieder abmelden (Termin soll aus Kalender entfernt werden)
  - Bei Änderung des Zeitraumes eMail an alle Angemeldeten mit Button um Kalender zu berichtigen
  - Bei Absage - eMail an alle Angemeldeten mit Button um Kalender zu berichtigen
- ohne Anmeldung
  - Eingetragene bekommen eMail mit Button um Termin in Kalender einzutragen
  - Terminverschiebung/Absage wie bei "mit Anmeldung"

Die Seminarbewertung würde mich nur mal Interessieren. Ist aber kein muss für diese Datenbank.

Ich glaube schon, dass ich die Datenbank hinbekommen könnte. Allerdings fehlt mir einiges an Erfahrung (habe mich im ersten Beitrag verschrieben - habe in LS noch nichts gemacht, immer nur copy & paste und ein wenig angepasst)

Wie bereits gesagt, ich habe mit der Datenbank schon angefangen und stehe jetzt vor ein paar kleinen Problemen:

- Eintrag aus pers. Kalender entfernen
- Person welche sich anmeldet in Dokument (Haupt- oder Antwortdokument) eintragen
- aktuelle Teilnehmeranzahl berechnen
- Kalendereintrag funktioniert, lässt sich aber nicht durch doppelklick aufrufen --> erledigt

Habe mal das bisherige Ergebnis angehängt.

Michael

« Letzte Änderung: 07.10.05 - 20:53:27 von TazDevil20 »
Michael

Offline TazDevil20

  • Frischling
  • *
  • Beiträge: 37
Re: Schulungskalender
« Antwort #13 am: 07.10.05 - 21:23:46 »
Ich bin jetzt gerade am eintragen der Person welche sich anmeldet. Habe jetzt im Script für die Anmeldung folgenden Code

Code
	'Person einfügen
	If uidoc.FieldGetText("Teilnehmer") = session.UserName Then	
		Messagebox "Sie sind bereits angemeldet."
	Else
		uidoc.EditMode = True		
		tmpTeilnehmer = uidoc.FieldGetText("Teilnehmer")
		Call uidoc.FieldSetText ( "Teilnehmer", tmpTeilnehmer + session.UserName )
	End If
	
	'Dokument speichern
	Call doc.ComputeWithForm(False,False)
	Call doc.Save(True,False,True)

Jetzt zu meinem Problem:
 - die Überprüfung ob die Person bereits angemeldet ist funktioniert nicht
 - Das Feld Teilnehmer ist ein Namesfeld. Der neue Name wird direkt und ohne Leerzeichen hinter den letzten gesetzt und nicht in eine neue Zeile
 - Es kommt dann immer die Abfrage ob das Document gespeichert werden soll.

Meldet sich doch bitte mal wieder jemand :-)

Der Thread kann übrigens ruhig in den Designer-Bereich verschoben werden.
Michael

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Schulungskalender
« Antwort #14 am: 07.10.05 - 22:24:26 »
Michael, mit derart herausgelösten Code-Schnipseln ist es schwierig, Fragen zu beantworten, die die Kenntnis des Gesamtzusammenhangs erfordern.
Wir brauchen also mehr Infos. Und den bei Dir jeweils aktuellen Dev-DB-Stand können wir uns auch nicht dauernd 'reinziehen.

Ein paar Ansätze:
Du arbeitest lt. Code-Schnipsel sowohl im Front- als auch im Backend. Das ist meist kontraproduktiv, da das FrontEnd darauf verweist, was im RAM passiert, das Backend darauf, was gespeichert ist (oder würde) - vereinfacht ausgesprochen.


Code
	'Person einfügen
	If uidoc.FieldGetText("Teilnehmer") = session.UserName Then	
		Messagebox "Sie sind bereits angemeldet."

Du holst Dir so den Inhalt des Feldes "Teilnehmer". Wie Du weiter schreibst, ist das ein skalarer Wert (ein String und kein Array). So, wie Du (von Dir später beschrieben) das Feld füllst, steht dort dann
"CN=Hein Bloed/O=Kutter/C=DECN=Kaeptn Blaubaer/O=Kutter/C=DE".
Wenn Du jetzt den aktuellen User ("CN=Hein Bloed/O=Kutter/C=DE") mit dem Feldinhalt vergleichst via "=", dann ist das natürlich nicht gleich ... Du müsstest dafür Instr verwenden - aber letztlich ist das ja auch nicht, was Du willst (und auch nicht sollst - das soll ja eine Liste werden).

Verknüpfung der Namen zu einer Liste:
Im UI kannst Du das machen, in dem Du das für das Feld vereinbarte Trennzeichen bei Eingabe in Felder mit Mehrfachwerten verwendest, also zum Beispiel:

Code
Call uidoc.FieldSetText ( "Teilnehmer", tmpTeilnehmer & ";" & session.UserName )
(Trennzeichen ist das Semikolon)
oder
Code
Call uidoc.FieldSetText ( "Teilnehmer", tmpTeilnehmer & Chr$ (10) & session.UserName )

Beachte bitte auch: Der Concatenator für Strings in LS ist nicht "+", sondern "&".

Besser (effektiver, da mehr Möglichkeiten) wäre aber, das ganze im Backend zu machen (schau Dir dazu mal ArrayAppend an für das hinzufügen von Werten zu Arrays, zur Abrage, ob vorhanden, ArrayGetIndex und zum Auffrischen des UI-Docs NotesUIDocument.Reload / Refresh).

Ferner ist unklar, was Deinen Code überhaupt triggert: Ein Button-Click ?

HTH,
Bernhard

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Schulungskalender
« Antwort #15 am: 07.10.05 - 22:28:42 »
Ich persönlich bin ja nach wie vor der Meinung, dass es vielleicht für Anfänger einfacher ist, für die Anmeldungen als Antwort-Dokumente zu nehmen....

Aber gut.

1. Fehler:
Du behandelst das mit Frontend Klassen.
Nehme besser die Klasse NotesDocument (Backend-Klasse).

Ich nehme mal an das Feld "Teilnehmer" ist ein Mehrfachwerte-Feld.

Dann kannst du so etwa vorgehen (zum Beispiel)

(ich tippe das jetzt mal schnell runter ohne das auszuprobieren, also vorsicht).
Code
Dim teilnehmer() as String ' array wg. ()
Dim user as String
Dim userFound as Integer

teilnehmer = doc.getItemValue("Teilnehmer")
nameCurrentUser = session.username

userFound = false
forall userAngemeldet in Teilnehmer
 if userAngemeldet = nameCurrentUser then userFound = true
end forall

if userFound = true then 

msgBox "Das geht nicht. Sie sind bereits angemeldet"
else
msgbox "Ok. Sie dürfen teilnehmen. Aber gut aufpassen, ja :-)"
doc. save true, false
end if
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline TazDevil20

  • Frischling
  • *
  • Beiträge: 37
Re: Schulungskalender
« Antwort #16 am: 08.10.05 - 14:57:03 »
Hallo,

hatte nur gedacht, da der Code inzwischen recht umfangreich ist ich nur diesen Teil poste. Hier aber mal der Komplette Code für den Button den der User drücken soll wenn er sich anmelden will (ist ein Agent und wird über "@Command([ToolsRunMacro];"Anmelden")" von dem Button angesteuert.

Code
Sub Initialize
	Dim workspace As New NotesUIWorkspace
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim uidoc As NotesUIDocument
	Dim dateRange As NotesDateRange
	Dim dauer As Integer	
	'Für Mail
	Dim EventName_mail As String
	Dim vonDatum_mail As String	
	Dim bisDatum_mail As String	
	Dim doc_mail As NotesDocument
	'Für Kalendereintrag	
	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 rtitem As NotesRichTextItem
	
	'Teilnehmer prüfen
	teilnhemer = doc.GetItemValue( "Teilnehmer" )
	found = False
	found = Arraygetindex(teilnehmer, session.UserName)
	If found = True Then
		Msgbox "Sie sind bereits angemeldet"	
	Else
		
	'Teilnehmer hinzufügen
		doc.Teilnehmer = doc.ArrayAppend("Teilnehmer", sesseion.UserName)
		uidoc.Reload
		
	'Teilnehmer neu berechnen
		Dim total As Integer
		total = 0
		MA = doc.GetItemValue( "Teilnehmer" )
		Forall m In MA
			total = total + m
		End Forall
		Call doc.ReplaceItemValue( "Teilnehmer", total )
		
	'Deklarationen	
		Set db = session.CurrentDatabase
		Set uidoc = workspace.CurrentDocument
		Set doc = New NotesDocument( db )
		Set eventdoc = uidoc.Document
		doc.Form = "newEvent"
		
		datum_von = uidoc.FieldGetText( "vonDatum" )
		datum_bis = uidoc.FieldGetText( "bisDatum" )
		dauer = uidoc.FieldGetText( "Dauer" )
		
		Set startDate = New NotesDateTime (datum_von)
		Set endDate = New NotesDateTime(datum_bis)
		
		rc = Evaluate (|@MailDbName|)
		Set db = session.GetDatabase(rc(0), rc(1))
		Set doc = db.CreateDocument
		Set rtitem = doc.CreateRichTextItem("Body")
		
	'setzt die Felder für den Kalendereintrag
		doc.Form = "Appointment"
		doc.Chair = session.UserName
		doc.subject = uidoc.FieldGetText( "EventName")
		doc.location = uidoc.FieldGetText("Ort")
		Call rtitem.AppendText("Sehr geehrte/r ")
		Call rtitem.AppendText(session.CommonUserName)
		Call rtitem.AppendText(",")
		Call rtitem.AddNewline(2)
		Call rtitem.AppendText("mit folgender Verknüpfung können Sie die Daten dieses Seminares öffnen: ")
		Call rtitem.AddTab(1)
		Call rtitem.AppendDocLink(eventdoc, "Verknüpfung zum Seminar")
		doc.AppointmentType="2"
		Call Doc.ReplaceItemValue("_ViewIcon",26)
		Call Doc.ReplaceItemValue("$Alarm",1)
		Call Doc.ReplaceItemValue("$AlarmOffset",-1440)
		Call Doc.ReplaceItemValue("$AlarmDescription",uidoc.FieldGetText( "EventName") + " - " + uidoc.FieldGetText( "Ort"))
		Set dateRange = session.CreateDateRange
		
		tmpDate = datum_von + " 04:00:00"
		
		Set ndt_datum_von = New NotesDateTime(tmpDate)
		Set ndt_datum_bis = New NotesDateTime(datum_bis + " 23:59:59")
		
		Dim ndt_CalendarDateTime As Variant
		Redim ndt_CalendarDateTime(0)
		
		ndt_CalendarDateTime(0) = ndt_datum_von.LSLocalTime
		Call ndt_datum_von.AdjustDay(1)
		
		i = 0
		While ndt_datum_bis.TimeDifference(ndt_datum_von) > 0
			Redim Preserve ndt_CalendarDateTime(Ubound(ndt_CalendarDateTime) + 1)
			ndt_CalendarDateTime(Ubound(ndt_CalendarDateTime)) = ndt_datum_von.LSLocalTime
			Call ndt_datum_von.AdjustDay(1)
		Wend
		
		doc.CalendarDateTime = ndt_CalendarDateTime
		doc.CalendarDateTime = ndt_CalendarDateTime
		
		Set dateRange.StartDateTime = startDate
		Set dateRange.EndDateTime = endDate
		Set doc.TimeRange = dateRange
		doc.Duration = dauer
		doc.SequenceNum = 1
		doc.OrgTable = "P0"
		
	'Weitere Felder für den Kalendereintrag 
		Set doc.StartDateTime = New NotesDateTime (tmpDate)
		Set doc.StartDate = New NotesDateTime (tmpDate)
		Set doc.StartDate_2 = New NotesDateTime (tmpDate)
		Set doc.EndDateTime = New NotesDateTime (datum_bis + " 23:59:59")	
		Set doc.EndDate = New NotesDateTime (datum_bis + " 23:59:59")
		Set doc.EndDate_2 = New NotesDateTime (datum_bis + " 23:59:59")
		Set doc.tmpStartTime_local = New NotesDateTime (LSLocalTime)		
		
		uidoc.EditMode = True		
		tmpTeilnehmer = uidoc.FieldGetText("Teilnehmer")
		Call uidoc.FieldSetText ( "Teilnehmer", tmpTeilnehmer & Chr$ (10) & session.UserName )
		Messagebox "Danke für die Anmeldung. Sie werden in kürze eine Bestätigungsmail erhalten." ,, "Info"
		
	'Dokument speichern
		Call doc.ComputeWithForm(False,False)
		Call doc.Save(True,False,True)
		
	'Mail versenden
		Set db_mail = session.CurrentDatabase
		Set doc_mail = New NotesDocument( db )
		Set rtitem_mail = doc_mail.CreateRichTextItem("Body")
		Username=session.UserName
		EventName_mail = uidoc.FieldGetText( "EventName")
		vonDatum_mail = uidoc.FieldGetText( "vonDatum")
		bisDatum_mail = uidoc.FieldGetText( "bisDatum")
		DocID_mail = uidoc.FieldGetText( "DocID")
		
		doc_mail.Form = "Memo"
		doc_mail.From = "EventPlaner"
		doc_mail.SendTo = Username
		doc_mail.Subject = "Bestätigung der Anmeldung für: " + uidoc.FieldGetText( "EventName")
		Call rtitem.AppendText("Sehr geehrte/r ")
		Call rtitem.AppendText(session.CommonUserName)
		Call rtitem.AppendText(",")
		Call rtitem_mail.AddNewline(2)
		Call rtitem_mail.AppendText("Sie haben sich für folgende Schulung angemeldet:")
		Call rtitem_mail.AddNewline(2)
		Call rtitem_mail.AppendText("Schulung: ")
		Call rtitem_mail.AddTab(1)
		Call rtitem_mail.AppendText(EventName_mail)
		Call rtitem_mail.AddNewline(1)
		Call rtitem_mail.AppendText("Datum: ")
		Call rtitem_mail.AddTab(2)
		Call rtitem_mail.AppendText(vonDatum_mail)
		Call rtitem_mail.AppendText(" - ")
		Call rtitem_mail.AppendText(bisDatum_mail)
		Call rtitem_mail.AddNewline(2)
		Call rtitem_mail.AppendText("Der Termin wurde automatisch in Ihren Kalender eingetragen. Für weiter Informationen über diese Schulung klicken Sie doppelt auf den Eintrag in Ihrem Kalender.")
		Call doc_mail.Send( False )
		
		Call uidoc.Close		
	End If
	
End Sub

Hoffe ich habe in etwa es so gemacht wie Ihr gemeint hattet. Allerdings bricht mir Notes immer mit der Fehlermeldung "Object variable not set" ab. Dies geschiet an der ersten Zeile bei "Teilnehmer prüfen".

@kennwort
Ich habe es mit deinem Code mal versucht, jedoch bekomme ich immer die Fehlermeldung "Illegal reference to array or list: TEILNEHMER" beim speichern in der Zeile teilnehmer = doc.getItemValue("Teilnehmer"). Die Fehlermeldung bezieht sich auf "teilnehmer" vor dem =.

Mir würde es im gleichen Dokument einfach besser gefallen, als dass ich noch ein Antwortdokument nehmen würde. Und so kann ich auch was über LS lernen.

Ich hoffe Ihr könnt mir sagen, warum ich immer diese blöde Fehlermeldung mit "Object variable not set" bekomme.

Michael

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Schulungskalender
« Antwort #17 am: 08.10.05 - 15:14:49 »
Jo, Michael - it works as designed. Du hast zu dem Zeitpunkt, zu dem Du auf das Objekt doc zugreifst, dieses noch gar nicht instantiiert. Daher ist natürlich die "object variable not set".

Du brauchst vorher ein Konstrukt wie
Dim uidocCurrent as NotesUIDocument
Dim docCurrent as NotesDocument
Set uidocCurrent = workspace.CurrentDocument
Set docCurrent = uidocCurrent.Document

Beachte bitte die neuen Objekte -Du verwendest ja "doc" später in einem ganz anderen Zusammenhang (für ein anderes Objekt).

Auf weitere "issues" habe ich jetzt nicht geachtet - Du musst ja erstmal dieses Problem lösen.

HTH,
Bernhard

Offline TazDevil20

  • Frischling
  • *
  • Beiträge: 37
Re: Schulungskalender
« Antwort #18 am: 08.10.05 - 19:14:38 »
Hallo,

so langsam wird das ganze was...  ;D

Bin jetzt so weit, dass ich den Termin im pers. Kalender wieder löschen möchte. Habe bisher folgenden Code:

Code
Sub Initialize
	Dim workspace As New NotesUIWorkspace
	Dim session As New NotesSession	
	Dim doc As NotesDocument
	Dim db As NotesDatabase
	Dim uidoc As NotesUIDocument
	
	Set uidoc = workspace.CurrentDocument
	Set doc = uidoc.Document
	
	uidoc.EditMode = True
'Teilnehmer suchen und entfernen	
	Dim teilnehmer() As String
	Dim x As Integer
	x=0
	Forall m In doc.Teilnehmer
		Redim Preserve teilnehmer(x)
		If m <> session.UserName Then
			teilnehmer(x) = m
			x = x +1
		End If
	End Forall
	doc.Teilnehmer = teilnehmer
	
'Kalendereintrag löschen
	Set eventdoc = uidoc.Document
	eventid = uidoc.FieldGetText( "DocID" )
	rc = Evaluate (|@MailDbName|)
	Set db = session.GetDatabase(rc(0), rc(1))
	
	
'Dokument speichern
	Call doc.ComputeWithForm(False,False)
	Call doc.Save(True,False,True)
	uidoc.Save
	
	Messagebox "Sie wurden wieder abgemeldet." ,, "Info"
	uidoc.close	
End Sub

Ich weiß nur nicht, wie ich den Eintrag beim User finden soll. Ich habe inzwischen herausgefunden, wie ich an die Datenbank des Users komme. Aber wie kann ich dort jetzt etwas suchen? Habe in dem Kalendereintrag die DocID hinterlegt (eventid).

Dies ist übrigens wieder ein Button.

Ansonsten habe ich jetzt schon fast alles was ich will. Sollten nurnoch kleinigkeiten sein.

@Bernhard
Das war nur ein Fehler in dem Script.  ;D Hatte bestimmt noch 100 mehr. Habs aber selbst hinbekommen *schulterklopf*  :P
Michael

Offline rmann

  • Frischling
  • *
  • Beiträge: 1
Re: Schulungskalender
« Antwort #19 am: 08.10.05 - 20:22:07 »
kleiner hinweis in eigener Sache. Die Anwendung EasyTrain von mir dient zur Umfangreichen Schulungsverwaltung. Was derzeit nicht enthalten ist, ist das die Anmeldebestätigung bei dem Teilnehmer im pers. Kalender eingetragen wird. Die deutsche Version wird in ca. 4-6 wochen fertig, die engl. ist bei einem weltweiten Unternehmen bereits im Einsatz um damit ca. 1.000 Teilnehmer pro Jahr zu schulen.

Kleiner tipp aus der Doku. Beim ersten Start einer neuen DB erscheint eine Fehlermeldung da die System Konfiguration noch nicht erfolgte - einfach OK und zur Systemkonfiguration wechseln

Gruß

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz