AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Active Directory - Abfrage

Ein Thema von Maya · begonnen am 18. Apr 2012 · letzter Beitrag vom 19. Apr 2012
Antwort Antwort
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#1

AW: Active Directory - Abfrage

  Alt 18. Apr 2012, 12:25
Übrigens, ich benutze die ADO-Komponenten für die Query und die Connection.
Status:
- FIAE
- Rechteinhaberin, ein Rüsselmops sein zu wollen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.777 Beiträge
 
Delphi 12 Athens
 
#2

AW: Active Directory - Abfrage

  Alt 18. Apr 2012, 12:31
Versuch's mal mit "/" anstatt "\".
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Active Directory - Abfrage

  Alt 18. Apr 2012, 12:59
Leider klappt das auch nicht. -.-

Mit dem Active Directory Explorer habe ich keine Probleme, mir die ganzen Strukturen und Einträge anzusehen. Also habe ich zumindest Leserechte darauf.
Status:
- FIAE
- Rechteinhaberin, ein Rüsselmops sein zu wollen
  Mit Zitat antworten Zitat
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Active Directory - Abfrage

  Alt 18. Apr 2012, 13:16
Sry für Doppelpost.

Also, maybe habe ich das Problem ein klein wenig eingeschränkt?
Ich hab den Quelltext mal ein wenig abgewandelt.

Delphi-Quellcode:
procedure TForm1.btn2Click(Sender: TObject);
begin
  DataModule2.con1.Close;
  DataModule2.con1.Open;

  Datamodule2.qry1.Close;
  DataModule2.qry1.SQL.Clear;
  datamodule2.qry1.SQL.Add('SELECT TOP 10 (*) FROM ''LDAP:\\DC=****,DC=lan''');
  DataModule2.qry1.Open; //< Wieder knallt es HIER!
  DataModule2.qry1.First;

  while not DataModule2.qry1.Eof do
    begin
      mmo1.Lines.Add(DataModule2.qry1.FieldByName('displayname').AsString);
      DataModule2.qry1.Next;
    end;
end;
Wenn es knallt, dann kommt diesmal aber ein klein wenig anderer Fehler:
Zitat:
Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 004F844B in Modul 'TestADO.exe'."
Status:
- FIAE
- Rechteinhaberin, ein Rüsselmops sein zu wollen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.777 Beiträge
 
Delphi 12 Athens
 
#5

AW: Active Directory - Abfrage

  Alt 18. Apr 2012, 13:45
Delphi-Quellcode:
  datamodule2.qry1.SQL.Add('SELECT TOP 10 (*) FROM ''LDAP:\\DC=****,DC=lan''');
  DataModule2.qry1.Open; //< Wieder knallt es HIER!
Die Syntax für die LDAP-Query lautet nach einem Beispiel von Microsoft so (siehe "//" statt "\\"):

Delphi-Quellcode:
SELECT title, telephoneNumber From 'LDAP://DC=Microsoft, DC=COM' WHERE
objectClass='userAND objectCategory='Person'
Ich würde es erst mal mit einer sehr ähnlichen Select-Anweisung versuchen, um den Fehler einzugrenzen (Vielleicht versteht AD kein "TOP 10").

Ebenso könnte es daran liegen, daß ohne die WHERE-Klausel, keine sinnvollen RecordSets zurückgegeben werden können, da diese eventuell nicht alle die gleichen Felder haben. Es steckt eben keine homogene Tabelle dahinter.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: Active Directory - Abfrage

  Alt 19. Apr 2012, 05:54
Tut mir Leid, dass ich gestern nicht mehr antwortete. Hatte dann dreiviertel vier Feierabend und hatte zu Hause selber einiges zutun.

Wir haben das jetzt soweit gepackt, dass zwar immer noch eine Zugriffsverletzung kommt, wenn ich aber auf "Fortfahren" gehe, zeigt der mir im Memo einiges an Daten an, was danach auch aussieht, was ich haben möchte.
Das Problem liegt da, wie Uwe schon vermutete, dass die AD mit dem "Top 10(*)", geschweige denn überhaupt dem Sternchen zurecht kommt. Man muss scheibar explizit angeben, was für Spalten man haben möchte. Darauf muss erstmal einer kommen.
Ohne WHERE-Klausel habe ich es jetzt noch nicht versucht, da ich mir nicht das Memo sprengen möchte.

Der Quelltext sieht jetzt wie folgt aus:

Delphi-Quellcode:
procedure TForm1.btn2Click(Sender: TObject);
var LastErrorIndex, NativeError, NumberError, i: Integer;
    SourceError, DescriptionError, SQLStateError: string;
begin
  try
    DataModule2.con1.Close;
    DataModule2.con1.Open;

    with DataModule2.qry1 do
      begin
        Close;
        SQL.Text:='SELECT displayName FROM ''LDAP://DC=****,DC=lan'' WHERE objectClass=''user'' AND objectCategory=''Person''';
        Open; //<Hier liegt scheinbar immer noch ein Problem.
        First;
      end;

    mmo1.Lines.Clear;

    while not DataModule2.qry1.Eof do
      begin
        mmo1.Lines.Add(DataModule2.qry1.FieldByName('displayName').AsString);
        DataModule2.qry1.Next;
      end;
  except
    for I := 0 to DataModule2.con1.Errors.Count - 1 do
      begin
        LastErrorIndex:=i;
        SourceError:=DataModule2.con1.Errors.Item[LastErrorIndex].Source;
        NumberError:=DataModule2.con1.Errors.Item[LastErrorIndex].Number;
        DescriptionError:=DataModule2.con1.Errors.Item[LastErrorIndex].Description;
        SQLStateError:=DataModule2.con1.Errors.Item[LastErrorIndex].SQLState;
        NativeError:=DataModule2.con1.Errors.Item[LastErrorIndex].NativeError;
        Showmessage('SourceError: '+ SourceError+#10#13+
                    'NumberError: '+IntToStr(NumberError)+#10#13+
                    'DescriptionError: '+DescriptionError+#10#13+
                    'SQLStateError: '+SQLStateError+#10#13+
                    'NativeError: '+IntToStr(NativeError));
      end;
  end;
end;
Wir hatten diesen Code gefunden, um Fehler abgezufangen und ggf. etwas genauer zu erfahren, wo der Fehler ist. Das hat soweit auch ganz gut geholfen. Aber bei der Zugriffsverletzung handelt sich ja um ein delphiseitiges Problem und weniger bei der AD, oder?
Status:
- FIAE
- Rechteinhaberin, ein Rüsselmops sein zu wollen

Geändert von Maya (19. Apr 2012 um 06:00 Uhr) Grund: Ergänzungen
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Active Directory - Abfrage

  Alt 19. Apr 2012, 08:09
Also '*' sollte schon noch funktionieren. Aber viel mehr nicht, sprich diverse SQL-Funktionen, die man von den üblichen Datenbanken kennt, oder aber komplexere Abfragen funktionieren nicht.

Was die Zugriffsverletzung angeht: Kannst du da nicht mal einen Haltepunkt setzen und sehen, wo genau die passiert, innerhalb des Query.Open passiert ja auch noch was.
Ralph
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#8

AW: Active Directory - Abfrage

  Alt 18. Apr 2012, 13:25
Schau dir mal im Internet nach ADSI und Delphi.
Da gibt es paar super Webseiten zu.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Maya
Maya

Registriert seit: 15. Jun 2011
Ort: Potsdam-Mittelmark
107 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: Active Directory - Abfrage

  Alt 18. Apr 2012, 13:30
Schau dir mal im Internet nach ADSI und Delphi.
Da gibt es paar super Webseiten zu.
Darauf kam ich auch schon, aber hilft mir nicht wirklich weiter bei meinen Problem, außer du findest eine entsprechende Lösung für mich.
Status:
- FIAE
- Rechteinhaberin, ein Rüsselmops sein zu wollen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz