Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi AD Hilfe !! (https://www.delphipraxis.net/119718-ad-hilfe.html)

uranop 30. Aug 2008 14:30


AD Hilfe !!
 
Moin ...
ich habe mir mal nen vorgaenger thread an geguggt
>> http://www.delphipraxis.net/internal...t.php?p=866363

analog dazu wollte ich mein vorhaben auch durchziehen.

source:

Delphi-Quellcode:
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;
compiler laeuft ohne probleme.
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 http://www.delphi-forum.de/viewtopic.php?p=521019

Alter Mann 31. Aug 2008 10:30

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ß

uranop 31. Aug 2008 13:48

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

marabu 31. Aug 2008 14:44

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:
// ...
strADS := Format('LDAP://%s;(cn=%s);%s;subtree', [serverName, txtUserID, strAttributes]);
// ...
Die runden Klammern sind Pflicht. Bei manchen Attributwerten musst du auch noch Zeichen maskieren.

Freundliche Grüße

Alter Mann 31. Aug 2008 14:46

Re: AD Hilfe !!
 
Hi,

Zitat:

ehm naja nach der arbeit is man nicht mehr so auf geistiger hoehe
Warst wohl heut auch arbeiten?

Ich schrieb das etwas, das nannte sich Filter, diese vermisse ich bei deinem Code:
Delphi-Quellcode:
strBase := '<LDAP://SERVER/>';
strAttributes := 'displayName,description,department,mail,homeDrive,homeDirectory,telephonenumber,rocheLocalCostCenter';
strADS := strBase + ';cn=' + txtUserID + ';' + strAttributes + ';subtree';
Sollte es nicht so aussehen:
Delphi-Quellcode:
strFilter := '(&(objectCategory=person)(objectClass=user)(sAMAccountName='+ Edit1.Text +'))';
strAttributes := 'displayName,description,department,mail,homeDrive,homeDirectory,telephonenumber,rocheLocalCostCenter';
strADS := strBase + ';' + strFilter + ';' + strAttributes + ';subtree';
Gruß

uranop 31. Aug 2008 15:04

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
http://www.delphi3000.com/articles/article_1540.asp?SK=

jo, das ding also eingebaut , keine fehlermeldung mehr. aber leeres editfeld grmbl

Alter Mann 31. Aug 2008 16:37

Re: AD Hilfe !!
 
Hi,

bist du dir sicher das in 'description' etwas eingetragen ist, es gehört zu den optionalen Werten.

Gruß

uranop 31. Aug 2008 16:41

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

Alter Mann 31. Aug 2008 16:52

Re: AD Hilfe !!
 
Nur zur Information.

Vielleicht hilft ja dies weiter : 1.3.6.1.4.1.1466.115.121.1.15.

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.

uranop 31. Aug 2008 17:02

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 Uhr.
Seite 1 von 2  1 2      

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