Måske, men næppe. Prøv at sætte "self." foran alle linjerne. Det burde eliminere forkerte referencer. Det lyder meget underligt at du kan lave en "Clear", men ikke tilgå en Text"-property i SQL-listen.
procedure TDeleteForm.FormCreate(Sender: TObject);
begin
self.ADOQuery1.Connection := MainForm.ADOConnection2;
assert(assigned(self.ADOQuery1)); // En god lille tjek
assert(assigned(self.ADOQuery1.SQL)); // En god lille tjek
ComboBox1.Clear;
self.ADOQuery1.SQL.Clear;
self.ADOQuery1.SQL.Text := 'SELECT NAME FROM '+ Quotedstr('
LDAP://OU=users,OU=so,OU=dk,OU=domain,DC=AD,DC=DOMAIN,DC=ORG')+ ' WHERE objectClass='+ Quotedstr('user') + ' ORDER by NAME';
self.ADOQuery1.Open;
try
while not self.ADOQuery1.Eof do
begin
ComboBox1.Items.Add(self.ADOQuery1.FieldByName('NAME').AsString);
self.ADOQuery1.Next;
end;
finally
self.ADOQuery1.Close;
end;
DateTimePicker2.Date := date;
end;
Næste forsøg kan være at oprette Query'en lokalt. Under alle omstændigheder burde det egentlig være den rette implementering i stedet for at referere til en fælles gummi-query (noget jeg ikke vil se i mine programmer). Jeg tror denne løsning vil virke:
procedure TDeleteForm.FormCreate(Sender: TObject);
var
Query: TADOQuery;
begin
Query := TADOQuery.Create(nil);
try
Query.Connection := MainForm.ADOConnection2;
assert(assigned(Query)); // Et ditto godt lille tjek
assert(assigned(Query.SQL)); // En god lille tjek
Query.SQL.Clear;
Query.SQL.Text := 'SELECT NAME FROM '+ Quotedstr('
LDAP://OU=users,OU=so,OU=dk,OU=domain,DC=AD,DC=DOMAIN,DC=ORG')+ ' WHERE objectClass='+ Quotedstr('user') + ' ORDER by NAME';
Query.Open;
ComboBox1.Clear;
while not Query.Eof do
begin
ComboBox1.Items.Add(Query.FieldByName('NAME').AsString);
Query.Next;
end;
DateTimePicker2.Date := Date;
finally
Query.Free;
end;
end;