Programmieren - alles kontrollieren 4.939 Themen, 20.671 Beiträge

ASP: cn = oRS.Fields("cn") --> Type Mismatch

Yves3 / 5 Antworten / Flachansicht Nickles

Hallo

Ich bin langsam am verzweifeln :(

Ich bekomme immer folgende Meldung:


Response object error 'ASP 0106 : 80020005'

Type Mismatch

user_informationen.asp, line 0

An unhandled data type was encountered.


Hier der Code dazu:


If UCase(Request("Search")) = "TRUE" Then
userid=Request.Form("userid")
If userid"" Then
set oConn = CreateObject("ADODB.Connection")
set oCommand = CreateObject("ADODB.Command")
set oRS = CreateObject("ADODB.Recordset")

oConn.Provider = "ADsDSOObject"
oConn.Properties("User ID") = "cn=deruser,ou=administrators,cn=users,cn=irgendwas"
oConn.Properties("Password") = "******"
oConn.Open "Ads Provider"

set oCommand.ActiveConnection = oConn 'set the active connection
strQuery= "


Die fett markierte Zeile verursacht den Fehler.
Typenkonvertierung mit CString() oder CInt() funktioniert nicht.

Hat jemand eine Idee?


bei Antwort benachrichtigen
Yves3 T-Rex „Das Problem ist: VBScript kennt nur Variant als Datentyp, IIRC ergeht es ASP...“
Optionen

Ich habe jetzt noch eine andere Möglichkeit gefunden.

So kann ich die Eigenschaften des Users ausgeben:


If UCase(Request("Search")) = "TRUE" Then
userid=Request.Form("userid")
If userid"" Then
Response.Write("Userid angegeben")
Set oDSP = GetObject("LDAP:")
Set oUser = oDSP.OpenDSObject("LDAP://SERVER/cn=ZU_SUCHENDER_USER,ou=externals,cn=users,cn=OBERSTE_STUFE","cn=LESEBERECHTIGTER_USER,ou=administrators,cn=users,cn=OBERSTE_STUFE","DAS_PASSWORT ",0)
If Err.Number 0 Then
If Err.Number = "-2147023570" Then
Response.Write("**** ERROR: Authentication failed. Check username, password and search base.")
ElseIf Err.Number = "-2147016646" Then
Response.Write("**** ERROR: LDAP server not found.")
Else
Response.Write("**** ERROR: Unable to bind to LDAP server. " & Err.Number)
End If
End If
Response.Write(oUser.cn)
Else
Response.Write("Bitte eine UserID zum suchen angeben!")
End If
End If


Das Problem ist nur, dass es so keine vordefinierten Funktionen zum Suchen zu geben scheint.
Ich müsste also den Benutzernamen anschauen und gemäss der Namenskonvention in den richtigen OU's schauen, ob der User existiert.
Es gibt aber noch User, deren CommonName in der Form NACHNAME.VORNAME ist. Für diese müsste ich jede ou einzeln überprüfen.

Falls jemand eine bessere Idee hat, ist die willkommen ;)

EDIT: Das funktioniert wunderbar so :)
Ich denke das ist auch performancemässig nich unbedingt schlechter.
Setzte den Thread mal auf gelöst, wenn jemand aber noch etwas interessantes dazu beizusteuern hätte, wäre das natürlich super :)
bei Antwort benachrichtigen