Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Berlin-Lackierung.de am September 07, 2016, 09:37:28

Titel: Kontakt aus Access nach Outlook
Beitrag von: Berlin-Lackierung.de am September 07, 2016, 09:37:28
Ich weiß dass dieses Thema bereits des Öfteren hier angesprochen wurde, jedoch stehe ich gerade (mal wieder) völlig auf dem Schlauch. Vielleicht liegt es auch daran, dass ich in den letzten Tagen zu viel Codes gesehen und geschrieben habe.

Problem:
Ich exportiere die Kontaktdaten nach Outlook - soweit alles gut, jedoch wenn eines der Felder (z.B. Me.Abteilung) leer ist, dann funktioniert das Ganze nicht mehr. Also bräuchte ich hier eine kleine Hilfestellung für eine Abfrage die die leeren Felder umgeht/ignoriert.
Das nächste ist, dass ich noch eine Abfrage bräuchte die feststellt wenn der kontakt bereits in Outlook vorhanden ist - und dies entsprechend meldet und den Code beendet.
Ich weiß dass dies banale Fragen sind, aber mein Kopf ist leer und ich muss diese Datenbank zu Ende bringen.
Also Danke im Voraus für Eure Hilfe :D

Dim MyOutlook As Outlook.Application
            Dim KontaktOutlook As Outlook.ContactItem
            Set MyOutlook = CreateObject("Outlook.Application")
            Set KontaktOutlook = MyOutlook.CreateItem(olContactItem)
            With KontaktOutlook
                .FirstName = Me.Vorname
                .LastName = Me.Text24 'Bezeichnung aus HF
                .BusinessTelephoneNumber = Me.Telefon
                .BusinessFaxNumber = Me.Fax
                .Email1Address = Me.txtEMail
                .Department = Me.Abteilung
                .CompanyName = Me.Text25 'Bezeichnung aus HF
                .Save
            End With
            Set KontaktOutlook = Nothing
            Set MyOutlook = Nothing
Titel: Re: Kontakt aus Access nach Outlook
Beitrag von: bahasu am September 07, 2016, 10:10:06
Hallo,

vielleicht hilft Dir:
.Department = nz(Me.Abteilung,"")

Harald
Titel: Re: Kontakt aus Access nach Outlook
Beitrag von: Berlin-Lackierung.de am September 07, 2016, 10:39:16
Super :D hat geklappt (auf die einfachsten Dinge...)


Jetzt benötige ich nur noch die Abfrage, ob der Kontakt bereits vorhanden ist :D
Titel: Re: Kontakt aus Access nach Outlook
Beitrag von: bahasu am September 08, 2016, 05:11:01
Moin,

Zitat von: Berlin-Lackierung.de am September 07, 2016, 10:39:16
Jetzt benötige ich nur noch die Abfrage, ob der Kontakt bereits vorhanden ist :D

Ist die Abfrage das Problem oder das Zugreifen auf die Kontaktdaten?

Kontaktdaten sind erreichbar via Verknüpfung (unter access2003: Datei > externe Daten > Tabellen verknüpfen: Dateityp=Outlook() > Kontakte)

Das Prüfen auf Vorhandensein der Kontaktdaten sollte dann mit den Stichworten recordset, findfirst und nomatch umsetzbar sein (Oder ist genau das der Gegenstand Deiner Frage?).

Harald
Titel: Re: Kontakt aus Access nach Outlook
Beitrag von: Berlin-Lackierung.de am September 08, 2016, 06:43:51
Genau das ist meine Frage gewesen.
Da ich ja von Access nur einzelne Kontakte nach Outlook schicke, bräuchte ich eine Abfrage, ob dieser Kontakt bereits in Outlook besteht. Ich importiere ja keine Kontakte nach Access - bzw. brauche keine verknüpfte Tabelle.
Also vom Prinzip wäre die FindFirst - Methode die Richtige, jedoch mit dem Risiko, dass 2 Personen den selben Namen haben :(
Eigentlich wäre optimal, wenn eine Abfrage prüft ob der Name mit Vornamen und Telefonnummer bereits vorhanden ist.
Titel: Re: Kontakt aus Access nach Outlook
Beitrag von: bahasu am September 08, 2016, 09:15:21
Moin,

als Anregung für eigene Versuche:

Option Compare Database
Option Explicit


Private Sub Von_access_nach_outlook_Click()
    Dim MyOutlook As Outlook.Application
    Dim KontaktOutlook As Outlook.ContactItem
           
           
    If fDaten_nicht_vorhanden(Me.Vorname, Me.Nachname) Then
        Set MyOutlook = CreateObject("Outlook.Application")
        Set KontaktOutlook = MyOutlook.CreateItem(olContactItem)
           
        With KontaktOutlook
            .FirstName = Me.Vorname
            .LastName = Me.Nachname
           
            .BusinessTelephoneNumber = Me.Telefon
            .BusinessFaxNumber = Me.Fax
            .Email1Address = Me.txtEMail
            .Department = Me.Abteilung
            .CompanyName = Me.Text25 'Bezeichnung aus HF
       
            .Save
        End With
           
        Set KontaktOutlook = Nothing
        Set MyOutlook = Nothing

        MsgBox "Daten hinzugefügt"
   
    Else
        MsgBox "Daten sind vorhanden"
    End If
End Sub


Private Function fDaten_nicht_vorhanden(Vorname, Nachname As String) As Boolean
    Dim rs As DAO.Recordset
   
    Set rs = CurrentDb.OpenRecordset("Kontakte")
   
    rs.FindFirst "Vorname= '" & Vorname & "' and Nachname = '" & Nachname & "'"
    fDaten_nicht_vorhanden = rs.NoMatch
   
    rs.Close
    Set rs = Nothing
End Function


Die Such-Funktion kann erweitert werden, um z.B. sicherzustellen, dass bei mehrfachem Vorkommen von Vorname, Nachname auch die richtige Person gefunden wird.

CurrentDb.OpenRecordset("Kontakte") greift mit einer zuvor beschriebenen Verknüpfung auf die Outlook-Kontakt-Daten zu.

Harald
Titel: Re: Kontakt aus Access nach Outlook
Beitrag von: Berlin-Lackierung.de am September 09, 2016, 08:50:05
So, hat ge´klappt - also zwar nicht so wie ich es wollte, jedoch das Ergebnis ist erst mal nicht schlecht.

Problem:
Es werden immer alle Adressen nach Outlook geschickt (damit kann ich einigermaßen leben), jedoch Änderungen werden bei einer neuen Übertragung nicht verarbeitet.

Beispiel:
Ich füge eine Fax - Nummer hinzu, diese wird jedoch nicht übernommen  ???

Vielleicht hat dafür einer noch ne Lösung - dann wäre auch dieses Thema komplett :D
Titel: Re: Kontakt aus Access nach Outlook
Beitrag von: bahasu am September 09, 2016, 09:38:20
Moin,

bei meiner Test-Umgebung habe ich im Formular einen neuen Button angelegt, der beim Klick-Ereignis die folgenden Zeilen enthält:

Private Sub Aendern_Click()
    Dim rs As DAO.Recordset
   
    Set rs = CurrentDb.OpenRecordset("Kontakte")
   
    rs.FindFirst "Vorname= '" & Vorname & "' and Nachname = '" & Nachname & "'"
   
   
    If Not rs.NoMatch Then
        rs.Edit
       
        If Nz(rs![Fax Firma], "") <> Nz(Me.FaxNr, "") Then rs![Fax Firma] = Nz(Me.FaxNr, "")
       
        rs.Update
    End If
   
   
    rs.Close
    Set rs = Nothing
End Sub


Achtung: Der hier verwendet Name entspricht nicht dem, den man z.B. in http://www.msxfaq.de/code/kontaktfelder.htm
findet.

Die Zeilen sollen wie schon zuvor zur Orientierung für eigene Versuche dienen.

Harald