unit mainform;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, Db, ADODB, StdCtrls, ComCtrls, comobj,
activex,variants, ExtCtrls;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
Panel1: TPanel;
Memo1: TMemo;
Button1: TButton;
Memo2: TMemo;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
v1 : variant ;
i1,i2,i3 : integer ;
sl1 : TSTringList ;
begin
if ADOQuery1.Active then ADOQuery1.Close ;
ADOQuery1.Connection := nil ;
ADOQuery1.SQL.Text := Memo1.lines.text ;
ADOQuery1.Connection := ADOConnection1 ;
sl1 := TSTringList.create ;
try
ADOQuery1.Open ;
ADOQuery1.First;
while not ADOQuery1.Eof do
begin
if ADOQuery1.Fields.Count > 0 then
if ADOQuery1.Fields[0] <> nil then
begin
v1 := ADOQuery1.Fields[0].AsVariant ;
i1 := integer(vartype(v1)) ;
case i1 of
varOleStr : sl1.Add(v1) ;
varNull : ;
varSmallint,varInteger : sl1.Add(intToSTr(v1)) ;
$200C :
begin
i3 := VarArrayDimCount(v1) ;
//memo2.Lines.Add(':'+intTostr(i3)) ;
for i2 := VarArrayLowBound(v1,1) to VarArrayHighBound(v1,1) do
sL1.Add(v1[i2]) ;
end
else
memo2.Lines.Add('\$'+intToHex(vartype(v1),4)) ;
end ;
end ;
ADOQuery1.Next;
end;
finally
memo2.clear ;
sl1.Sort ;
memo2.Lines.addStrings (sl1) ;
Label1.caption := intToStr(sl1.count) ;
sl1.free ;
end ;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
memo1.Text := 'SELECT * FROM ''LDAP://ldap.toto.com/ou=People,dc=toto,dc=com''' ;
end;
end.
Partager