Thema Datum  Von Nutzer Rating
Antwort
Rot Leeres Array/Variant abfangen
19.07.2016 08:35:14 Jan
NotSolved
19.07.2016 16:34:15 Gast98834
NotSolved

Ansicht des Beitrags:
Von:
Jan
Datum:
19.07.2016 08:35:14
Views:
1098
Rating: Antwort:
  Ja
Thema:
Leeres Array/Variant abfangen

Guten Morgen zusammen,

 

ich habe ein kleines Problem bei dem ich auf Hilfe angewiesen bin. Ich versuche über Outlook eine AD-Benutzer suche zu realisieren. Der Benutzer gibt einen Benutzernamen ein und das Script soll einige Informationen zurück liefern. Sucht der Benutzer nach einem existierenden Benutzernamen, funktioniert das Script. Sucht er nach einem nicht existenten liefert das ganze aufgrund eines nicht ausgefüllten Array einen Fehler und genau das möchte ich verhindern.

Laut Überwachung ist die, für die Rückgabe vorgesehenen, Variable zu Fehlerzeitpunkt vom Typ Variant/Variant(). Was ich bisher versucht habe:

If IsEmpty(Database) Then MsgBox "Test" -> Keine Auslösung
If IsNull(Database) Then MsgBox "Test"  -> Keine Auslösung
If IsMissing(Database) Then MsgBox "test"  -> Keine Auslösung
If Not (Not Database) Then MsgBox "Test"  -> Keine Auslösung
If Database = "" Then MsgBox "Test"  -> Typen Unverträglich
If Database = 0 Then MsgBox "Test"  -> Typen Unverträglich
If Database is Nothing Then MsgBox "Test"  -> Typen Unverträglich

 

Code der die Variable (Datenbank) befüllen sollte:

Public Database()
Public ADPath As String
Public ADName As String

Public Function OrgaRead(ObjectTyp As String, Deep As String, Optional ADFeld As String, Optional What As String, Optional Root As Boolean)

    ' ObjectTyp = Was wird gesucht. User, Group, OrgUnit
    ' Deep = Wie tief soll gesucht werden
    ' ADFeld = In Welchen AD Feld soll gesucht werden
    ' What = Was wird übergeben. Mehrere Objekte mit ";" trennen
    ' Root = Boolean. Soll ab der Root Ebene gesucht werden
    
    Erase Database
    If ADFeld = "" Then ADFeld = "name"
    If What = "" Then What = "name"
    If ADName = "" Then ADName = "*"

    Set objRootDSE = GetObject("LDAP://RootDSE")
    strDNSDomain = objRootDSE.Get("defaultNamingContext")
    
    If Root = False Then
        strBase = "<LDAP://" & ADPath & "OU=BA," & strDNSDomain & ">"
    Else
        strBase = "<LDAP://" & strDNSDomain & ">"
    End If
    
    Set adoCommand = CreateObject("ADODB.Command")
    Set ADOConnection = CreateObject("ADODB.Connection")
    ADOConnection.Provider = "ADsDSOObject"
    ADOConnection.Open "Active Directory Provider"
    adoCommand.ActiveConnection = ADOConnection
    
    strFilter = "(&(objectClass=" & ObjectTyp & ")(" & ADFeld & "=" & ADName & "));" & What & ";" & Deep
    strQuery = strBase & ";" & strFilter
    adoCommand.CommandText = strQuery
    adoCommand.Properties("Page Size") = 1000
    adoCommand.Properties("Timeout") = 30
    adoCommand.Properties("Cache Results") = False
    adoCommand.Properties("Sort on") = ADFeld

    Set adoRecordset = adoCommand.Execute
    If Not adoRecordset.BOF Then Database = adoRecordset.GetRows

    'Database = adoRecordset.GetRows

End Function

Code der nicht funktioniert:

Public Sub Suche()

    OrgaRead cb_searchobject.Column(1), "subtree", cb_searchobject.Column(0), cb_searchobject.Column(2), True

    If IsEmpty(Database) Then Exit Sub
    If IsNull(Database) Then Exit Sub    
    If IsMissing(Database) Then Exit Sub
    If Not (Not Database) Then Exit Sub
    If Database = "" Then Exit Sub
    If Database Is Nothing Then Exit Sub
        
    
    lbl_search.Caption = UBound(Database, 2) + 1 & " Ergebniss/e"
    
    For I = 0 To UBound(Database, 2)
        If IsNull(Database(2, I)) Then Database(2, I) = ""
        lb_search.AddItem
        lb_search.Column(0, I) = Database(0, I)
        lb_search.Column(1, I) = Database(1, I)
        lb_search.Column(2, I) = Database(2, I)
    Next

End Sub

 

Vielen Dank schon mal und viele Grüße

Jan
 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Leeres Array/Variant abfangen
19.07.2016 08:35:14 Jan
NotSolved
19.07.2016 16:34:15 Gast98834
NotSolved