AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
01.04.20 - 02:43:40
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Domino 8 und frühere Versionen
| |-+  ND7: Entwicklung (Moderatoren: eknori, koehlerbv)
| | |-+  Aus einer anderen DB einen Termin erstellen
« vorheriges nächstes »
Seiten: [1] 2 Nach unten Drucken
Autor Thema: Aus einer anderen DB einen Termin erstellen  (Gelesen 14002 mal)
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« 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 » Gespeichert

Viele Grüße

Christian T.
DAU-in
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Weiblich
Beiträge: 1129


- unterwegs -


« Antworten #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
Gespeichert

mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #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
Gespeichert

Viele Grüße

Christian T.
klaussal
Gast
« Antworten #3 am: 25.07.08 - 09:44:26 »

Zitat
Nix klappt

Was heisst das denn ?
Gespeichert
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #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.
Gespeichert

Viele Grüße

Christian T.
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #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
Gespeichert
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #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.
Gespeichert

Viele Grüße

Christian T.
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #7 am: 25.07.08 - 11:56:08 »

WO wird das nicht angezeigt?

Füllst Du auch die anderen erforderlichen Items?

Bernhard
Gespeichert
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #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.
Gespeichert

Viele Grüße

Christian T.
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #9 am: 25.07.08 - 12:59:22 »

Du beantwortest die eigentliche Frage nicht.

Bernhard
Gespeichert
klaussal
Gast
« Antworten #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 ?
Gespeichert
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #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.
Gespeichert

Viele Grüße

Christian T.
DAU-in
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Weiblich
Beiträge: 1129


- unterwegs -


« Antworten #12 am: 25.07.08 - 16:40:36 »

Wenn du deine Backendwerte setzt, wie speicherst du die denn?

Grüsse

Dau-in
Gespeichert

mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #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
Gespeichert
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11367


« Antworten #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 » Gespeichert
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #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
Gespeichert

Viele Grüße

Christian T.
C_T
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 272


« Antworten #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.....
Gespeichert

Viele Grüße

Christian T.
cash
Aktives Mitglied
***
Offline Offline

Beiträge: 138


« Antworten #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
Gespeichert
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11367


« Antworten #18 am: 26.09.08 - 10:36:48 »

was steht bei dir bei Const DD_SERVER =  ??
Gespeichert
cash
Aktives Mitglied
***
Offline Offline

Beiträge: 138


« Antworten #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
Gespeichert
Seiten: [1] 2 Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: