Einzelnen Beitrag anzeigen

Benutzerbild von Maya
Maya

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

AW: Active Directory - Abfrage

  Alt 19. Apr 2012, 09:48
Das verstehe ich nicht, der Text wird doch hier
Delphi-Quellcode:
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;
übergeben also was machst Du da?
Wenn ich die SQL-Abfrage direkt in die Query schon zur Designzeit eingebe und im Quelltext die Zuweisung auskommentiere, erscheint die Zugriffsverletzung nicht. Das meinte ich damit, habe mich vielleicht unglücklich ausgedrückt. Ohne "WITH" habe ich es auch schon ausprobiert, da ich auch schon überlegte, ob das nicht ggf. eine Sache sein könnte, die ADO nicht so mag. Ergebnis war aber das gleiche.

Ich habe beim etwas genaueren googeln den Beitrag hier gefunden: http://www.delphipraxis.net/84463-ad...erletzung.html und sind jetzt am Überlegen, ob wir nicht gleich das auch so machen, dass wir die Query dynamisch erstellen.

Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var ConString: String;
    LastErrorIndex, NativeError, NumberError, i: Integer;
    SourceError, DescriptionError, SQLStateError: string;
begin
  ConString:='Provider=ADsDSOObject;Encrypt Password=False;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648';

  try
    qry2:=TADOQuery.Create(nil);
    qry2.SQL.Text:=' SELECT displayName '+
                   ' FROM ''LDAP://DC=****,DC=lan'' '+
                   ' WHERE objectClass=''user'' '+
                   ' AND objectCategory=''Person'' ';
    qry2.Active:=False;
    qry2.ConnectionString:=ConString;
    qry2.Active:=True;
    qry2.First;

    mmo1.Lines.Clear;
    while not qry2.Eof do
      begin
        mmo1.Lines.Add(qry2.FieldByName('displayName').AsString);
        qry2.Next;
      end;
  except
    for I := 0 to qry2.Connection.Errors.Count - 1 do
      begin
        LastErrorIndex:=i;
        SourceError:=qry2.Connection.Errors.Item[LastErrorIndex].Source;
        NumberError:=qry2.Connection.Errors.Item[LastErrorIndex].Number;
        DescriptionError:=qry2.Connection.Errors.Item[LastErrorIndex].Description;
        SQLStateError:=qry2.Connection.Errors.Item[LastErrorIndex].SQLState;
        NativeError:=qry2.Connection.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;
    qry2.Free;
  end;
Ich habe auch versucht, bei der Query, die ich zur Designzeit erstelle, direkt den ConnectionString einzugeben, aber hat keine positiven Ergebnisse.

Wenn noch jmd. einen Lösungsansatz hat, wäre ich dem sehr dankbar.


Vielleicht hakts am Doppelpunkt?
Mal ParamCheck abschalten=?
Welcher Doppelpunkt?
Status:
- FIAE
- Rechteinhaberin, ein Rüsselmops sein zu wollen
  Mit Zitat antworten Zitat