Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: michaelz am 03.06.13 - 14:32:08

Titel: [vb.net][gelöst] Kalendereinträge mit VB.net erzeugen
Beitrag von: michaelz am 03.06.13 - 14:32:08
Hallo Gemeinde,

ich versuche Kalendereinträge mit VB.Net zu erzeugen. Dies ist bis hier auch nicht wirklich ein Problem. Das Problem vor dem ich stehe ist, das ich ncihts finden kann, welche Felder mindestens gefüllt werden müssen.
Ich habe konkret das Problem, das ich die C&S Dokumente anlege und auch speicher, der Notes Client mir beim aufruf aber sagt, das er ein Feld namen tmpStartDate1 nicht verarbeiten kann weil ein ungültiger Wert angegeben ist.
Ich gehe davon aus das es sich um ein Feld handelt, das in irgendeiner View benutzt wird um etwas zu berechnen.
Als Template benutze ich das Stadard Lotus Notes Mail Template der Version 8.0.2, als Domino läuft ebenfalls der 8.0.2, Client genauso.

Daher hätte ich folgende Fragen an Euch:
1) Hat jemand eine Übersicht, in der die Mindestfelder aufgelistet sind
2) Weiß jemenad in welcher View das oben genannte Feld zu finden ist?

Danke für die Antworten.

p.s.: Java ist keine Option, da ich hier nicht wirklich fit genug bin und ich dann auch die Klassen erst durchsuchen müsste.

gruß

Michael
Titel: Re: [vb.net] Kalendereinträge mit VB.net erzeugen
Beitrag von: Tode am 03.06.13 - 15:41:34
Google mal nach "Calendaring & Scheduling Schema"... oder suche hier im Forum nach diesem Stichwort. Da gibt es ein PDF von IBM, in dem jedes einzelne Feld genau erklärt ist.
Titel: Re: [vb.net] Kalendereinträge mit VB.net erzeugen
Beitrag von: michaelz am 03.06.13 - 17:03:30
Das war es was ich vergessen habe zu erwähnen. Selbstverständlich habe ich das schon gelesen.  Leider schweigt s ch ibm aus was das minimum ist. Und temporäre felder stehen ebenfalls nicht so in den feldern des c&s.
Ich kann fast nicht glauben das ich der einzige bin der sich mit diesem Thema beschäftigt. Sollte es doch im c&s stehen lasse ich mixh gern eines besseren belehren.
Titel: Re: [vb.net] Kalendereinträge mit VB.net erzeugen
Beitrag von: Peter Klett am 03.06.13 - 17:44:56
Temporäre Felder können da auch nicht drin stehen, denn wenn Du die ins Dokument hineinschreibst, sind sie ja nicht mehr temporär.

Erstell doch einfach ein Dokument manuell so, wie Du es haben möchtest, und geh dann durch die Felderliste des GESCHLOSSENEN Dokuments, dann hast Du alles, was Du brauchst.
Titel: Re: [vb.net] Kalendereinträge mit VB.net erzeugen
Beitrag von: koehlerbv am 03.06.13 - 21:21:05
Was für Typen von Appointments sollen überhaupt erstellt werden? Da gibt es ja gewisse Feinheiten? Oder geht es um Notices? Oder um Einladung mit iCal-Format via SMTP?

Bernhard
Titel: Re: [vb.net] Kalendereinträge mit VB.net erzeugen
Beitrag von: michaelz am 03.06.13 - 21:29:12
@kohlerbv: Es geht um Appointments: Termine. Es geht noch nicht um die Meetings: Besprechungen oder Jahretage, Erinnerungen. Theoretisch könnten Erinnerungen auch reichen, aber diese Unterscheiden sich meines Erachtens lediglich durch den Typ des Kalenderdokumentes. Bei Meetings sieht die Sache schon anders aus, das sind ja auch die eingeladenen Personen zu berücksichtigen.

@Peter Klett: Ich gehe davon aus, das das temporäre Feld entweder teil einer Formel oder aber Teil des Templates ist. Da Kalenderdokument weisst im Designer schon einige tmp Felder auf, leider nur nicht das, welches ich als Fehlermeldung auf den Schirm bekomme. Daher vermute ich das es in einem anderen Teil des Templates zu finden ist. Ich hatte halt gehofft, es sagt einer: Jau hab ich schon gesehen und zwar an Stelle xy. Dann hätte ich mir das Suchen im kompletten Template erspart.
 
Titel: Re: [vb.net] Kalendereinträge mit VB.net erzeugen
Beitrag von: Thomas Schulte am 03.06.13 - 21:55:05
_Eintrag Offlinekalender und _Kalendereintrag.  In beiden Berechnet zur Anzeige ...
_Eintrag Offlinekalender mit dieser Formel.
@If(@IsNewDoc;@Return(@Now);"");
REM {Display the day-of-week using local time};
xxSTZ:=@If(@IsAvailable(StartTimeZone);StartTimeZone;LocalTimeZone);
xxStartTime:=@If(@IsAvailable(StartTime);@Time(StartTime);@Time(StartDateTime));
xxStartDateTime:=@If(@IsAvailable(tmpViewStartDateTime);tmpViewStartDateTime;StartTime = ""; @If(@IsAvailable(StartDateTime);StartDateTime; @Today); StartTime);
xxStartDate:=@If(@IsAvailable(StartDate);@Date(StartDate);@Date(StartDateTime));

xxUseStart := @If(@IsUnavailable(StartTimeZone);"0";xxSTZ = LocalTimeZone & xxSTZ = LocalTimeZone; "0";"1");
xsStart := @If(xxUseStart="1";@TimeZoneToText(xxSTZ);   @RightBack(@Text(xxStartDateTime; "Z2"); " "));

tmpIndex := @Member(@Text(xxStartDate;"D0S0");@Text(xxStartDateTime;"D0S0"));
tmpStartNDT := @TimeMerge(@Date(@Year(xxStartDate);@Month(xxStartDate);@Day(xxStartDate));@Time(@Hour(xxStartTime);@Minute(xxStartTime);@Second(xxStartTime));xxSTZ);

@TimeMerge(tmpStartNDT;tmpStartNDT;LocalTimeZone)

und beim _Kalendereintrag mit dieser ...

REM {Begin DNT};
@If(@IsNewDoc & StartDate = "";@Return(@Now);"");
REM {Display the day-of-week using local time};
xxSTZ:=@If(@IsAvailable(StartTimeZone);StartTimeZone;LocalTimeZone);
xxStartTime:=@If(@IsAvailable(StartTime);@Time(StartTime);@Time(StartDateTime));
xxStartDateTime:=@If(@IsAvailable(tmpViewStartDateTime);tmpViewStartDateTime;@Text(StartTime) = ""; @If(@IsAvailable(StartDateTime);StartDateTime; @Today); StartTime);
xxStartDate:=@If(@IsAvailable(StartDate);@Date(StartDate);@Date(StartDateTime));

xxUseStart := @If(@IsUnavailable(StartTimeZone);"0";xxSTZ = LocalTimeZone & xxSTZ = LocalTimeZone; "0";"1");
xsStart := @If(xxUseStart="1";@TimeZoneToText(xxSTZ);   @RightBack(@Text(xxStartDateTime; "Z2"); " "));

tmpIndex := @Member(@Text(xxStartdate;"D0S0");@Text(xxStartDateTime;"D0S0"));
tmpStartNDT := @If(tmpInPreview="1" & AppointmentType="3" & @Elements(xxStartDateTime) > 1;xxStartDateTime[1];
tmpInPreview="1" & AppointmentType="3" & @Elements(xxStartDateTime) = 1;xxStartDateTime;
@IsAvailable(OrgRepeat) & @Elements(xxStartDateTime) > 1;xxStartDateTime[tmpIndex];
NoticeType="E" & @IsAvailable($ICAL_ORGANIZER) & @IsAvailable($ICAL_ORIG_PRODID) & !@IsAvailable(tmpInPreview) & !@IsAvailable(OrgRepeat) ;xxStartDateTime[1];
@IsAvailable(StartTime) & @Text(StartTime)!="";@TimeMerge(@Date(@Year(xxStartDate);@Month(xxStartDate);@Day(xxStartDate));@Time(@Hour(xxStartTime);@Minute(xxStartTime);@Second(xxStartTime));xxSTZ);
xxStartDateTime);

tmpStartNDT:=@If(@Text(@Date(tmpStartNDT))="" | @Text(@Time(tmpStartNDT))="";@TimeMerge(@Date(@Year(xxStartDate);@Month(xxStartDate);@Day(xxStartDate));@Time(@Hour(xxStartTime);@Minute(xxStartTime);@Second(xxStartTime));xxSTZ);tmpStartNDT);

@TimeMerge(tmpStartNDT;tmpStartNDT;LocalTimeZone);
REM {End DNT};
Welches der Felder, die hier verwendet werden, jetzt bei dir, weil es entweder nicht oder nicht typkorrekt gesetzt wurde, deinen Fehler schmeisst, musst du selbst rausfinden.
Titel: Re: [vb.net] Kalendereinträge mit VB.net erzeugen
Beitrag von: koehlerbv am 03.06.13 - 22:14:07
Viele von den hier belegten Items kann man aber getrist vergessen, wenn man einen gültigen, auch wiederverwendbaren reinen kalendereintrag erzeugen will.

Peter hat schon recht - das einfachste ist, einfach einen Eintrag anzulegen (und dabei unbedingt das C&S Schema danebenliegen zu haben!).
Wiederkehrende Termine oder Einladungen sind natürlich eine ganz andere Hausnummer  ;)

Bernhard
Titel: Re: [vb.net] Kalendereinträge mit VB.net erzeugen
Beitrag von: michaelz am 04.06.13 - 08:13:27
Guten Morgen,

problem erkannt, gefunden und gelöst.
Für die Nachwelt:
Das Problem lag bei den Alarm Feldern. Sind diese nicht entsprechend der C&S Doku gesetzt, kommt es zu dem von mir beschreibenen Fehler.
Entweder ist das $Alarm Feld mit einem Wert belegt (immer 1) und vorhanden oder aber das $AlarmDisable Feld ist vorhanden. Ist keines der beiden da, hat wohl eine Formel ein kleines Problem. :)

Trotzdem Danke für die wirklich schnelle Reaktionen.

@kohlerbv: Ja in der Tat sind Termine und Einladungen eine ganz andere Hausnummer. Die kommen im nächsten Schritt dann zum Zuge, auch wenn das Gegensystem gar nicht in der Lage ist, Besprechungen zu organisieren. Mal sehen was mich dann da erwartet. :)

Gruß

Michael