Outlook Kontakte, keine Einträge nach dem Schreiben

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Outlook Kontakte, keine Einträge nach dem Schreiben

Beitrag von Rudolf »

Hallo,
habe mit der u.a. Funktion versucht Kontakte ins Outlook 2003 zu schreiben. Leider sind die Kontakte danach im Outlook nicht zu finden. Auch wenn ich den Folder für die Kontakte manuell wählen lasse, ist nach dem Schreiben nichts im gewählten Kontaktordner zu finden. Hat jemand ein funktionierendes Beispiel zum Testen für mich ?
Grüsse
Rudolf

Code: Alles auswählen

function check_neukontakt(lSilent)
******************************************************************
local aSel ,aRepl := {}
local oOutlook ,oNS,oContacts,oNew
default lSilent to .f.
aSel := saveopen("KONTAKT")
if empty(aSel)
     return .f.
endif
kontakt->(setorder("STATUS"))
if kontakt->(seek("O"))
     oOutlook := CreateObject( "Outlook.Application" )
     IF NIL == oOutlook
          return .f.
     ENDIF
     oNS       := oOutlook:GetNamespace( "MAPI" )
     oContacts := oNS:getDefaultFolder( olFolderContacts )
     //oContacts :=oNS:PickFolder()             //* returns NameSpace       ??????????
     altd()
     if oContacts<>NIL
          if oContacts:DefaultItemType<>olContactItem
               //no contact folder
               saveopen(aSel)
               oOutlook:quit()
               oOutlook:destroy()
               oOutlook := NIL
               oContacts := NIL
               return .f.
          endif
          do while kontakt->status = "O"
               if (oNew:=oContacts:Items:Add(olContactItem))<>NIL
                    oNew:CompanyName:=alltrim(kontakt->firma)
                    oNew:firstName:=alltrim(kontakt->vorname)
                    oNew:lastName:=alltrim(kontakt->name)
                    oNew:fullname:=alltrim(kontakt->name)+ " " + alltrim(kontakt->vorname)
                    oNew:Email1Address:=alltrim(kontakt->email)
                    oNew:nickname:=alltrim(kontakt->matchcode)
                    oNew:FileAs:=alltrim(kontakt->firma)
                    oNew:BusinessTelephoneNumber:=alltrim(kontakt->telefon)
                    oNew:BusinessFaxNumber:=alltrim(kontakt->fax)
                    
               endif
               kontakt->(skip())
          enddo
          oContacts := NIL
     endif
     oOutlook:quit()
     oOutlook:destroy()
     oOutlook := NIL
endif
saveopen(aSel)
return .t.
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Hallo Rudolf,

da fehlt einfach ein

oNew:Save()

Gruß Wolfgang

(War aber in meiner Antwort in Newsgroup drin :wink: )
Viele Grüße
Wolfgang
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Beitrag von Rudolf »

Hallo Wolfgang,
vielen Dank, das war der Fehler ! jetzt funktionierts. Muss nur noch rausfinden wie ich den richtigen Folder rausbekomme wenn mehrere vorhanden sind.
Grüsse
Rudolf
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Hallo Rudolf,

deswegen habe ich gleich zum Anfang

Code: Alles auswählen

oContacts :=oNS:PickFolder()
drin, damit man den richtigen Kontakteordner wählen kann.
Viele Grüße
Wolfgang
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Beitrag von Rudolf »

Hallo Wolfgang,
danke, das hat auch funktioniert, aber bei mir werden die Kontakte nicht im Dialog sondern im Hintergrund eingelesen und dann ins Outlook übertragen. Ich müsste also den Folder angeben beim Speichern.
Grüsse
Rudolf
kallecux
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 104
Registriert: Mi, 01. Feb 2006 23:19

Beitrag von kallecux »

Hallo!

Das Thema Outlook und Adresen ist für mich zur Zeit auch aktuell. Jedoch habe ich wohl das Problem, dass Datenfelder in OL 2003 und OL 2007 unterschiedlich sind. Kann das jemand bestätigen (habe kein OL 2007) und evtl. auch sagen, wie ich an die Feldnamen rankomme?

Weiterhin versuche ich das Ziel "Synchronisation" zu erreichen. Dazu ist wohl eine eindeutige Outlook-ID notwendig die ich in selber speichern muss und ich muss in der Lage sein OL zu "sagen", dass eine Adresse aktualisiert werden soll....oder so?!?!?!
Beste Grüße

Karl Heinz
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Beitrag von Rudolf »

Hallo Karlheinz,
die Felder dürften gleich sein, bei mir jedenfalls funktioniert noch alles nachdem ich auf Outlook 2003 umgestellt habe.
Ich habe die Infos von JAZZE, kann sie Dir bei Bedarf schicken. JAZZE ist übrigends jetzt frei und hat viele Infos über divers ActiveX Schnittstellen.
Grüsse
Rudolf
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Rudolf hat geschrieben: Ich habe die Infos von JAZZE, kann sie Dir bei Bedarf schicken. JAZZE ist übrigends jetzt frei und hat viele Infos über divers ActiveX Schnittstellen.
Grüsse
Rudolf
Hi,

könntest du bitte die Internetadresse von JAZZE unter LINKS und DEMOs veröffentlichen ?

Danke.
Gruß
Hubert
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Beitrag von Rudolf »

Hallo Hubert,
ok, mach ich gleich
Grüsse
Rudolf
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Hallo Karl-Heinz,

Infos über die Felder in Outlook findest du in der Hilfedatei

C:\Programme\Microsoft Office\OFFICE11\1031\VBAOL11.CHM

Ich habe z.B. in Outlook das Feld CustomerID für eine eindeutige Kennung (art+nummer+lfdnr) genommen.
Der Abgleich läuft dann im Prinzip so:

Code: Alles auswählen

oNS := oOutlook:GetNamespace( "MAPI" ) 
oContacts:=oNS:PickFolder()            
abbr:=.F.
if oContacts<>NIL
    if oContacts:DefaultItemType<>olContactItem
.....
.....
       abbr:=.T.
    endif
endif
if abbr
   oOutlook:destroy()
   oDlg:destroy()
   return
endif

nOlAnzahl:=oContacts:items:count
for i:=1 to nOlAnzahl
   m->oContact := oContacts:items(i)

   * in Outlook-ID wird art+nummer+lfdnr gespeichert
   cSuch:=DC_XtoC(m->oContact:CustomerID)

** in eigener Datenbank suchen

   if empty(cSuch)
      ** Kein Eintrag, wurde in Outlook angelegt
      append blank
      .........

    else
      ** Nummer vorhanden, Datum und Zeit vergleichen
      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)

      if outl->aenddat==ol_date
         if ol_time==outl->aendtime
            ** Daten gleich
            replace vergleich with "=="
         elseif TimeToSec(ol_time)>TimeToSec(outl->aendtime)
            ** von Outlook übernehmen
            replace vergleich with "<-"
         else
            ** nach Outlook schreiben
            replace vergleich with "->"
         endif
      elseif outl->aenddat>ctod(outl->o_datchan)
            ** nach Outlook schreiben
         replace vergleich with "->"
      else
            ** von Outlook übernehmen
         replace vergleich with "<-"
      endif
   endif
.......
Viele Grüße
Wolfgang
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Beitrag von Rudolf »

Hallo Wolfgang,
danke für den Code, ist für mich sehr interessant da ich unbedingt auf doppelte prüfen muss.
Grüsse
Rudolf
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Beitrag von Lewi »

Hallo!

Wer Interesse an Jazze 3.1 hat, dem würde ich meine lizensierte Jazze-Installation gezippt zur Verfügung stellen. Anfragen bitte als PN.

Gruß, Olaf
kallecux
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 104
Registriert: Mi, 01. Feb 2006 23:19

Beitrag von kallecux »

Hallo Wolfgang,

danke für den Tipp - so werde ich es angehen....
Beste Grüße

Karl Heinz
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Lewi hat geschrieben:Hallo!

Wer Interesse an Jazze 3.1 hat, dem würde ich meine lizensierte Jazze-Installation gezippt zur Verfügung stellen. Anfragen bitte als PN.

Gruß, Olaf
Hi,

ist die besser als der freie download link ?
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Wozu braucht man das denn?

Jan
Antworten