![]() |
AD Hilfe !!
Moin ...
ich habe mir mal nen vorgaenger thread an geguggt >> ![]() analog dazu wollte ich mein vorhaben auch durchziehen. source:
Delphi-Quellcode:
compiler laeuft ohne probleme.
procedure TForm1.Button1Click(Sender: TObject);
var conn,com,rs: variant; sUser,txtUserID,txtDomain: string; strBase, strAttributes, strADS : string; begin conn := CreateOleObject('ADODB.Connection'); com := CreateOleObject('ADODB.Command'); try conn.Provider := 'ADsDSOObject'; conn.open; com.ActiveConnection := conn; txtUserID := Edit1.Text; strBase := '<LDAP://SERVER/>'; strAttributes := 'displayName,description,department,mail,homeDrive,homeDirectory,telephonenumber,rocheLocalCostCenter'; strADS := strBase + ';cn=' + txtUserID + ';' + strAttributes + ';subtree'; com.CommandText := strADS; com.Properties['Page Size'] := 100000; com.Properties['Searchscope'] := 2; com.Properties['Cache Results'] := False; rs := com.Execute; if Not rs.EOF then begin Edit2.Text := txtUserID; Edit3.Text := rs.Fields['displayName'].Value; Edit4.Text := rs.Fields['description'].Value; Edit5.Text := rs.Fields['department'].Value; Edit6.Text := 'bla'; Edit7.Text := rs.Fields['mail'].Value; Edit8.Text := rs.Fields['homeDrive'].Value; Edit9.Text := rs.Fields['homeDirectory'].Value; Edit10.Text := rs.Fields['telephoneNumber'].Value; Edit11.Text := rs.Fields['rocheLocalCostCenter'].Value; end else MessageDlg('Kein Datensatz gefunden.',mtInformation,[mbOK],0); Rs := NULL; finally com := NULL; conn.Close; conn := NULL; end; end; nur beim testen springt mir andauernd nen fehler ins gesicht " Der Befehl enthielt mindestens einen Fehler " irgendwie komm ich nicht dahinter wos klemmt debugger bleibst stehen bei rs := com.Execute; cp zu ![]() |
Re: AD Hilfe !!
Hi,
dann schau dir doch mal die Postings in deinem Link genauer an. Empfehlen würde ich den Code in #13 und achte auf die Filter!!! Nebenbei, was ist denn das für ein Titel? Gruß |
Re: AD Hilfe !!
das was in #13 steht habe ich ja als basis genommen ... mit null erfolg bisher ...
titel ? ehm naja nach der arbeit is man nicht mehr so auf geistiger hoeher : P |
Re: AD Hilfe !!
Herzlich willkommen in der Delphi-PRAXiS, uranop.
Du magst den ursprünglichen Code als Basis verwendet haben, aber beim Filter hast du eine Anpassung vornehmen müssen und prompt gepatzt. Die Syntax für LDAP-Filter ist definiert und muss in deinem Fall so aufgebaut werden:
Delphi-Quellcode:
Die runden Klammern sind Pflicht. Bei manchen Attributwerten musst du auch noch Zeichen maskieren.
// ...
strADS := Format('LDAP://%s;(cn=%s);%s;subtree', [serverName, txtUserID, strAttributes]); // ... Freundliche Grüße |
Re: AD Hilfe !!
Hi,
Zitat:
Ich schrieb das etwas, das nannte sich Filter, diese vermisse ich bei deinem Code:
Delphi-Quellcode:
Sollte es nicht so aussehen:
strBase := '<LDAP://SERVER/>';
strAttributes := 'displayName,description,department,mail,homeDrive,homeDirectory,telephonenumber,rocheLocalCostCenter'; strADS := strBase + ';cn=' + txtUserID + ';' + strAttributes + ';subtree';
Delphi-Quellcode:
Gruß
strFilter := '(&(objectCategory=person)(objectClass=user)(sAMAccountName='+ Edit1.Text +'))';
strAttributes := 'displayName,description,department,mail,homeDrive,homeDirectory,telephonenumber,rocheLocalCostCenter'; strADS := strBase + ';' + strFilter + ';' + strAttributes + ';subtree'; |
Re: AD Hilfe !!
nja die leidige arbeit ...
nimmt derzeit kein ende. aber egal. erstmal vielen dank . das mit den filtern hatte ich vergessen. bzw einfach uebersehen . momentan bin ich soweit das ich eigentlich fast alles auslesen kann. einzigstes problem ist der inhalt des value feldes von description. hier ist rein logischerweise nen string drin z.b. Penzberg-PRCOEEngeneering 123456789 dieser wert laesst sich nicht in einem edit feld anzeigen. ausgegebener fehler: invalid variant type conversion kommt mirspanisch vor. alle felder die es zum auslesen gilt, sind Case Ignore Strings der rest geht ja. auch vartostr hilft nicht weiter. das ist derzeit das letzte verbliebene problem Edit // hier gibts anscheinend so nen universellen var to string converter ![]() jo, das ding also eingebaut , keine fehlermeldung mehr. aber leeres editfeld grmbl |
Re: AD Hilfe !!
Hi,
bist du dir sicher das in 'description' etwas eingetragen ist, es gehört zu den optionalen Werten. Gruß |
Re: AD Hilfe !!
ja bin ich ...
is ueberall was eingetragen auch mit einem ldapbrowser ueberprueft das interessante ist auch das nen vbs script das auch auslesen kann ohne irgendwelche sonderformatierungen |
Re: AD Hilfe !!
Nur zur
![]() Vielleicht hilft ja dies weiter : ![]() Das mit dem vbs-Script ist ja schön, aber meiner Erfahrung nach werden da zuviele Sachen abgenommen die man bei anderen Sprachen dann eben doch braucht. Gruß PS Ich kann ja morgen ma schauen ob es da eine Lösung gibt. Meine 'virtuelle' Domäne ist nählich gerade Down. |
Re: AD Hilfe !!
klasse da waere ich dir aber sehr zu dank verpflichtet !!
//Edit: Hallo alter Mann : P Also inzwischen bin ich dahintergekommen das die description im grunde nichts anderes ist als die zusammensetzung 2 werte der OU strings ( standort und division ) und die employeeID hinten drangehaengt ... ich werde mich nun bissl mit der string suche befassen und das denn so da einbasteln ... nichts desto troz wuerde es mich dennoch brennend interessieren, warum ich den eigentlichen wert der description nicht auslesen kann. |
Re: AD Hilfe !!
Hi,
ich hatte nur kurz Zeit mal ein Blick auf das 'Description'-Feld zu werfen. Es wird als 'Variant-Array of Variant-Array' zurückgegeben. Probiere mal die nachstehende Funktion(ist aus einem anderen Projekt, deshalb ungetestet)
Delphi-Quellcode:
Würde empfehlen beim ersten if ein breakpoint zusetzen und dann durch zusteppen.
function GetArrayContent(FVarObj: Variant): string;
var idx: Integer; RS : String; begin RS := '['; if (VarIsNull(FVarObj)) or (VarArrayHighBound(FVarObj, 1) <= 0) then RS := RS + ']' else begin for idx := 1 to VarArrayHighBound(FVarObj, 1) do RS := RS + VarToStr(FVarObj[idx]) + ', '; end; if Length(RS) > 2 then RS := Copy(RS, 1, Length(RS) - 2) + ']'; Result := RS; end; Gruß |
Re: AD Hilfe !!
Hallo,
so wichtig ist es wohl dann doch nicht? Falls doch, dann aus diesem:
Delphi-Quellcode:
dieses machen:
for idx := 1 to VarArrayHighBound(FVarObj, 1) do
Delphi-Quellcode:
Gruß
for idx := 0 to VarArrayHighBound(FVarObj, 1) do
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 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