Autor Thema: Create recurring appointment  (Gelesen 2336 mal)

Offline viktoriusrex

  • Frischling
  • *
  • Beiträge: 1
Create recurring appointment
« am: 13.05.20 - 16:39:04 »
Hello,
can somebody tell my, what is wrong here. I try to create a recurring appointment. It create something different(type is NOT Appointment) and if I select one created element it throws an error. "Falscher Datentyp für Operator oder @Funktion: Text erwartet"

Code
void Main()
{
	var session = new NotesSessionClass();
	session.Initialize("");
	var mailFile = session.GetEnvironmentString("MailFile", true);
	var server = session.GetEnvironmentString("MailServer", true);
	
	NotesDatabase database = session.GetDatabase("", mailFile, false);
	if(!database.IsOpen)
		database.Open();
	
	//Normal Meeting
	NotesDocument document = database.CreateDocument();
	
	UpdateAppointment(document, session);
	
	//Repeating Meeting
	DateTime appointmentStart = new DateTime(2020, 5, 13, 15, 0, 0);
	DateTime appointmentEnd = new DateTime(2020, 5, 13, 16, 0, 0);	
	
    List<DateTime> repeatStart = new List<DateTime>(){ appointmentStart, appointmentStart.AddDays(1), appointmentStart.AddDays(2), appointmentStart.AddDays(3) };
    List<DateTime> repeatEnd = new List<DateTime>(){ appointmentEnd, appointmentEnd.AddDays(1), appointmentEnd.AddDays(2), appointmentEnd.AddDays(3) };
	
	document.ReplaceItemValue("Repeats", 1);
    document.ReplaceItemValue("OrgRepeat", 1);
    document.ReplaceItemValue("$CSFlags", "i");

    NotesDocument repeatingMaster = database.CreateDocument();
	UpdateAppointment(repeatingMaster, session);
    repeatingMaster.ReplaceItemValue("Repeats", 1);
    repeatingMaster.ReplaceItemValue("OrgRepeat", 1);
    repeatingMaster.ReplaceItemValue("$CSFlags", "c");	

    repeatingMaster.ReplaceItemValue("RepeatStartDate", appointmentStart);
    repeatingMaster.ReplaceItemValue("RepeatHow", "F");
    repeatingMaster.ReplaceItemValue("RepeatFor", 4);
    repeatingMaster.ReplaceItemValue("RepeatForUnit", "D");

    repeatingMaster.ReplaceItemValue("RepeatUnit", "D");
    repeatingMaster.ReplaceItemValue("RepeatInterval", 1);

    repeatingMaster.ReplaceItemValue("RepeatDates", repeatStart.ToArray());
    repeatingMaster.ReplaceItemValue("RepeatInstanceDates", repeatStart.ToArray());
    repeatingMaster.ReplaceItemValue("RepeatEndDates", repeatEnd.ToArray());
    repeatingMaster.ReplaceItemValue("RepeatUntil", repeatEnd.Last());

    repeatingMaster.ReplaceItemValue("StartDateTime", repeatStart.First());
    repeatingMaster.ReplaceItemValue("EndDateTime", repeatEnd.First());
    repeatingMaster.ReplaceItemValue("StartTimeZone", "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=90$ZN=Romance");
    repeatingMaster.ReplaceItemValue("EndTimeZone", "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=90$ZN=Romance");
    repeatingMaster.ReplaceItemValue("ApptUNID", repeatingMaster.UniversalID);

    repeatingMaster.ComputeWithForm(false, false);
    repeatingMaster.Save(true, false);

    document.ReplaceItemValue("CalendarDateTime", repeatStart.ToArray());
    document.ReplaceItemValue("StartDateTime", repeatStart.ToArray());
    document.ReplaceItemValue("EndDateTime", repeatEnd.ToArray());
    document.ReplaceItemValue("RepeatInstanceDates", repeatStart.ToArray());
    document.ReplaceItemValue("StartTimeZone", "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=90$ZN=Romance");
    document.ReplaceItemValue("EndTimeZone", "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=90$ZN=Romance");

    document.ReplaceItemValue("$Ref", repeatingMaster.UniversalID);
    document.ReplaceItemValue("$RefOptions", 1);
    document.ReplaceItemValue("ApptUNID", repeatingMaster.UniversalID);
    
    document.ComputeWithForm(false, false);
    document.Save(true, false);
	
}

void UpdateAppointment(NotesDocument document, NotesSession session)
{
	document.ReplaceItemValue("Form", "Appointment");
    document.ReplaceItemValue("$CSVersion", 2);
	document.ReplaceItemValue("Subject", "Subject");
	document.ReplaceItemValue("Body", "Body");
    document.ReplaceItemValue("AppointmentType", 3);
    
    document.ReplaceItemValue("Chair", session.UserName);
    document.ReplaceItemValue("Principal", session.UserName);
    document.ReplaceItemValue("From", session.UserName);

    document.ReplaceItemValue("SequenceNum", 1);

    document.ReplaceItemValue("RequiredAttendees", "test@required.attendee");
    document.ReplaceItemValue("Location", "Location");
    document.ReplaceItemValue("$Alarm", 1);
    document.ReplaceItemValue("Alarms", 1);
    document.ReplaceItemValue("$AlarmOffset", -15);

	document.ReplaceItemValue("$BusyName", session.UserName);
    document.ReplaceItemValue("$BusyPriority", 1);
	
    document.ReplaceItemValue("$PublicAccess", 1);
    document.ReplaceItemValue("Importance", 1);

    //document.ComputeWithForm(false, true);
	//Output: Falscher Datentyp für Operator oder @Funktion: Text erwartet	
	//Was genau ist hier falsch?
	
	document.ComputeWithForm(false, false);
    document.Save(true, false);	
}

I tried already all ways to find an error but I am a newbie in Lotus Notes and there is not enough documentation or I can not find it

thank.

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Create recurring appointment
« Antwort #1 am: 13.05.20 - 18:42:15 »
a description of the calendar document can be found here:
https://web.archive.org/web/20120905054315/http://www-12.lotus.com/ldd/doc/uafiles.nsf/docs/WPNotesCSSchema/$File/csschema.pdf

a description of the ComputeWithForm function can be found here:
https://help.hcltechsw.com/dom_designer/10.0.1/basic/H_COMPUTEWITHFORM_METHOD.html

or in other words, the error lies in the mask in a formula, which throws the error   
« Letzte Änderung: 13.05.20 - 18:52:13 von jBubbleBoy »
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Create recurring appointment
« Antwort #2 am: 13.05.20 - 19:21:40 »
your code is very confusing  ;)
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline Tode

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Create recurring appointment
« Antwort #3 am: 13.05.20 - 23:05:05 »
Doppelpost bei Stackoverflow, wo ich ihm die selbe Antwort gegeben habe: Cal & Sched Schema und ComputeWithForm...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Create recurring appointment
« Antwort #4 am: 15.05.20 - 10:31:03 »
Gibt es bei Stackoverflow keine Doppelpost-Regel?

Da diese Frage immer wieder bei atnotes gestellt wird und jeder Notesentwickler irgendwann in diese Situation kommt, hier noch ein weiterer Lösungsansatz:
Man muss seinen Fall einfach im Notes-Kalender nachstellen, in diesem Fall mit 2 Dokumenten und bei wiederholenden Terminen mit Abhängigkeiten etc. würde ich noch einen Schritt weitergehen und zuerst eine Routine schreiben, welche aus den zuvor erstellten Beispielen doc.replaceItemValue(feld,wert) - Code erzeugt, und von dieser Basis ausgehend Felder ausschließen und mit eigenen Werten ersetzen und in Funktionen verpacken.

Die Code-Generierung hat mehrere Vorteile, zum einen sind 20-50 Zeilen Code, für die Codegenerierung, den 100-150 Zeilen Ergebniscode vorzuziehen und zum anderen werden Eingabefehler vermieden, die dem Fragesteller beim Lesen und Abtippen leider passiert sind, wahrscheinlich fehlen auch noch Felder ... in diesem Fall einen "Falscher Datentyp für Operator oder @Funktion: Text erwartet" zu beheben kann sehr Aufwendig sein, hier ist es hilfreich wenn man ein Tool besitzt, mit dem man Dokumente auf Unterschiede und Gemeinsamkeiten vergleichen kann.
« Letzte Änderung: 15.05.20 - 13:47:38 von jBubbleBoy »
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz