Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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.

  • Autor

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

Enno, ich schubs dich mal runter zu den Programmiereren, da bist du glaub ich besser aufgehoben.

Grueni, auffangen!

  • Autor

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.

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 :-)

  • Autor

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?

Also wenn du das so schreibst, dann bekommst für JEDE E-Mailadresse eine Zeile mit Benutzername, Accountname usw.usf...

Die Fehlermeldung check ich ansonsten grad selber nicht, bei mir läufts mit der gleichen Syntax ohne Probleme durch :(

  • Autor

Jo so war es ja auch gedacht, jede Mailadresse 1 Zeile in der Tabelle. :)

Ich hab den Verdacht das mailadresses und proxyadresses vom Typ her unverträglich sind.

Aber warum? In proxy.. sollten doch nur Texte drin sein?

Oder hat sonst wer ne Idee wie ich das Problem lösen kann?

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....

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.