Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Silke am 10.04.03 - 12:36:35
-
Mein Manager möchte ;D einen Agenten (oder was auch immer) der beim Import einer Datei (voll mit Kalendereinträgen) überprüft ob die Einzräge schon da sind und sie ansonsten einträgt ::)
Geht das überhaupt wenn ja wie ???
-
also bist Du Sänger? cool... ;D
wat ist denn der Aufhänger für einen "gleichen" Eintrag?
-
also bist Du Sänger? cool... ;D
Was issn nen SÄNGER???
wat ist denn der Aufhänger für einen "gleichen" Eintrag?
Also vooor Wochen :o sprich Anfang des Jahres hatte er schonmal den Anfall.
Also habe ich einen Datei gebaut mit der die Geburtstage der GE eingetragen werden. ;)
Und er möchte das diese Textdatei jetzt regelmässig gepflegt wird (von mir natürlich) und man sie alle 4-8 Wochen reinbügelt. Dabei würden dann aber doppelte ohne Ende endstehen daher die Kontrolle nach doppelten.
Ikke hab keene Ahnung ob det oder gar wie det jet
-
... es müsste gehen, denn in der Kalender-Dokumente haben ja Werte die du dir zum Überprüfen heranziehen kannst, den Betreff des Eintrages, den Tag und die Uhrzeiten (Dauer)...
ata
-
... es müsste gehen, denn in der Kalender-Dokumente haben ja Werte die du dir zum Überprüfen heranziehen kannst, den Betreff des Eintrages, den Tag und die Uhrzeiten (Dauer)...
ata
Danke für den guten Tip aber dsa ist so als ob man jmd der kein Telefon hat sagt ruf mich mal an ;D
Mit anderen Worten ich weiss zwar nach hartem Kampf wie ich sone Liste erstellen muss um sie dann zu importieren aber das wars dann auch. :-[
Mit anderen Worten ich brauche ein Kochrezept mit allen Zutaten und am besten noch den Topf und den Herd dazu (Anschluss nicht vergessen) ::)
-
.. mach es dir doch viel einfacher:
im ersten schritt allle dokument in die tonne hauen, und dann die datei neu importieren. dabei bedenken: das geht nur, wenn niemand neue docs in die db einstellen darf / kann.
-
...und da ist dann ja schon der Haken. Jeder hat natürlich auch noch über die Liste hinausgehende Kalendereinträge.
Ich würde da ja keinen Herrmann machen ; ;D, denn die Liste trägt ja nur die Geburtstage für ein Jahr ein und mann könne Sie fürs folgende Jahr einfach mit dem neuen Jahr versehen ;D und gut ist, aber mein Manager möchte sie auch im laufenden Jahr aktualisieren können. Warum habe ich nicht ganz verstanden :-\
-
... häng mal ein Muster deiner Importdatei an, vielleicht hat ja einer Luft am WE...
ata
-
hi silke,
also wenn ich das richtig verstanden habe.
NUR du pflegst die liste (und sonst kein anderer). was spricht also dagegen, die daten der ln-db jedes mal in die tonne zu hauen ?
-
Hier eine gekürzte und namenlose (Betriebsrat) Version meiner Import Datei. Es folgen noch ca 50 Datensätze aber alle nach dem Selben Strickmuster.
-
... hier mal ein kleiner auszug aus der designer-hilfe:
' Display the contents of c:\config.sys a line at a time.
Dim text As String, fileNum As Integer
fileNum% = FreeFile()
Open "c:\config.sys" For Input As fileNum%
Do While Not EOF(fileNum%)
Line Input #1, text$
Print text$ ' Prints one line of config.sys
Loop
Close fileNum%
jetzt musst du "nur noch" text$ zerpflücken, nachschauen ob es das doc schon gibt, wenn ja, alle felder updaten, ansonsten neues doc anlegen.
-
jetzt musst du "nur noch" text$ zerpflücken, nachschauen ob es das doc schon gibt, wenn ja, alle felder updaten, ansonsten neues doc anlegen.
Die Worte "nur noch" lassen mich schon schlucken ich sitze NUR im Sekretariat ::) habe zwar CLP Design aber die Betonung liegt auf Design nicht so sehr auf programmieren. ;D
-
@Silke
CLP Design hat auch mit Programmierung zu tun - nicht nur Maskengestaltung...
... ich leg dir die Routine am WE ins Posting...
ata
-
hi silke,
also wenn ich das richtig verstanden habe.
NUR du pflegst die liste (und sonst kein anderer). was spricht also dagegen, die daten der ln-db jedes mal in die tonne zu hauen ?
Jeder importiert die Liste in seinen Kalender und hat dort auch noch andere Einträge :-\
-
@Silke
CLP Design hat auch mit Programmierung zu tun - nicht nur Maskengestaltung...
Das ist der Haaken an der Sache ich verstehe vieles aber kann es seltern selber :-[
-
... ich habe den Code nicht bis ins letzte getestet...
... es werden neue Kalendereinträge erstellt, wenn noch keine zu dieser Person eingetragen waren...
' # Code kann in einer Aktion oder Schaltfläche verwendet werden...
' # ... Import von Geburtstagsterminen aus einer Textdatei...
' # ... Abgleich, ob ein Kalendereintrag bereits existiert,
' # ... wenn nicht, dann wird ein neuer Eintrag erstellt - ata - 04.2003
Dim session As New NotesSession ' # Wird zur initialisierung der Mail-DB benötigt
Dim dbMail As NotesDatabase ' # ... die Datenbank mit den Terminen
Dim vMailDB As Variant ' # ... Parameteraufahme
Dim sSearch As String ' # ... für die Suchformel
Dim sdt As New NotesDateTime( "01/01/1990" ) ' # ... Dokumente ab diesem Datum werden gesucht
Dim dc As NotesDocumentCollection ' # ... alle Geburtstagseinträge in der Datenbank
Dim doc As NotesDocument ' # ... bestehnder Geburtstagseintrag
Dim docNew As NotesDocument ' # ... neuer Geburtstagseintrag
Dim i As Integer ' # ... Laufvariable
Dim found As Variant ' # ... = True = Kalendereintrag gefunden
Dim fileNum As Integer ' # ... Dateinummer - wird zum identifizieren der Importdatei benötigt
Dim counter As Integer ' # .. Zählervariable
Dim Zeile() As String ' # ... Array mit den eingelesenen Werten ( Grenzen bei 64K Index )
Dim sSubject As String ' # ... der Betreff des Kalendereintrages - Geburtstag: Name
Dim CalDate As NotesDateTime ' # ... Datum für Kalendereintrag
Dim item As NotesItem ' # ... um ein Feld zu Datumsfeld zu konvertieren
fileNum = Freefile() ' # ... der Importdatei eine Nummer vergeben
counter = 0 ' # ... Zählervariable auf Null setzen
Open "D:\Geburtstage.txt" For Input As fileNum ' # Textdatei zum Lesen öffnen - ### Pfad korrigieren !!! ###
Do While Not Eof(fileNum) ' # ... bis zum Ende der Textdatei...
Redim Preserve Zeile(0 To counter ) ' # ... ... das Array um ein Element erweitern
Line Input #fileNum, Zeile( counter ) ' # ... ... eine Zeile in das Array übernehmen
counter = counter + 1 ' # ... ... weiterzählen
Loop ' # ... wiederholen bis Ende der Textdatei erreicht
Close fileNum
Print Cstr(counter) + " Einträge gefunden"
vMailDB = Evaluate("@MailDBName") ' # Parameter der Maildatenbank des Users
Set dbMail = session.GetDatabase( vMailDB(0) , vMailDB(1) ) ' # ... Maildatenbank initialisieren - Parameter eventuell anpassen
If dbMail.IsOpen Then ' # ... wenn die Mail-DB geöffnet werden konnte...
sSearch = |SELECT Form = "Appointment" & @Left( Subject ; 10 ) = "Geburtstag" | ' # ... Suchformel bilden
Set dc = dbMail.Search( sSearch , sdt , 0) ' # ... alle Geburtstagseinträge
Print Cstr( dc.Count ) + " Einträge gefunden..."
For i = 0 To counter - 1 ' # Abarbeiten der eingelesenen Daten des Arrays
sSubject = Mid( Zeile( i ) , 12 , Len( Zeile(i)) -11) ' # ... den gesuchten Betreffeintrag aus der Textdatei isolieren
Print sKey + " - " sSubject ' # ... Kontrollausgabe für Debugging
If dc.Count > 0 Then ' # ... wenn Kalendereinträge gefunden wurden
found = False ' # ... zurücksetzen der flag
Set doc = dc.GetFirstDocument ' # ... den ersten Kalendereintrag initialisieren
While Not doc Is Nothing ' # ... alle Kalendereinträge...
If Trim( doc.Subject(0) ) = Trim( sSubject ) Then ' # ... ... wenn es ein Geburtstagseintrag ist, dann
found = True ' # ... ... flag auf True setzen
Goto IsFound ' # ... ... keine weitere Suche notwendig - springe zu IsFound
End If
Set doc = dc.GetNextDocument(doc) ' # ... ... ächsten Kalendereintag, solange noch nicht gefunden
Wend ' # ... alle Kalendereinträge sind abgearbeitet
IsFound:
If found Then ' # Sollte der Eintrag gefunden worden sein, dann...
Print "Gefunden: " + sSubject ' # ... ... Kontrollausgabe für Debugging
Else ' # ... ansonsten
Goto Neuanlage ' # ... Geburtstagseintrag nicht gefunden => Neuanlage eines Dokumentes
End If
Else ' # ... keine Kalendereinträge mit "Geburtstag" gefunden, bzw. Neuanlage
Neuanlage:
Print "Neuanlage: " + sSubject ' # ... Kontrollausgabe für Debugging
Set docNew = dbMail.CreateDocument ' # Neues Dokument in der Mail-DB erstellen
docNew.Form = "Appointment" ' # ... Termineintrag
docNew.AppointmentType = "1" ' # ... Jahrestag
Set calDate = New NotesDateTime( Left(Zeile( i ) , 10 ) + " 07:00:00" )
Set item = New NotesItem( docNew , "CalendarDateTime" , calDate.LsLocalTime)
item.IsSummary = True
Set calDate = New NotesDateTime( Left(Zeile( i ) , 10 ) + " 23:59:59" )
Set item = New NotesItem( docNew , "EndDateTime" , calDate.LsLocalTime)
item.IsSummary = True
Call docNew.ReplaceItemValue("$CSVersion" , "2")
Call docNew.ReplaceItemValue("Subject" , sSubject) ' # ... Betreff des Termines
Call docNew.ReplaceItemValue("_ViewIcon" , 63) ' # ... Appointment-Icon für gleiches Display
Call docNew.ReplaceItemValue("$Alarm" , "1") ' # ... Alarm einschalten
Call docNew.ReplaceItemValue("$AlarmDescription" , sSubject ) ' # ... Alarminhalt
Call docNew.ReplaceItemValue("$AlarmOffset" , -1440 * 1 ) ' # ... 1 = einen Tag davor benachrichtigen
Call docNew.Save( True , True ) ' # Kalendereintrag in der Mail-DB speichern
End If
Next
Print "Import der Geburtstage abgeschlossen."
Else
Print "Maildatenbank konnte nicht geöffnet werden." ' # ... Kontrollmeldung: Kein Import möglich - nur zur Absicherung
End If
... ich denke das war was du brauchst,
... ich hab' es ausfühlich kommentiert...
ata