Outlook Termine synchronisieren

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11173
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Outlook Termine synchronisieren

Beitrag von AUGE_OHR » Sa, 05. Mär 2011 19:03

hi,

Im Outllok Calendar wird für jeden Termin die "Zeit" in den Property
"CreationTime" und "LastModificationTime" festgehalten.

damit könnte man die Termin mit einer anderen Datei "synchronisieren".

Code: Alles auswählen

cDateTime := CALENDAR->CREDATE
::oStatic:Setcaption(cDateTime)
SELECT 1
SEEK(cDateTime)      // YYYYMMDDHHMMSS
IF FOUND()
   IF OUTLOOK->LASTDATE = CALENDAR->LASTDATE
       // keine Änderrung
   ELSE
      IF OUTLOOK->LASTDATE > CALENDAR->LASTDATE
          // Outlook "Server" ist "neuer" als Client
      ELSE
         SyncUpdate()
      ENDIF
   ENDIF
ELSE
   APPEND BLANK
   SyncUpdate()
ENDIF
soweit sogut, aber leider klappt das nicht immer ... :(

wenn ich nun den "Abgleich" mit harbour mache funktioniert es denn

Code: Alles auswählen

Ttos() -> YYYYMMDDHHMMSS.ccc
d.h. das Problem liegt
bei Xbase++ in der "fehlenden Minute"

Als Workaround für 1 Person könnte ich mir mit SUBSTR(dDateTime,1,13) behelfen,
da es kaum möglich ist "in der selben Minute" einen 2th Termin anzulegen.

Nun habe ich aber das Problem wie mache ich es im Netzwerk mit "mehreren" Personen ?
gruss by OHR
Jimmy

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11173
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Outlook Termine synchronisieren

Beitrag von AUGE_OHR » Di, 08. Mär 2011 8:09

moin,

wenn man einen Termin "kopiert" und an einer anderen Stelle "einfügt" hat man die selbe "CreateTime" ... #-o

also im Outlook Calender "jeden" Termin "neu" anlegen :!: sonst muss man sich durch eine Schleife kämpfen :banghead:

Code: Alles auswählen

DO WHILE !EOF()
   cSeek := CALENDAR->CREDATE
   ::oToday:Setcaption(cSeek)
   SELECT 1
   SEEK(cSeek)
   IF FOUND()
      //
      // wenn man einen Termin per copy/paste erzeugt
      // hat er die selbe "CreateTime" die das "original"
      //
      // wenn man ihn dann "verändert" merkt man es nur am "LastDate"
      //
      SET SCOPE TO cSeek
      DO WHILE !EOF()
         IF CALENDAR->LASTDATE = OUTLOOK->LASTDATE
         ELSE
            IF CALENDAR->LASTDATE > OUTLOOK->LASTDATE
               //
               // "LastDate" ist "neuer" also geändert
               // ... und muss "hoffen" das es nur 1x gibt ?!
               //
               ::SyncUpdate()
               EXIT
            ENDIF
         ENDIF
         SKIP
      ENDDO
      SET SCOPE TO
   ELSE
      APPEND BLANK
      ::SyncUpdate()
   ENDIF
   SELECT 2
   SKIP
ENDDO
wenn nun 2 Termine, mit gleicher "CreateTime", geändert wurden ( "LastDate" ) ... was dann :?: 2x Durchläufe ... :-k
gruss by OHR
Jimmy

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11173
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Outlook Termine synchronisieren

Beitrag von AUGE_OHR » Di, 29. Mär 2011 5:14

da es kaum möglich ist "in der selben Minute" einen 2th Termin anzulegen.
es muss natürlich Sekunden heissen und nicht Minute ( HHMMSS.ccc )

aber dazu nun eine WARNUNG : Wenn man nun eine DBF nimmt um Outlock per MAPI "zu füllen" muss man auch auf die Sekunde achten !!!

Outlook kann die dezimal Stellen zwar auswerten aber Xbase++ mit :treatDateAsString(.T.) kann es NICHT !!!

man muss also eine "Verzögerung" von 1 Sekunde "einbauen" damit Xbase++ hinterher damit was anfangen kann.
gruss by OHR
Jimmy

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11173
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Outlook Termine synchronisieren

Beitrag von AUGE_OHR » Mi, 30. Mär 2011 23:14

hi,

Pablo hat mich auf http://sourceforge.net/projects/disphelper/ gebracht.
leider ist es "nur" C-Source ... wie mache ich daraus eine DLL ( für Xbase++ ) ?
gruss by OHR
Jimmy

Antworten