Autor Thema: Aus einer anderen DB einen Termin erstellen  (Gelesen 23683 mal)

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Aus einer anderen DB einen Termin erstellen
« am: 25.07.08 - 08:29:50 »
Guten Morgen liebe ATNotes Gemeinde,

ich fange langsam an an mir selbst zu zweifeln...

Folgendes Problem:

Wir haben eine DB in der man Kundenbesuche eintragen kann. Aus dieser DB heraus kann man einen Eintrag in den Kalender von Notes erstellen (als Termin) was an sich auch klappt.
Zurzeit wird dieser Eintrag in den Kalender mit Frontendbefehlen gemacht. Sprich:
z.B.
Variable = uidoc.fieldgettext("FELD")
Call uidoc.FieldSetText("Feld",variable)

Da nun auch in dem Bodyfeld des neuen Termins Werte eingetragen werden sollen habe ich versucht die Felder alle als Backend zu befüllen und natürlich auch das Dokument im Backend zu erstellen. Jedoch klappt es nicht die Felder (z.B. Datum, Uhrzeit) im Backend zu füllen.

Wie gesagt mein Vorhaben ist das erstellen eines neuen Temins im Backend da ich auch das Bodyfeld des Termins Informationen eintragen möchte.

Problem: Felder wie z.B. Datum und Uhrzeit können nicht im Backend gesetzt werden (warum auch immer) und das Terminedokument hat auch eine Abfrage drin, ob man den Termin trotzdem erstellen soll, obwohl der Termin in der Vergangenheit liegt.

Wenn ich Infos vergessen habe bitte sagts einfach. Bin grad etwas durch den wind.

Ich hoffe Ihr könnt mir helfen....
« Letzte Änderung: 13.08.08 - 09:14:35 von C_T »
Viele Grüße

Christian T.

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #1 am: 25.07.08 - 08:44:40 »


Problem: Felder wie z.B. Datum und Uhrzeit können nicht im Backend gesetzt werden (warum auch immer) und das Terminedokument hat auch eine Abfrage drin, ob man den Termin trotzdem erstellen soll, obwohl der Termin in der Vergangenheit liegt.


Warum kannst du DAtum und Uhrzeit nicht setzen?
Wie versuchst du es denn?

Ich würde es mit

doc.feldwert = Datum (auf richtiges Format achten)

reinpinnen oder über doc.replaceItemvalue.

Wie hast du es versucht?

Dann würde ich mir mit dem String des Datums/ Uhrzeit ein NotesdateTime Object bilden, und dann kannst du auch einfach die Zeiten vergleichen.

Wie hast du es denn nun probiert?

Grüsse

Dau-in
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #2 am: 25.07.08 - 09:22:26 »


Also in der Maske vom Kalender heißen die Felder wie folgt.

StartDate
EndDate
StartTime
EndTime

Die sind alle wenn ich das richtig gesehen haben Date/Time felder

In der DB von der ich den Kalendereintrag erstellen möchte, habe ich folgende Felder

BeDatum
BeUhrzeit

ebenfalls  Date/Time Felder

ich habe folgende zuweisungen ausprobiert:
(doc = Ursprungsdokument
doc2 = Termin)

doc2.StartDate = doc.BeDatum
doc2.StartDate = doc.BeDatum(0)
doc2.StartDate = cdat(doc.BeDatum)
doc2.StartDate = cdat(doc.BeDatum(0))
doc2.StartDate = cstr(doc.BeDatum)
doc2.StartDate = cstr(doc.BeDatum(0))

Dim dat As New NotesDateTime(doc.BeDatum)
doc2.StartDate = dat
doc2.StartDate = dat.DateOnly

Dim dat As New NotesDateTime(doc.BeDatum(0))
doc2.StartDate = dat
doc2.StartDate = dat.DateOnly

Also ich habe jede menge ausprobiert...

Nix klappt
Viele Grüße

Christian T.

klaussal

  • Gast
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #3 am: 25.07.08 - 09:44:26 »
Zitat
Nix klappt

Was heisst das denn ?

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #4 am: 25.07.08 - 09:48:47 »
das heißt das ich manchmal ein Type missmatch erhalten habe und manchmal sogar gar keine Fehlermeldung und trotzdem ist der Wert nicht übernommen worden.
Viele Grüße

Christian T.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #5 am: 25.07.08 - 10:03:12 »
Das ist korrekt:
Code
doc2.StartDate = doc.BeDatum

So kann man es auch machen:
Code
doc2.StartDate = doc.BeDatum(0)
doc2.StartDate = cdat(doc.BeDatum)
doc2.StartDate = cdat(doc.BeDatum(0))

Alles andere ist falsch.

Bernhard

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #6 am: 25.07.08 - 11:52:19 »
wie gesagt diese Methoden habe ich auch schon ausprobiert. Bei diesen Varianten erhalten ich auch keine Fehlermeldung, doch in dem Termin werden diese Werte nicht angezeigt. AUhc eine Aktualisierung der Maske bringt keinen Erfolg.
Viele Grüße

Christian T.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #7 am: 25.07.08 - 11:56:08 »
WO wird das nicht angezeigt?

Füllst Du auch die anderen erforderlichen Items?

Bernhard

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #8 am: 25.07.08 - 12:53:40 »
Sie werden in dem neuen Termin nicht angezeigt.

Wie gesagt ich habe eine Vorlage in der das alles über das UIdoc realisiert wird und dort sin die zeilen

vondatum = uidoc.FieldGetText( "BeDatum" )
bisdatum = uidoc.FieldGetText( "BeDatum" )

Call uidoc.FieldSetText("StartDate",vondatum)      
Call uidoc.FieldSetText("EndDate",bisdatum)

entahlen.

Diese dann als Backendäquialent geschrieben sähe dann ja so aus.

doc2.StartDate = doc.BeDatum(0)
doc2.EndDate = doc.BeDatum(0)

und das klappt ebend nicht.
Viele Grüße

Christian T.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #9 am: 25.07.08 - 12:59:22 »
Du beantwortest die eigentliche Frage nicht.

Bernhard

klaussal

  • Gast
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #10 am: 25.07.08 - 13:01:34 »
Zitat
doc2.StartDate = doc.BeDatum(0)
doc2.EndDate = doc.BeDatum(0)

BeDatum ins Start- und Ende-Datum ?

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #11 am: 25.07.08 - 13:50:17 »
@klauss:
jo in beide felder das selbe feld (ist dann ja nur ein Termin mit 1 Tag dauer)

@koehlerbv:
Es wird nicht im Frontend des neuen Termins angezeigt. Auch wenn ich den Termin speichere und wieder öffne wird der Wert nicht angezeigt. Auch in den Dokumenteneigenschafte finde ich "meinen" Wert niergends.
Viele Grüße

Christian T.

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #12 am: 25.07.08 - 16:40:36 »
Wenn du deine Backendwerte setzt, wie speicherst du die denn?

Grüsse

Dau-in
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #13 am: 25.07.08 - 16:49:28 »
Es fehlt immer noch die Antwort auf die vermutlich entscheidende Frage:

Füllst Du auch die anderen erforderlichen Items?

Bernhard

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #14 am: 25.07.08 - 17:45:32 »
habe hier mal eine kleine Klasse geschrieben, die einen Termin im Kalender eines Notes Users erzeugt. Wie man sieht, kommt man mit nur zwei feldern NICHT aus ( Das ist das, was Bernhard wissen wollte ) . Im Frontend werden die benötigten Felder ja beim Speichern entweder durch Vorgabewerte oder durch Code in den masken events gesetzt. Im Backend muss man da schon ein bisschen mehr machen.

Code
Const APP_FORM = "Appointment"
Const DD_SERVER = "Serv01"
Const SEPERATOR = "!!"

Class CEntry
	
	Public Sub new()
	End Sub
	
	Private startdttm As NotesDateTime
	Private enddttm As NotesDateTime	
	Private moddttm As NotesDateTime
	Public Property Set StartDT As NotesdateTime
		Set startdttm = StartDT
	End Property
	Public Property Set EndDT As NotesdateTime
		Set enddttm = EndDT
	End Property
	
	Private strLocation As String
	Public Property Set Location As String	
		Me.strLocation = Location
	End Property	
	
	Private varCategories As Variant
	Public Property Set Categories As String	
		Me.varCategories = Split(Categories,";")
	End Property
	
	Private strType As String
	Public Property Set AppType As String	
		Me.strType = AppType
	End Property
	
	Public Property Get AppType As String	
		Select Case Ucase (Me.StrType)
		Case "APPOINTMENT", "TERMIN"
			AppType = "0"
		Case "ANNIVERSARY", "JAHRESTAG"
			AppType = "1"
		Case "EVENT", "GANZTAEGIGE VERANSTALTUNG"
			AppType = "2"
		Case "MEETING", "BESPRECHUNG"
			AppType = "3"
		Case "REMINDER", "ERINNERUNG"
			AppType = "4"
		Case Else
			AppType = "0"
		End Select
	End Property
	
	Private strsubject As String 
	Public Property Get subject As String
		subject = Me.strsubject
	End Property
	Public Property Set subject As String
		Me.strsubject = subject
	End Property	
	
	Private struser As String 
	Public Property Get user As String
		user = Me.struser
	End Property
	Public Property Set user As String
		Me.struser = user
	End Property
	
	Public Property Get MailFile As String
		Dim s As New NotesSession
		
		If Me.struser = "" Then
			MailFIle = ""
		Else ' Notes Version is < 8.x
			
			If s.NotesBuildVersion < 307 Then
				Dim db As New NotesDatabase ( DD_SERVER, "names.nsf" )
				Dim v As NotesView
				Dim doc As NotesDocument
				If db.IsOpen() Then
					Set v = db.GetView("($Users)")
					If Not ( v Is Nothing ) Then
						Set doc = v.GetDocumentByKey (Me.user)
						If Not ( doc Is Nothing ) Then
							MailFIle = doc.MailServer(0) & SEPERATOR & doc.MailFile(0)
						Else
							Goto ERR_USER_NOT_FOUND
						End If
					Else
						Goto ERR_USER_NOT_FOUND
					End If
				Else
					Goto ERR_USER_NOT_FOUND
				End If
				
			Else ' we are running at least Notes Version 8
				On Error 4731 Goto ERR_USER_NOT_FOUND
				Dim notesdir As NotesDirectory
				Set notesdir  = s.getDirectory(DD_SERVER)
				Dim homeserver As Variant
				homeserver =  notesdir.GetMailInfo (Me.struser, False, False)
				mailfile = Cstr(homeserver(0)) & SEPERATOR & Cstr(homeserver(3))	
			End If			
EXIT_PROPERTY:
			Exit Property
ERR_USER_NOT_FOUND:
			mailfile = ""
			Resume EXIT_PROPERTY
		End If
		
	End Property
	
	Public Function CreateSingleEntry As Integer
		CreateSingleEntry = 0 ' no error
		
		If Trim(Me.strSubject) = "" Then
			CreateSingleEntry = 3 ' Subject missing
			Exit Function
		End If
		
		If Me.startdttm.TimeDifference (Me.enddttm) > 0 Then
			CreateSingleEntry = 4 ' EndDT before StartDT
			Exit Function
		End If
		
		If Me.MailFile = "" Then
			CreateSingleEntry = 1 'No MailFile or User not found
			Exit Function
		End If
		
		Dim db As New NotesDatabase ( _
		Strtoken (Me.Mailfile,SEPERATOR,1), Strtoken (Me.Mailfile,SEPERATOR,2)) 
		
		If db.IsOpen () Then
			Dim session As New NotesSession
			Dim nam As NotesName
			Dim cEntry As New NotesDocument (db)
			Dim rtitem As Variant
			Dim itemIcon As NotesItem
			Dim item As NotesItem
			Dim ret As Variant
			
			Set nam = session.CreateName(Me.struser)		
			
			'----------- Set User and Description ----------------
			cEntry.Form = APP_FORM
			cEntry.~$Programmatically = "1" 
			'cEntry.tmpOwnerHW = "0"
			Set item = New NotesItem(cEntry, "From", nam.canonical)
			item.IsAuthors = True
			Set item = New NotesItem(cEntry, "Principal", nam.canonical)
			'Set item = New NotesItem(cEntry, "Chair", nam.canonical)
			Set item = New NotesItem(cEntry, "$BusyName", nam.canonical)
			item.IsNames = True
			
			cEntry.AppointmentType = Me.AppType
			Select Case Me.AppType
			Case 0
				Set itemIcon = New NotesItem(cEntry, "_ViewIcon", 160)
			Case 1
				Set itemIcon = New NotesItem(cEntry, "_ViewIcon", 63)	
			Case 2
				Set itemIcon = New NotesItem(cEntry, "_ViewIcon", 168)
			Case 3
				Set itemIcon = New NotesItem(cEntry, "_ViewIcon", 9)
			Case 4
				Set itemIcon = New NotesItem(cEntry, "_ViewIcon", 158)
			End Select
			itemIcon.IsSummary = True
			
			cEntry.~$BusyPriority = "1" 
			cEntry.Subject = Me.subject
			
			'----------- Set Date and Times ----------------
			cEntry.StartDateTime = Me.startdttm.LSLocalTime
			cEntry.StartDate = Me.startdttm.LSLocalTime
			cEntry.StartTime = Me.startdttm.LSLocalTime
			cEntry.EndDateTime = Me.enddttm.LSLocalTime
			cEntry.EndDate = Me.enddttm.LSLocalTime
			cEntry.EndTime = Me.enddttm.LSLocalTime
			cEntry.calendarDateTime = Me.startdttm.LSLocalTime
			
			'----------- Set Other Fields ----------------
			cEntry.~$NoPurge = Me.enddttm.LSLocalTime
			cEntry.~$PublicAccess = "1"
			cEntry.MailOptions=""
			cEntry.tmpWhichList = ""
			
			Set item = New NotesItem(cEntry, "ExcludeFromView", "D")
			Call item.AppendToTextList ("S")
			cEntry.OrgTable = "C0"
			cEntry.Location = Me.strLocation
			Set item = New NotesItem(cEntry, "Categories", varCategories)			
			'cEntry.Categories = "Test"
			cEntry.Logo = "stdNotesLtr0"
			cEntry.OrgState = "x"
			cEntry.Repeats = ""
			cEntry.Resources = ""
			cEntry.SaveOptions = ""
			cEntry.SequenceNum = "1"
			cEntry.APPTUNID = cEntry.UniversalID
			'//Call cEntry.ComputeWithForm (False,True)
			Call cEntry.save(False, True)
			
		Else
			CreateSingleEntry = 2 'MalFile cannot be opened
		End If
	End Function
	
End Class

Aufgerufen wird das Zeugs mit

Code
Sub Click(Source As Button)
	Dim CEntry As New CEntry()
	CEntry.AppType = "Appointment"
	CEntry.User = "Beta User/Singultus"
	CEntry.Subject = "Hier kommt ein Eintrag"
	CEntry.Location = "Mettmann"
	CEntry.Categories = "Test;test1;test2"
	Set CEntry.StartDT = New NotesDateTime("11.07.2008 13:00:00") 
	Set CEntry.EndDT = New NotesDateTime("11.07.2008 14:00:00") 
	
	Msgbox CEntry.CreateSingleEntry
	
End Sub

Ach ja, wie man sieht wird der Eintrag im Backend erzeugt ...
« Letzte Änderung: 25.07.08 - 18:30:09 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #15 am: 11.08.08 - 07:37:16 »
Danke bin heute erst aus dem Urlaub wieder gekommen und werde mich da mla durchwurschteln....

Nochmals vielen Dank
Viele Grüße

Christian T.

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #16 am: 12.08.08 - 11:43:24 »
So habe nun meinen Eigenen Button erstellt mit der Hilfe von eknori...

Es klappt zurzeit alles wunderbar. Nochmals Vielen Dank bis dann.....
Viele Grüße

Christian T.

Offline cash

  • Aktives Mitglied
  • ***
  • Beiträge: 138
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #17 am: 26.09.08 - 10:16:12 »
Habe den Script gerade mal bei mit getestet unter Notes 6.

Habe die Schleife für Notes 8 auskommentiert und den Button angepaßt. Der Script läuft ohne Fehler durch (zumindest sagt das die Messagebox.

Nur leider wird kein Termin eingetragen... Kann mir einer evtl sagen warum? Ich würde ja vermuten das mit er mit der Ermittlung des Users Schwierigkeiten hat oder?

Gruß

Thomas

Hiermal der abgeänderte Button:

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim user As String
   Dim CEntry As New CEntry()
   CEntry.AppType = "Appointment"
   CEntry.User = session.UserName
   CEntry.Subject = "Hier kommt ein Eintrag"
   CEntry.Location = "Mettmann"
   CEntry.Categories = "Test;test1;test2"
   Set CEntry.StartDT = New NotesDateTime("26.09.2008 13:00:00")
   Set CEntry.EndDT = New NotesDateTime("26.09.2008 14:00:00")
   
   Msgbox CEntry.CreateSingleEntry

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #18 am: 26.09.08 - 10:36:48 »
was steht bei dir bei Const DD_SERVER =  ??
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline cash

  • Aktives Mitglied
  • ***
  • Beiträge: 138
Re: Aus einer anderen DB einen Termin erstellen
« Antwort #19 am: 26.09.08 - 10:48:01 »
upps die Felder habe ich doch beim kopieren Glatt übersehen...Nachdem ich die eingefüt und angepaßt habe läuft der Script auch super unter Notes 6.

Vielen Dank

Thomas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz