Consulta SQL por Data em ADO

Coloque o componente SQL que está na guia ADO chamado adoQuery (fica ao lado do adotable) e altere as propriedades:
Name: adoqryDespesa
ConnectionString: Faça a conexão com o banco de dados Despesa
SQL: Clique no botão ao lado e digite: Select * From Despesa where data between :datainicial and :datafinal
Observação:
- Select * From Despesa --> faz a sele&ção dos registros de todos os campos (* - asterisco quer dizer todos) da tabela despesa
- where data between :datainicial and :dattafinal -->onde o campo data estiver no intervalo entre as datas
Parameters: Clique no botão ao lado e na janela que abriu, e crie dois parâmetros: datainicial e datafinal. Selecione datainicial e na propriedade DataType coloque ftDate. Faça isso também para o datafinal.

Coloque o componente DataSource da guia Data Access, e altere as propriedades:
Name: dsDespesa
DataSet: adoqryDespesa

Coloque o componente DBGrid da guia Data Controls , e altere as propriedades:
Name: grdDespesa
DataSource: dsDespesa

Codificando o botão Pesquisar
if mskDataInicial.Text = '' then
begin
Application.MessageBox('Informe a Data Inicial','Data',mb_IconInformation);
mskDataInicial.SetFocus;
exit;
end;
if mskDataFinal.Text = '' then
begin
Application.MessageBox('Informe a Data Final','Data',mb_IconInformation);
mskDataFinal.SetFocus;
exit;
end;
adoqryDespesa.Close;
adoqryDespesa.Parameters.ParamByName('datainicial').Value :=
strTodate(mskDataInicial.Text);
adoqryDespesa.Parameters.ParamByName('datafinal').Value :=
strTodate(mskDataFinal.Text);
adoqryDespesa.Open;
Observação: Na segunda linha, é convertida a data digitada no maskedit (strTodate) sendo passada para o parâmetro datainicial.

Codificando o botão Sair
Close;

No evento onShow, digite o código:
mskDataInicial.Text :='';
mskDataFinal.Text :='';

No evento onClose, digite o código:
adoqryDespesa.Close;