Autor Thema: Kalendereintrag-Problem Nr. 247 nach Migration zu 6.5.3  (Gelesen 1213 mal)

Offline sloe

  • Aktives Mitglied
  • ***
  • Beiträge: 175
  • Geschlecht: Männlich
  • Never stop a running admin...
Hallo @all,

ich habe hier wieder ein Problem mit einer ganztägigen Veranstaltung. Unter R5.07a habe ich eine Datenbank (ach was?) mit einer Maske für Urlaubseinträge zur Übersicht für die Kollegen der jeweiligen Abteilung. Ebenso gibt es eine Schaltfläche für den Bearbeiter zum Eintragen des Urlaubes in den persönlichen Kalender.

Unter R5 benutzte ich folgenden Code für den Eintrag:

Code
Sub Click(Source As Button)
	Const SecInDays = 86400 ' 60 sec * 60 min * 24 h = 1 day
	Dim ws As New NotesUIWorkspace
	Dim session As New NotesSession
	Dim maildb As NotesDatabase
	Dim uidoc As NotesUiDocument
	Dim thisdoc As NotesDocument
	Dim doc As NotesDocument
	Dim datetime1 As New NotesDateTime("")
	Dim datetime2 As New NotesDateTime("")
	Dim itemStart As NotesItem
	Dim itemEnd As NotesItem

	MailDatenbank = Evaluate("@MailDbName")
	If MailDatenbank(1) = "" Then
		Messagebox "Auf Ihre Maildatenbank kann nicht zugegriffen werden.", 16, "Datenbank nicht gefunden - Fehler"
		Exit Sub          
	End If
	Set uidoc = ws.CurrentDocument
	Set thisdoc = uidoc.Document
	BlockArt = uidoc.FieldGetText("BlockStatus")
	Set itemStart = thisdoc.GetFirstItem( "BlockVon" )
	Set datetime1 = itemStart.DateTimeValue
	Set itemEnd = thisdoc.GetFirstItem( "BlockBis" )
	Set datetime2 = itemEnd.DateTimeValue
	Set maildb = New NotesDatabase(MailDatenbank(0),MailDatenbank(1))
	Dim dateTimeStart As NotesDateTime
	Dim dateTimeEnd As NotesDateTime
	Wieviel = datetime2.TimeDifference( datetime1 )
	If (Wieviel =< 0) Then	
		Messagebox "Bitte überprüfen Sie Ihre Dateneingabe.", 16, "Daten - Fehler"
		Exit Sub          
	End If
	Pruef = Wieviel / SecInDays
	Durchlaufflag = True	
	Set datetimetemp1 = itemStart.DateTimeValue	
	Set datetimetemp2 = itemStart.DateTimeValue
	
	Call datetimetemp2.AdjustDay( 6 )
	
	While (Durchlaufflag)	
		If (Wieviel > 0) Then	
			If (Pruef > 6) Then
				' Split der Tage, da mehr als eine Woche
				Durchlaufflag = True
			Else
				' Erster Eintrag unter einer Woche oder letzter Eintrag
				Set datetimetemp2 = datetime2
				Durchlaufflag = False
			End If
		Elseif (Pruef = 0 & Wieviel = 0) Then
			Durchlaufflag = False
			Goto skip
		End If
		
		'Erstellen einer ganztaegigen Veranstaltung innerhalb der Maildatenbank des Users    einzelne Blocks a 7 Tage	
		Set doc = New NotesDocument(maildb)
		doc.Form = "Appointment"
		doc.AppointmentType = "2"
		doc.Categories = BlockArt
		doc.ExcludeFromView = "D"
		doc.BookFreeTime="0"
		doc.~$BusyPriority = "1"
		doc.~$PublicAccess = "1"
		doc.~_ViewIcon = 9
		Who = session.UserName
		doc.~$BusyName = Who
		doc.Chair = Who
		doc.DocAuthors = Who
		doc.From = Who
		doc.Principal = Who
		docOrgTable = "C0"
		doc.Subject = "Block" & counter & ": " & BlockArt & " ( " & datetime1.DateOnly & " - " & datetime2.DateOnly & " ) NICHT LÖSCHEN"	
		Set dateTimeStart = session.CreateDateTime ( datetimetemp1.DateOnly & "  " & "04:10:00 AM" )
		Set dateTimeEnd = session.CreateDateTime ( datetimetemp2.DateOnly & "  " & "20:10:00 AM" )
		Set doc.CalendarDateTime = dateTimeStart
		Set doc.StartDate = dateTimeStart
		Set doc.EndDate = dateTimeEnd
		Set doc.StartDateTime = dateTimeStart
		Set doc.EndDateTime = dateTimeEnd
		success = doc.ComputeWithForm( False, False )
		If success Then
			Call doc.Save( True, True )
		End If	
		' Ende des Kalnderblockeintrages
		
		Wieviel = datetime2.TimeDifference( datetimetemp2 )
		Pruef = Wieviel / SecInDays
		temp1 = Cstr(datetimetemp2.DateOnly)
		
		Set datetimetemp1 = New NotesDateTime(temp1)
		Call datetimetemp1.AdjustDay( 1 )
		Call datetimetemp2.AdjustDay( 7 )
	Wend
skip:
	Msgbox "Der gewünschte Eintrag wurde vorgenommen.", 0, "Rückmeldung"
End Sub

Bis zur Migration lief auch alles wunderbar (o.k., das hier ist grottenschlechter Code und nicht gerade übersichtlich und die OK-Rückmeldung kommt auch bei einem Fehler, aber es funzte - und als Erläuterung: der Split auf jeweils 7 Tage war bei uns ein Anzeigeproblem der geblockten Zeit).

Nach der Migration muß ich feststellen, daß
1. alle Einträge, die auf diese Weise vorgenommen wurden, nur mit einem Tag im Kalender stehen und erst wieder auf alle Tage verteilt werden, wenn die Veranstaltung nochmal gespeichert wird (anscheinend werden in R6 einige neue Felder für diese Anzeige berechnet).

2. der Code unter R6 gar nicht mehr läuft. Setze ich
      success = doc.ComputeWithForm( False, False )
auf
      success = doc.ComputeWithForm( False, True )
bekomme ich als Fehlermeldung:
Falscher Datentyp für Operator oder @Funktion: Zahl erwartet.

Die Suche in den Kalenderdokumenten selbst gestaltet sich etwas schwierig:
Meine alten Einträge aus R5 haben vor dem Speichern ca. 20 Felder, nach dem Speichern in R6 sind es 150.
Weiß jemand zufällig, welche Feldvalidierung da dazwischen haut und welche Felder ich setzen muß? Ich weiß, C & S ist nicht trivial, aber vielleicht hatte ja jemand schon das Problem oder kennt eine Übersicht der neuen Felder in R6 die zu setzen sind (unter R5 gab es dafür irgendwo im web eine hübsche Tabelle).

Schon jetzt Danke für jede Aufwendung von Gehirnschmalz.
« Letzte Änderung: 31.05.06 - 16:59:42 von sloe »
Gruß
sloe

Offline webchild

  • Junior Mitglied
  • **
  • Beiträge: 94
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Kalendereintrag-Problem Nr. 247 nach Migration zu 6.5.3
« Antwort #1 am: 23.11.06 - 13:56:52 »
Hallo,
hast du eine Lösung gefunden. Ich wäre auch sehr daran interessiert, habe ein ähnliches Problem.

Danke und viele Grüße, Krista
Grüße, Krista

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz