Query_ceps.Close;
Query_ceps.SQL.Add('select * from ENDERECO');
Query_ceps.SQL.Add('where upper(ENDERECO_LOGRADOURO) like' + quotedstr(Edit_buscar_por.Text + '%') + 'order by ENDERECO_LOGRADOURO');
Query_ceps.Open;
Bom Carlos, o que pode ser feito é da seguinte forma, o que não acho que é uma forma muito legal, mas acho que irá resolver seu problema :
SELECT A.LOGRADOURO , B.TOTAL
FROM(SELECT E.ENDERECO_LOGRADOURO AS LOGRADOURO
FROM ENDERECO E
WHERE E.ENDERECO_LOGRADOURO LIKE '%S%') A,
(SELECT COUNT(*) AS TOTAL
FROM ENDERECO N
WHERE N.ENDERECO_LOGRADOURO LIKE '%S%') B
Esse sql acima, vai retorna uma coluna com o logradouro e outra coluna com o total de registros, mas na minha opinião usaria o RecordCount da Query.
Espero ter ajudado.
Eliel G. Martins

cWhere := 'from ENDERECO where upper(ENDERECO_LOGRADOURO) like ' + quotedstr(Edit_buscar_por.Text + '%');
if Query_Aux.Active then Query_Aux.Close;
Query_Aux.SQL.Clear;
Query_Aux.SQL.Add('select count(*) Total '+cWhere);
Query_Aux.Open;
Lbl_registros.Caption := Query_Aux.FieldByName('Total').AsString;
Query_Aux.Close;
Query_ceps.Close; // fecha
Query_ceps.SQL.Clear; // depois limpa a isntrução
Query_ceps.SQL.Add('select *, (select count(*) '+cWhere+') QTDREG');
Query_ceps.SQL.Add(cWhere + ' order by ENDERECO_LOGRADOURO');
Query_ceps.Open;
ou pode alterar sua instrução de modo a ter uma subselect (nesse caso o campo TOTAL não deve ser exibido na grade):
cWhere := 'from ENDERECO where upper(ENDERECO_LOGRADOURO) like ' + quotedstr(Edit_buscar_por.Text + '%');
Query_ceps.Close;
Query_ceps.SQL.Clear;
Query_ceps.SQL.Add('select *, (select count(*) TOTAL '+cWhere+') TOTAL');
Query_ceps.SQL.Add(cWhere + ' order by ENDERECO_LOGRADOURO');
Query_ceps.Open;
Lbl_registros.Caption := Query_ceps.FieldByName('TOTAL').AsString;
Obrigado aos amigo Eliel Martins e Emerson por responder o meu topico me ajudando.
Bom Eliel Martins eu usei o seu exemplo na minha query (exemplo abaixo), ele não da erro nada, porem ele só me retorna a quantidade dos registros pesquisados, mais não me mostra no DBGrid os endereços pesquisados.
Query_ceps.SQL.Clear;
Query_ceps.Close;
Query_ceps.SQL.Add('SELECT A.LOGRADOURO , B.TOTAL FROM(SELECT E.ENDERECO_LOGRADOURO AS LOGRADOURO');
Query_ceps.SQL.Add('FROM ENDERECO E');
Query_ceps.SQL.Add('WHERE E.ENDERECO_LOGRADOURO LIKE ' + quotedstr('%' + Edit_buscar_por.Text + '%') + ') A, (SELECT COUNT(*) AS TOTAL');
Query_ceps.SQL.Add('FROM ENDERECO N WHERE N.ENDERECO_LOGRADOURO LIKE ' + quotedstr('%' + Edit_buscar_por.Text + '%') + ') B');
Query_ceps.Open;
Lbl_registros.Caption:=Query_ceps.FieldByName('Total').AsString;
Eu até usava o RecordCount mais como eu disse por a tabela ter muitos registros (quase 700.000) ele chega a travar até concluir a pesquisa.
Eu usava esse comando abaixo tbm além do RecordCount, não sei se vcs já virão, ele da certo em tabelas com poucos registros mais em tabelas grandes ele tbm trava até finalizar a pesquisa:
Query_ceps.SQL.Clear;
Query_ceps.Close;
Query_ceps.SQL.Add('select * from ENDERECO');
Query_ceps.SQL.Add('where upper(ENDERECO_LOGRADOURO) like' + quotedstr('%' + Edit_buscar_por.Text + '%') + 'order by ENDERECO_LOGRADOURO');
Query_ceps.Open;
registros_encontrados:=0;
Query_ceps.DisableControls;
try
while not Query_ceps.Eof do
begin
registros_encontrados:=registros_encontrados + 1;
Query_ceps.Next;
end;
finally
Query_ceps.EnableControls;
Lbl_registros.Caption:='';
Lbl_registros.Caption:=IntToStr(registros_encontrados);
end;
OBS: A variavel "registros_encontrados" é do tipo INTEGER
Query_aux.Close;
Query_aux.SQL.Clear;
Query_aux.SQL.Add('select count(*) Total ' + cwhere);
Query_aux.Open;
Lbl_registros.Caption:=Query_ceps.FieldByName('Total').AsString; // << Debugando o erro está aqui
Query_aux.Close;
Query_ceps.SQL.Clear;
Query_ceps.SQL.Add('select *, (select count(*) ' + cwhere + ') QTDREG');
Query_ceps.SQL.Add(cwhere + 'order by ENDERECO_LOGRADOURO');
Query_ceps.Open;

Query_ceps.SQL.Clear;
Query_ceps.SQL.Add('select *, (select count(*) Total ' + cwhere + ') Total');
Query_ceps.SQL.Add(cwhere + ' order by ENDERECO_LOGRADOURO');
Query_ceps.Open;

Desculpa minha ignorancia Emereson, o "cwhere" é uma variaval String.
Query_aux.Close;
Query_aux.SQL.Clear;
Query_aux.SQL.Add('select count(*) Total ' + cwhere);
Query_aux.Open;
Lbl_registros.Caption:=Query_ceps.FieldByName('Total').AsString; // << Debugando o erro está aqui
Query_aux.Close;
Query_ceps.SQL.Clear;
Query_ceps.SQL.Add('select *, (select count(*) ' + cwhere + ') TOTAL');
Query_ceps.SQL.Add(cwhere + 'order by ENDERECO_LOGRADOURO');
Query_ceps.Open;

----------------------------------------------------------------
Query_ceps.SQL.Clear;
Query_ceps.SQL.Add('select *, (select count(*) Total ' + cwhere + ') Total');
Query_ceps.SQL.Add(cwhere + ' order by ENDERECO_LOGRADOURO');
Query_ceps.Open;

preste bastante atenção no primeiro exemplo:
Lbl_registros.Caption:=Query_ceps.FieldByName('Total').AsString; // << Debugando o erro está aqui
você calcula o total em Query_aux, porém quer exibir a partir de Query_ceps. não vai dar certo mesmo.
essa linha deve ser:
Lbl_registros.Caption:=Query_aux.FieldByName('Total').AsString; // << Debugando o erro está aqui
já no segundo exemplo, altere a linha para:
Query_ceps.SQL.Add('select endereco.*, (select count(*) Total ' + cwhere + ') Total');
Bom galera o meu problema foi resolvido graças a ajuda do Emerson, e eu estou deixando o link do programa para q outras pessoas q tenhão duvidas iguais possa estar baixando e vendo o funcionamento da SQL.....
Galera errei o link no post acima, o correto é esse link abaixo blz:







