Si potrebbe ottimizzare il tutto scrivendo qualcosa di simile:
codice:
if Query.Active then
Query.Close;
Query.SQL.Text := 'SELECT * FROM nometabella WHERE (USERNAME = :USERNAME) AND (PASSWORD = :PASSWORD)';
Query.ParamByName('USERNAME').AsString := UserNameEdit.Text;
Query.ParamByName('PASSWORD').AsString := PasswordEdit.Text;
Query.Open;
UserFound := not Query.Eof;
Query.Close;
La query viene chiusa, se necessario; si imposta il testo SQL includendo i parametri che verranno assegnati subito dopo; si provvede ad aprire (eseguire) la query e, nel caso siano presenti record, si imposta l'apposito "flag" e si conclude con la chiusura della query.
In realtà, avrebbe più senso eseguire un conteggio dei record piuttosto che selezionare tutti i campi e verificare se la tabella contiene record (che potrebbero essere molti e non sono necessari).
Ciao!