Autor Thema: Aus einer anderen DB einen Termin erstellen  (Gelesen 24155 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.730
  • 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.730
  • 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