Jeg har lavet dette og er interesseret i at få af vide når der er gået 1 måned siden en bruger har været logget ind. "lastlogin" giver mig dette. Første gang "køre" i loopet har jeg ingen problemer med at få af vide, ved hjælp af dette: label8.Caption := datetostr(adusr.LastLogin);,
hvornår en bruger sidst har været logget på, men anden gang fejler den og hopper til ADOQuery1.Close;
Kan ikke sådan lige gennemskue om jeg har glemt et eller andet.
procedure TFrmMain.Button4Click(Sender: TObject);
var i, iDays : integer; adUsr : IADsUser; sDays : string;
begin
memo1.Lines.Clear;
ADOQuery1.Close;
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'SELECT samAccountName, CN FROM '+ Quotedstr('
LDAP://OU=USERS,' + edit2.Text) + ' WHERE objectClass='+ Quotedstr('user') + ' ORDER by CN';
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
ADsGetObject('
LDAP://CN='+ADOQuery1.FieldByName('CN').AsString+',OU=USERS,' + Edit2.Text, IADsUser, adusr);
label8.Caption := datetostr(adusr.LastLogin);
if adusr.AccountDisabled then
begin
sdays := InttoStr(MonthsBetween(Date, ADUsr.LastLogin));
idays := StrToInt(sDays);
if IDays > 0 then
begin
if not renamefile('\\seluws0187\home_dkso\'+ADOQuery1.FieldByName('samAccountName').AsString,'\\seluws0187\home_dkso\_'+ADOQuery1.FieldByName('samAccountName').AsString) then
begin
Memo1.Lines.Add(ADOQuery1.FieldByName('samAccountName').AsString);
end;
end;
end;
ADOQuery1.Next;
end;
finally
ADOQuery1.Close;
label7.Caption := inttostr(memo1.Lines.Count);
end;
end;