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
Hallo,
vielleicht hilft Dir:
.Department = nz(Me.Abteilung,"")
Harald
Super :D hat geklappt (auf die einfachsten Dinge...)
Jetzt benötige ich nur noch die Abfrage, ob der Kontakt bereits vorhanden ist :D
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
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.
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
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
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