Outlook Verteilerliste Problem mit befüllen



  • tagchen,...
    ich habe ein mittelschweres Problem und hoffe ihr könnt mir helfen.
    Folgendes:
    Ich habe nen win-Anwendung geschrieben, welche mir aus einer SQL Datenbank die Mitarbeiterdaten zieht und im Outlook (in einem öffentlichen Ordner) als Visitenkarten darstellt. Soweit funzt das auch.
    Nun wollte ich nach entsprechenden Abhängigkeiten der Daten, Verteilerlisten erstellen. Die Verteilerlisten werden auch erstellt, nur das automatische Befüllen funktioniert NICHT! d.h wenn ich eine while oder for schleife bastel die das befüllen übernehmen soll wird das nicht ausgeführt. wenn ich aber den Befehl zum befüllen separat schreibe funzt es. 😕 😕
    Quelltext:

    Public Sub get_Verteiler()
        For l = 0 To arrRegionalleiter.Length - 1
             set_dist_list(arrRegionalleiter(l), arrRegionalleiterName(l))
        Next l
    End Sub
    
    Public Sub set_dist_list(ByVal region As Integer, ByVal regname As String)
            Dim appOutlookp As Outlook.Application
            Dim oNS As Outlook.NameSpace
            Dim objOrdnerer As Object
            appOutlookp = New Outlook.Application
            Dim objItem As Outlook.DistListItem
            Dim objMail As MailItem
            Dim objRcpnts As Recipients
            Dim objRcpnt1 As Recipient
    
            oNS = appOutlookp.GetNamespace("MAPI")
            objOrdnerer = oNS.Folders("Öffentliche Ordner").Folders("Alle Öffentlichen Ordner").Folders("Mediaberater")
            oNS.Logon()
            objMail = appOutlook.CreateItem(Outlook.OlItemType.olMailItem)
            objRcpnts = objMail.Recipients
    
            'Dim myCommandVerteiler As New SqlCommand("SELECT * FROM mediaberater WHERE mb_regionalleiter_aktuell='" & region & "'", myConnection)
            'myConnection.Open()
            'myReaderVerteiler = myCommandVerteiler.ExecuteReader
            'While myReaderVerteiler.Read
            '    Dim strTest As String
            '    strTest = "<" + myReaderVerteiler("mb_vorname") + " " + myReaderVerteiler("mb_name") + "> " + myReaderVerteiler("mb_email_verlag") + ""
            '    objRcpnt1 = objRcpnts.Add(strTest)
            'End While
    
            ' WENN ICH DEN VERTEILER MIT DER WHILE SCHLEIFE FÜLLEN MÖCHTE, LEGT DER MIR KOMISCHERWEISE NUR DIE LETZTE VERTEILERLISTE AN!
    
            ' DIE FOR SCHLEIFE WIRD ZWAR 3 MAL DURCHLAUFEN, ABER IN DER VERTEILERLISTE STEHEN NUR 2 EMPFÄNGER DRIN!!!
            For n = 0 To 2
                'MsgBox("N ist: " + CStr(n))
                o = o + 1
                'MsgBox("o ist: " + CStr(o))
                objRcpnt1 = objRcpnts.Add("<TESTER " + CStr(o) + "> test1@tzest.de")
                objRcpnt1 = objRcpnts.Add("<TESTER> test2@test.de")
            Next n
    
            objItem = objOrdnerer.Items.Add(Outlook.OlItemType.olDistributionListItem)
            objItem.DLName = "_VG_ " + regname
    
            If objRcpnts.ResolveAll Then
                objItem.AddMembers(objRcpnts)
                objItem.Save()
                ' objItem.Display()
    
            End If
            oNS.Logoff()         ' Log off.
    
            appOutlookp = Nothing
            oNS = Nothing
            objOrdnerer = Nothing
            myConnection.Close()
            objRcpnts = Nothing
            objRcpnt1 = Nothing
            objMail = Nothing
            objItem = Nothing
    
        End Sub
    

    bin mit meinem Latein am Ende!
    hoffe ihr könnt helfen und Danke schonmal!
    THX a lot
    Bart



  • Schon mal nen Debuger benutzt? Das hilft manchmal echt. Außerdem würde ich etwas am Programmierstil arbeiten. Zählervariablen die l bzw o heißen, sind verboten.



  • ich weiß das ich was an meinem Stil ändern muss.
    so zum problem. habs jetzt gelöst:

    zu den Fehlern:
    Die For schleife hat ja richtig gefunzt, aber es wurden nur 2 Einträge in die Verteilerliste geschrieben. Grund dafür war, das es immer die gleichen Emailadressen waren.
    so ist es richtig:

    For n = 0 To 2
         objRcpnt1 = objRcpnts.Add("<TESTER " + CStr(n) + "> test"+Cstr(n)+"@tzest.de")
         objRcpnt1 = objRcpnts.Add("<TESTER> test2@test.de")
    Next n
    

    Das nächste war, dass mir die Verteilerlisten nicht gefüllt wurden.
    das Problem lag an der IF - Schleife mit objRcpnts.ResolveAll

    danke trotzdem
    bart


Anmelden zum Antworten