Outlook Adressen

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Outlook Adressen

Beitrag von Wolfgang Ciriack »

Hallo,
ich habe erfolgreich den Abgleich von Kontakten meiner Anwendung mit denen von Outlook integriert. Nun möchte ich aber die Zeit wissen, wann der Outlook-Kontakt zuletzt geändert wurde. Dafür lese ich das property
"LastModificationTime" vom Contactitem aus, aber das bringt mir nur ein Datum, nicht die Zeit.
Kann mir jemand sagen, wie ich an den Zeitwert herankomme ?
Viele Grüße
Wolfgang
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Wolfgang,
da kann ich Dir auch nicht wirklich weiterhelfen - nur der Hinweis:
Von der VBA-Programmierung her weiß ich, dass ein Wert vom Typ DateTime (und dabei wird es sich in Deinem Fall wohl handeln) nur das Datum "zurückgibt", wenn man es einer Variablen vom Typ Date zuweist (da diese ja keinerlei Zeitinformationen kennt)!
Intern ist ein DateTime eh' als riesig große Zahl gespeichert - nämlich als Anzahl Sekunden, die seit einem bestimmten Datum (01.01.1904? Bin ich mir nicht sicher...) vergangen sind. Das wird dann umgerechnet in ein Datum und das was übrig bleibt, ist dann die Uhrzeit an dem entsprechenden Datum.
Vielleicht hilft Dir das ein wenig weiter?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Hallo Martin,
ja, das das ein datetime Feld ist, hab ich mir auch schon gedacht. Dann muss aber die activex-Schnittstelle von xbase das schon umsetzen in date ?
Viele Grüße
Wolfgang
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Wolfgang,
möglich. Und Xbase++ kennt kein DateTime - also versuchen, das als String zu interpretieren und dann die Angaben selber umwandeln.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Hallo, Günter Beyes hat mal wieder die Lösung gezeigt.

oAutomationObject:TreatDateAsString(.T.)

liefert Datum und Uhrzeit im Format "20070313074506".

Nochmals Danke an Günter.
Viele Grüße
Wolfgang
Günter Beyes
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 315
Registriert: Mo, 16. Okt 2006 13:04
Wohnort: Region Stuttgart

Beitrag von Günter Beyes »

Hallo Wolfgang,

den Dank möchte ich an Andreas Herdt weiterreichen, der letztes Jahr in der ActiveX-Newsgroup folgendes schrieb:
Andreas Herdt hat geschrieben: Re: importing data from outlook2003 Calendar

Currently there is no way to get/set time information.
The next refresh will contain a fix for this problem.

A new method will be introduced
AutomationObject:treatDateAsString( .T. | .F. ) // default .F.

If .T. is set then the date will be returned as character string
in the following syntax:

"YYYYMMDDHHMMSS"
Viele Grüße,
Günter
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Beitrag von Muecke »

Hallo Wolfgang,

kannst Du mir sagen wie dies gehen soll

oAutomationObject:TreatDateAsString(.T.)

Ich lese dies aus mit:

Code: Alles auswählen

oContact:LastModificationTime
Wenn ich schreibe

Code: Alles auswählen

oContact:TreatDateAsString(.T.) 
Hab ich "oAutomationObject" retour aber kein String.


Gruss Thomas
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Hallo Thomas,
du musst nicht bei oContact, dh. einem Kontaktitem sondern beim oOutlook diese Eigenschaft setzen.

Code: Alles auswählen

oOutlook := CreateObject( "Outlook.Application" )
.....
oOutlook:TreatDateAsString(.T.)
....
ol_dt:=m->oContact:LastModificationTime
ol_date:=stod(substr(ol_dt,1,8))
ol_time:=substr(ol_dt,9,2)+":"+substr(ol_dt,11,2)+":"+substr(ol_dt,13,2)
Viele Grüße
Wolfgang
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Beitrag von Muecke »

Danke Wolfgang,

Funct ja super

Gruss Thomas
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Abgleichen

Beitrag von Muecke »

Hallo Wolfgang,

Ich hab Probleme mit Abgleichen, da ich die Daten von einem Ordner in den Kontakten nicht überschreiben lassen.Es wird zusätzlich ein neuer Kontakt geschrieben mit gleichen Daten.
Kann ich dies Umgehen?


Weisst Du vielleicht noch wie ich diese Felder ansprechen kann:
Details->Abteilung und Büro

Gruss Thomas
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Hallo Thomas,
ich habe das so gelöst, dass ich jedem Kontakt eine eindeutige Nummer gebe (z.B. Kundennummer), diese schreibe ich beim Anlegen in das Outlookfeld CustomerID. Beim Abgleichen suche ich dann nach der Nummer, wenn vorhanden, ersetze ich die Daten, ansonsten Neuanlage. Zum Suchen verwende ich folgendes:

Code: Alles auswählen

function ChangeOlSatz(oC)
local retw:=0, oI, v_dt, v_d, v_t
local sSearch:="[CustomerID] = '"+outl->o_id+"'"
** in o_id ist die Nummer als string gespeichert

oI:=oC:Items:Find(sSearch)
if oI<>NIL
   oI:CompanyName:=alltrim(outl->firma)
   oI:FileAs:=alltrim(outl->firma)
   if alltrim(upper(outl->firma))<>alltrim(upper(outl->name1))
      oI:LastName:=alltrim(outl->name1)
      oI:FileAs:=alltrim(outl->firma)+" "+chr(10)+chr(13)+alltrim(outl->name1)
   endif
   oI:Email1Address:=alltrim(outl->email)
    if ku->(dbseek(str(outl->nummer,5),.F.,1))
         oI:BusinessAddressStreet:=alltrim(ku->strasse)
         oI:BusinessAddressPostalCode:=ku->plz
         oI:BusinessAddressCity:=alltrim(ku->ort)
         oI:BusinessHomepage:=ku->internet
........
   oI:Save()

Zu den Felder:
Die sind immer ein wenig schwer über die englischen Bezeichnungen zuzuordnen, ich denke es könnten die Felder OfficeLocation, Department sein, am Besten wäre es wahrscheinlich alle Felder in Outlook zu beschreiben und dann auszulesen. Ich kann dir gerne eine Hilfe-Datei zusenden, in der alle Methoden, Events und Properties der AktiveX Komponente enthalten sind, wenn du mir eine private email schickst (ciriack_at_ciju.de)
Viele Grüße
Wolfgang
Antworten