Zum Inhalt springen

VB Script gesucht - Access + AD Anbindung


Enno

Empfohlene Beiträge

Hi,

ich suche ein Script, das mir in MS-Access 2003 eine Tabelle aufbaut.

Diese soll wie folgt aussehen:

Username - Mailadresse

Das soll er für alle SMTP Maialdresse machen die er findet.

Es kann für 1 User auch mehrere Adressen geben. Diese sollen als mehrere Zeilen eingetragen werden in die Tabelle.

Am Anfang de sScripts muss die Tabelle gelöscht werden / geleert werden. Je nachdem wie es einfacher ist. :)

Ach, ich hab keinen blassen Dunst vom Programmieren bzw. VB Programmieren. :)

Danke schonmal für Hilfen oder Anregungen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn mir keiner Hilft muss ich es leider selber lernen ;)


Option Compare Database




Sub test()


    Dim db As DAO.Database ' Verweis DAO

    Dim strSQL As String


    Set db = CurrentDb

    Set objContainer = GetObject("LDAP://OU=EDV,OU=Benutzer,dc=Domainname,dc=de")

    objContainer.Filter = Array("user")

    For Each objUser In objContainer

        strSQL = "INSERT INTO [User] " & _

                        "([Name],[Account],[Mailadresse]) " & _

                 "VALUES ('" & objUser.FullName & "', " & _

                         "'" & objUser.sAMAccountName & "', " & _

                         "'" & objUser.mail & "');"

        db.Execute strSQL, 128 'dbFailOnError

    Next objUser


End Sub

So funktioniert es.

Jetzt steht aber im Tabellenfeld Mailadresse die händisch einzutragende Adresse auf der Hautseite.

Wir haben aber leider bei vielen Usern mehrere Mailadressen als SMTP hinterlegt.

Diese gibts ja eigentlich unter: proxyaddresses ??

Wie kann ich diese nun auslesen das ich am besten für jede Mailadresse einen Eintrag in der Tabelle habe?

Bearbeitet von Enno
Link zu diesem Kommentar
Auf anderen Seiten teilen

wie die auch immer drin stehen ist mir im ersten Schritt egal.

Am einfachsten wäre es für mich wenn eben jede Mailadresse einzeln drinsteht.

wie im ersten post schon geschrieben. ich hab keine wirkliche ahnung von VBS und der CodeSchnipsel oben ist auch nur mit google gefunden. :)

Problem hinter dem ganzen ist:

Wir haben nen DMS in dem alle Mails archiviert werden.

In diesem DMS gibts die Felder: Absender / Empfänger / CC

Hier stehen die Mailadressen der User drin. Allerdings gibt es eben für manche User mehrere Möglichkeiten.

Nun kann das DMS den Zugriff anhand von FeldFiltern regeln.

Wenn nun in einem Feld der Username drinsteht kann ich sagen du hast nur zugriff auf die Mails bei denen dein Username drinsteht.

Ich will nun also per Access die AdressFelder nach allen Mailadresse durchsuchen lassen und per Aktualisierungsabfrage dann im Feld User die entsprechenden Usernamen hinterlegen.

Drum wäre es für mich am einfachsten wenn eben jede Mailadresse auch einen Eintrag in der Tabelle hätte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab gerade kein Access zur Hand. Um für jede Adresse ein eigenes Feld zu bekommen, würde ich erstmal schauen wie viel Adressen ich den max bekommen kann und dann die entsprechende Spaltenzahl fix festlegen (alternative wäre sicherlich irgendwas mit ner dynamischen Tabellenerweiterung, aber da steck' ich auch zu wenig drinne ^^)...

Also Scripttechnisch dann so:


For Each objUser In objContainer

	'Hier beginnst du deinen SQL String zu basteln

	strSQL = "INSERT INTO [User] " & "([Name],[Account],[Mailadresse1],[Mailadresse2],[Mailadresse3],[Mailadresse4]...) " & _

	"VALUES ('" & objUser.FullName & "', " & "'" & objUser.sAMAccountName

	'Hier fügst du sämtliche Mailadressen ein die da  so rumlungern

	for each mailaddress in objUser.proxyaddresses

		strSQL = strSQL  & "', " & "'" & mailaddress

	next

	'Hier schliesst du den SQL String

	strSQL = strSQL & "');"

	'SQLString ausführen

    db.Execute strSQL, 128 'dbFailOnError

Next

Wie gesagt, ich kann's nit testen, aber vlt kannst ja nachvollziehen was ich meine :-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

sollte dann ja auch so mit der Schleife funktionieren:


    Dim db As DAO.Database ' Verweis DAO

    Dim strSQL As String


    Set db = CurrentDb

    Set objContainer = GetObject("LDAP://OU=EDV,OU=Benutzer Sudhoff Ulm,dc=sudhoff-technik,dc=de")

    objContainer.Filter = Array("user")

    For Each objUser In objContainer

        For Each mailaddress In objUser.proxyaddresses

            strSQL = "INSERT INTO [User] " & _

                    "([Name],[Account],[Mailadresse]) " & _

                    "VALUES ('" & objUser.FullName & "', " & _

                    "'" & objUser.sAMAccountName & "', " & _

                    "'" & mailadress & "');"

            db.Execute strSQL, 128 'dbFailOnError

        Next

    Next objUser


Da bekomm ich für die for each ... proxyadresses Zeile die Fehlermeldung: Typen unverträglich?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das "Mailaddress" ist ja im endeffekt nur eine Variable in die er bei jedem Durchlauf der Schleife seine Werte reinschreibt. Versuch sicherheitshalber mal nen andere Namen dafür also dann im schleifenheader statt "Mailaddress" mal "Addy" o.ä. (und natürlich dann auch an der Stelle wo du das ganze in deinen String wirfst)...

Wenn du ganz oben mal ein On Error resume next platzierst und statt der DB eingabe einfach mal ein wscript.echo "Irgendwas" platzierst, was passiert dann?


    Dim db As DAO.Database ' Verweis DAO

    Dim strSQL As String


    Set db = CurrentDb

    Set objContainer = GetObject("LDAP://OU=EDV,OU=Benutzer Sudhoff Ulm,dc=sudhoff-technik,dc=de")

    objContainer.Filter = Array("user")

    For Each objUser In objContainer

        For Each Addy In objUser.proxyaddresses

            strSQL = "INSERT INTO [User] " & _

                    "([Name],[Account],[Mailadresse]) " & _

                    "VALUES ('" & objUser.FullName & "', " & _

                    "'" & objUser.sAMAccountName & "', " & _

                    "'" & Addy & "');"

            'db.Execute strSQL, 128 'dbFailOnError

          wscript.echo strSQL

        Next

    Next objUser

Wäre jetzt zumindest was mir noch einfallen würde....

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...