Outlook kontakte in DGV

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Dksksm.

    Outlook kontakte in DGV

    Hallo zusammen,

    Ist es möglich statt direkt das DGV zu befüllen über eine Bindingsource das DGV zu füllen?
    Da ich die Daten noch Filtern ect. möchte währe dies einfacher.

    VB.NET-Quellcode

    1. Dim p() As Process = Process.GetProcessesByName("Outlook")
    2. If p.Length = 0 Then
    3. Dim ExterneAnwendung As New System.Diagnostics.Process()
    4. ExterneAnwendung.StartInfo.FileName = "outlook.exe"
    5. ExterneAnwendung.Start()
    6. End If
    7. ' Create Outlook application.
    8. Dim oApp As Outlook.Application = New Outlook.Application()
    9. Dim contact As Object
    10. ' Get NameSpace and Logon.
    11. Dim oNS As Outlook.NameSpace = oApp.GetNamespace("mapi")
    12. oNS.Logon("Outlook", Missing.Value, False, True)
    13. Dim oContacts As Outlook.MAPIFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts)
    14. Dim oItems As Outlook.Items = oContacts.Items
    15. Dim oAppt As Outlook.ContactItem = oContacts.Items.GetNext
    16. Dim contactscounter = oContacts.Items.Count
    17. Dim i As Integer
    18. 'For Each Contact In oItems
    19. For Each Contact1 As Outlook.ContactItem In oItems
    20. ' If Contact1.FileAs = "" Then
    21. ' Else
    22. DataGridView1.Rows.Add(Contact1.FileAs, Contact1.FirstName, Contact1.LastName, Contact1.BusinessTelephoneNumber, _
    23. Contact1.MobileTelephoneNumber, Contact1.HomeTelephoneNumber)
    24. ' kontakte.ListBox1.Items.Add( "Contact1.HomeTelephoneNumber & "*" & Contact1.LastName & "=" & Contact1.FirstName & "]")
    25. ' End If
    26. Next
    27. ' Log off.
    28. oNS.Logoff()
    29. ' Clean up.
    30. oApp = Nothing
    31. oNS = Nothing
    32. oItems = Nothing
    33. oAppt = Nothing


    danke
    Dataset, Datatable und Spalten sind Angelegt,

    Nun weis ich nicht wie ich dies:

    VB.NET-Quellcode

    1. DataGridView1.Rows.Add(Contact1.FileAs, Contact1.FirstName, Contact1.LastName, Contact1.BusinessTelephoneNumber, _
    2. 'Contact1.MobileTelephoneNumber, Contact1.HomeTelephoneNumber)


    umschreiben muss damit es in die Datatelle geladen wird.
    Lese Dir die Tutorials von @ErfinderDesRades mal durch. Du wirst da 100% fündig.
    Einstieg vielleicht hier.

    Im Objektkatalog kanst Du Dein eigenes Projekt "browsen" und dort sieh Dir mal an, was Du mit der ...DataTable machen kannst.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dksksm“ ()

    Ich weis das ich das da Nachlesen kann, hast du mir schon gesagt.
    Dataset ist erstellt
    Datatable ist erstellt
    Es ist auch im Form alles vorbereite, jedoch komme ich nicht auf die *** lösung um die Daten einzufüllen.

    Daher währe ich froh wenn mir jemand ein Bsp. geben könnte, da ich es mit einem Bsp. am besten austüfteln und zusammen mit ErfinderdesRades anleitung gut verstehen kann ...
    Habe es so probiert

    VB.NET-Quellcode

    1. Dim NewKontakteRow As DataRow = Kontakt.Tables("kontakte").NewRow()
    2. For Each Contact1 As Outlook.ContactItem In oItems
    3. NewKontakteRow("gespeicher") = Contact1.FileAs
    4. NewKontakteRow("vorname") = Contact1.FirstName
    5. NewKontakteRow("nachname") = Contact1.LastName
    6. NewKontakteRow("business_phone") = Contact1.BusinessTelephoneNumber
    7. NewKontakteRow("mobile_phone") = Contact1.MobileTelephoneNumber
    8. NewKontakteRow("home_phone") = Contact1.HomeTelephoneNumber
    9. ' For Each Contact1 As Outlook.ContactItem In oItems
    10. 'KontakteDataGridView.Rows.Add(Contact1.FileAs, Contact1.FirstName, Contact1.LastName, Contact1.BusinessTelephoneNumber, _
    11. ' Contact1.MobileTelephoneNumber, Contact1.HomeTelephoneNumber)
    12. Next


    funktioniert jedoch auch nicht
    Statt deinen Kommentaren fügst Du jetzt eine Zeile ein, mit der du deiner Datatable die Variable NewKontakteRow hinzufügst (.Add).

    Erklärung zum erstellen einer neuen Zeile:
    Der Vorgang ist etwas verwirrend.
    Du sagst zuerst deiner Datatable "erzeuge eine neue Zeile."
    Und am Ende setzt du diese dann in der Table ein
    Ahh ein kleiner erfolgsschritt, danke,

    VB.NET-Quellcode

    1. For Each Contact1 As Outlook.ContactItem In oItems
    2. NewKontakteRow("gespeicher") = Contact1.FileAs
    3. NewKontakteRow("vorname") = Contact1.FirstName
    4. NewKontakteRow("nachname") = Contact1.LastName
    5. NewKontakteRow("business_phone") = Contact1.BusinessTelephoneNumber
    6. NewKontakteRow("mobile_phone") = Contact1.MobileTelephoneNumber
    7. NewKontakteRow("home_phone") = Contact1.HomeTelephoneNumber
    8. Kontakt.Kontakte.AddKontakteRow(NewKontakteRow)
    9. Next


    Jedoch funktioniert die schlaufe nicht. :s

    schnibli schrieb:

    Habe es so probiert

    VB.NET-Quellcode

    1. Dim NewKontakteRow As DataRow = Kontakt.Tables("kontakte").NewRow()


    Ich programmiere nicht in VB sondern in C#, das ist aber im Grunde egal. Du hast Dir sicher nicht wirklich die ganzen Erklärungen und Beispiele vom ERD angesehen. Allerings fehlt mir die Fähigkeit das alles so zu beschrieben wie ERD das macht und kann.
    Du solltest unbedingt den Objektkatalog verwenden, selbst dazu gibt es eine Beschreibung vom ERD. Du machst nämlich schon mit der Zeile hier den ersten schweren Fehler, in dem Du die Tabelle nicht typisiert ansprichst.
    Als erstes brauchst Du auf deiner Form mal das Dataset selbst (Werkzeugkasten / Daten / Dataset / typisiert: Der Name deines erstellten Datasets. Wenn Du den Namen belassen hast beim erstellen ist es DataSet1.

    Zum Importieren benötigtst Du in etwa so etwas:

    VB.NET-Quellcode

    1. Private Sub Import()
    2. For Each Contact1 As Outlook.ContactItem In oItems
    3. Dim newKontaktRow = DataSet1.Kontakt.NewKontaktRow
    4. newKontaktRow.Name = Contact1.Name
    5. newKontaktRow.Vorname = Contact1.Vorname
    6. ...
    7. DataSet11.Kontakt.Rows.Add(newKontaktRow)
    8. Next
    9. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dksksm“ ()