tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
1431
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Slater345 Slater345 ist offline Mitglied
    Registriert seit
    Sep 2007
    Ort
    Süd-Niedersachsen
    Beiträge
    18
    Hallo,

    ich habe folgenden Code(ausschnitt):
    Code :
    1
    
    oCmd.CommandText = "SELECT department, extensionAttribute8, givenName, distinguishedName, sn FROM 'LDAP://server/dc=firmenkürzel,dc=local' WHERE objectClass='user' AND (department = '"& Abteilung &"' or '"& (InStr(1, distinguishedName, Abteilung) > 0)&"' = 'Wahr') ORDER BY sn"

    Die Variable Abteilung lege ich entsprechend vorher fest.

    Soweit funktioniert es auch im gesamten, allerdings habe ich das Problem, dass das Script im Bereich '"& (InStr(1, distinguishedName, "OU-Name,") > 0)&"' = 'Wahr' nicht ganz das macht was es soll. Statt durch die Schleife bei den einzelnen Benutzern zu gucken, ob denn "OU-Name," in der OU vorkommt, nimmt es scheinbar irgendwie einen zufälligen Benutzer und nimmt es dann komplett.

    Nehm ich das department = '"& Abteilung &"' or raus, dann zeigt er immer "Falsch" an und gibt keinerlei Einträge aus.
    Dagegen mit diesem Teil gibt er das richtige aus, was raus kommen soll.
    Wenn ich dann bei der Ausgabe obige Zeile (InStr....) einfüge, dann zeigt er auch richtig an, ob es "True" oder "False" ist, was er allerdings bereits eigentlich im SQL-Statement prüfen sollte...

    Jemand eine Idee?
    Grüße
    Geändert von Slater345 (10.07.08 um 08:24 Uhr)
     

  2. #2
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hi

    welche Datenbank?
    Welche Werte befinden sich in der Spalte "OU-Name", dass Du den instr() verwenden musst?

    Was ist Abteilung? In Bezug auf Dempartment wird der Wert aus einer Variablen gelesen, in der Funktion instr() nicht.
     
    liebe Grüße, die Luzie

  3. #3
    Slater345 Slater345 ist offline Mitglied
    Registriert seit
    Sep 2007
    Ort
    Süd-Niedersachsen
    Beiträge
    18
    Vom Prinzip her liest es die Daten direkt aus dem AD (über LDAP), kann allerdings SQL-Befehle nutzen (von daher wohl an SQL angelehnt).

    In "OU-Name" bzw. nun "Abteilung" (also "OU-Name" = Abteilung) befindet sich das Kürzel der Abteilung (als Beispiel "IT"), ich benutze InStr, weil in der Variablen "distinguishedName" ist eine lange Zeichenkette enthalten, die den kompletten OU-Pfad des Nutzers angibt (z.B. CN=Benutzername,OU=Abteilungsname,OU=Bereichsname, .......) und ich will über InStr gucken, ob der Abteilungsname in dieser Zeichenkette vorhanden ist (und wenn dem so ist, soll er den Benutzer mit in die Übersicht packen).
    Grüße
     

  4. #4
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hallo

    ich würde das jetzt von der SQL mal so aufbauen (sofern nun Abteilung die Variable ist)

    Code :
    1
    2
    3
    
    oCmd.CommandText = "SELECT department, extensionAttribute8, givenName, distinguishedName, " & _
                "sn FROM 'LDAP://server/dc=firmenkürzel,dc=local' WHERE objectClass='user' " & _
                "AND (department = '"& Abteilung &"' or InStr(1, distinguishedName,'" & Abteilung & "') > 0) ORDER BY sn"
     
    liebe Grüße, die Luzie

  5. #5
    Slater345 Slater345 ist offline Mitglied
    Registriert seit
    Sep 2007
    Ort
    Süd-Niedersachsen
    Beiträge
    18
    InStr nimmt er so scheinbar nicht (denke, weil es, glaube ich, ja eine ASP-Funktion ist und keine SQL), will das zumindest nicht ausführen (natürlich angepasst).

    Wär also:
    Code :
    1
    
    '"& InStr(1, &"'distinguishedName'"&, Abteilung)&"' > 0)
    Allerdings kommt da dann falsche Syntax als Fehler, bei dem & nach der 1,

    Wenn ich Dich richtig verstanden habe, müsste "distinguishedName" wieder aus dem ASP-Teil raus, da es ja wieder zu SQL gehören müsste (wie bei "department").
    Ich probier mal damit etwas rum.
    Grüße
    Geändert von Slater345 (14.07.08 um 13:34 Uhr)
     

  6. #6
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hallo

    instr() ist natürlich keine Standard-SQL-Funktion. In mySQL funktioniert diese meines Wissens nicht. Aber Access z.B. kann diese innerhalb der SQL auch im Programm Access innerhalb des SQL-Statementsr problemlos umsetzen.

    Aber wir sind ja hier im ASP Forum (Klassik) und instr() ist auch eine VB-Funktion.

    Dein Scirptcode (der zuletzt gepostet) kann nicht stimmen, da distinguishedName ja ein Spaltenname ist. Dieser darf in der SQL-Syntax nicht als Variable ausgegeben werden. Auch schon aus dem Grunde nicht, das instr() als 2. Attribut die durchsuchte Spalte und als 3. Attribut den Suchbegriff fordert. http://www.devguru.com/technologies/vbscript/13934.asp
     
    liebe Grüße, die Luzie

  7. #7
    Slater345 Slater345 ist offline Mitglied
    Registriert seit
    Sep 2007
    Ort
    Süd-Niedersachsen
    Beiträge
    18
    Na ja, direkt Access Datenbanken nutzen wir an anderen Stellen, am meisten bzgl. solchen Scripten eben (my)SQL bzw. lassen es über das AD laufen (z.B. Login).
    Ist es also nicht möglich direkt im WHERE-Bereich nach dem "String" (in "Abteilung") über InStr zu fragen?
    Zumindest wenn ich es bei den Zeilen direkt bei den Namen ausgeben lasse, klappt es so, wie gedacht.
    Und bzgl. Forum, das ganze geht ja (leider) meist schwankend über relationale Datenbanken und ASP (würd zwar gern ASP.net nutzen, allerdings läuft es bei uns irgendwie nicht, obwohl alles so eingestellt sein sollte und die Seiten zum testen direkt aus dem entsprechenden Codebook stammen und die ja richtig sein dürften).
    Grüße
     

  8. #8
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    sorry,

    instr() ist die funktionierende Funktion. Allerdings kenne ich ich in Bezug auf LDAP nicht aus.

    Versuch es mit dem Operator like und Wildcards.

    ..were feld like '%" & variable & "%'
     
    liebe Grüße, die Luzie

  9. #9
    Slater345 Slater345 ist offline Mitglied
    Registriert seit
    Sep 2007
    Ort
    Süd-Niedersachsen
    Beiträge
    18
    Hm.. wenn ich es mit z.B.:
    Code :
    1
    
    oCmd.CommandText = "SELECT department, extensionAttribute8, givenName, distinguishedName, sn FROM 'LDAP://server/dc=firmenkürzel,dc=local' WHERE objectClass='user' AND distinguishedName LIKE '%"& Abteilung &"%'  ORDER BY sn
    probiere, kommt folgender Fehler:

    Code :
    1
    2
    3
    
    Provider Fehler "80040e14' 
     
    Der Befehl enthielt mindestens einen Fehler.

    und in der entsprechenden Zeile steht:

    Code :
    1
    
    Set oRecordSet = oCmd.Execute
    Grüße
     

  10. #10
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
     
    liebe Grüße, die Luzie

  11. #11
    Slater345 Slater345 ist offline Mitglied
    Registriert seit
    Sep 2007
    Ort
    Süd-Niedersachsen
    Beiträge
    18
    Spontan sah ich den Fehler leider nicht, weiß aber, dass das Statement ohne
    Code :
    1
    
    AND distinguishedName LIKE '%"& Abteilung &"%'
    funktioniert. Hab auch schon verschiedene Variationen probiert.

    Werd es aber morgen mal noch genauer unter die Lupe nehmen (weiß ja nicht, ob es sich mit LIKE vielleicht nicht verträgt bzw. auskommt hier, auch wenn wir es bei Datenbanken selbst direkt nutzen).
    Grüße
     

Ähnliche Themen

  1. SQL Abfrage Problem
    Von pjaehne im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 16.10.09, 15:56
  2. Problem mit WHERE Abfrage und %
    Von Xandramat im Forum PHP
    Antworten: 7
    Letzter Beitrag: 30.04.09, 21:24
  3. SQL-Abfrage - Problem
    Von philipp p im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 10.06.08, 19:58
  4. Problem mit DB Abfrage
    Von newwarrior im Forum PHP
    Antworten: 1
    Letzter Beitrag: 11.07.05, 15:05
  5. Problem bei JSP mit DB-Abfrage
    Von ingo preuss im Forum Java
    Antworten: 5
    Letzter Beitrag: 03.06.05, 11:34