Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) resultado de consulta


Britto

Pergunta

Boa noite a todos, sou novo no forum e gostaria de uma ajuda:

Estou desenvolvendo um pequeno sistema para gerar relatórios, e em uma determinada situação faço uma busca por um de três parametros, são eles: norma, palavra-chave ou descrição. O problema é o seguinte: independente do radiobutton ativo ele sempre está fazendo a busca no campo normal. Já li e reli o código mas não estou conseguindo identificar o problema. desde já agradeço!

ps.: o 'codebox' do forum está indisponível, segue código:

procedure TForm1.Edit4Change(Sender: TObject);
begin
if RadioButton7.Checked then
begin
  bd.ADOQuery2.Active := false;
  bd.ADOQuery2.SQL.Clear;
  bd.ADOQuery2.SQL.Add ( 'Select * From tbl_legislacao Where plv_chv Like ' );
  bd.ADOQuery2.SQL.Add(QuotedStr('%' +Edit4.Text+'%'));
  bd.ADOQuery2.Active := true;
  DbGrid4.Refresh;
end;
if RadioButton8.Checked then
begin
  bd.ADOQuery2.Active := false;
  bd.ADOQuery2.SQL.Clear;
  bd.ADOQuery2.SQL.Add ( 'Select * From tbl_legislacao Where rsm_lgl Like ' );
  bd.ADOQuery2.SQL.Add(QuotedStr('%' +Edit4.Text+'%'));
  bd.ADOQuery2.Active := true;
  DbGrid4.Refresh;
end;
if RadioButton9.Checked then
  bd.ADOQuery2.Active := false;
  bd.ADOQuery2.SQL.Clear;
  bd.ADOQuery2.SQL.Add ( 'Select * From tbl_legislacao Where norma Like ' );
  bd.ADOQuery2.SQL.Add(QuotedStr('%' +Edit4.Text+'%'));
  bd.ADOQuery2.Active := true;
  DbGrid4.Refresh;
end;

*estou utilzando o banco de dados do access

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Você apenas está fazendo uma pesquisa quando um dos radiobox's estão marcados, porém você ainda deixa a query aberta, creio que você tem que fecha-la.

Tente assim:

procedure TForm1.Edit4Change(Sender: TObject);
begin
if RadioButton7.Checked then
begin
  bd.ADOQuery2.Active := false;
  bd.ADOQuery2.SQL.Clear;
  bd.ADOQuery2.SQL.Add ( 'Select * From tbl_legislacao Where plv_chv Like ' );
  bd.ADOQuery2.SQL.Add(QuotedStr('%' +Edit4.Text+'%'));
  bd.ADOQuery2.Active := true;
  DbGrid4.Refresh;
end
else
  bd.ADOQuery2.close;
if RadioButton8.Checked then
begin
  bd.ADOQuery2.Active := false;
  bd.ADOQuery2.SQL.Clear;
  bd.ADOQuery2.SQL.Add ( 'Select * From tbl_legislacao Where rsm_lgl Like ' );
  bd.ADOQuery2.SQL.Add(QuotedStr('%' +Edit4.Text+'%'));
  bd.ADOQuery2.Active := true;
  DbGrid4.Refresh;
end
else
  bd.ADOQuery2.close;
if RadioButton9.Checked then
  bd.ADOQuery2.Active := false;
  bd.ADOQuery2.SQL.Clear;
  bd.ADOQuery2.SQL.Add ( 'Select * From tbl_legislacao Where norma Like ' );
  bd.ADOQuery2.SQL.Add(QuotedStr('%' +Edit4.Text+'%'));
  bd.ADOQuery2.Active := true;
  DbGrid4.Refresh;
end
else
  bd.ADOQuery2.close;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Não tinha reparado que você faz isso no evento OnChange de um Edit, assim ele vai dar erros porque você usa o mesmo componente query, daí uma hora ele vai fechar e outra ele vai abrir, vai ficar num loop infinito pelo jeito... tenta assim:

procedure TForm1.Edit4Change(Sender: TObject);
var
tabela : string;
begin
if (not RadioButton7.Checked) and (not RadioButton8.Checked) and (not RadioButton9.Checked) then
bd.ADOQuery2.close
else
begin

if RadioButton7.Checked then
tabela := 'plv_chv';

if RadioButton8.Checked then
tabela := 'rsm_lgl';

if RadioButton9.Checked then
tabela := 'norma';

  bd.ADOQuery2.close;
  bd.ADOQuery2.SQL.Clear;
  bd.ADOQuery2.SQL.Add ( 'Select * From tbl_legislacao Where ' + tabela + ' Like ' );
  bd.ADOQuery2.SQL.Add(QuotedStr('%' +Edit4.Text+'%'));
  bd.ADOQuery2.open;
  DbGrid4.Refresh;

end;
end;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde Douglas.

Muito obrigado pela atenção rapidez na resposta, sem falar na precisão!

Funcionou certinho cara!

só achei estranho uma coisa: em outras telas eu tenho opções de dois radiobutton e funciona do jeito anterior, somente este que está usando três que estava dando problemas... mas tá tranquilo, vou inclusive mudar os demais para esta nova sugestão, que sem dúvida é muito mais iteligente.

Obrigado novamente!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...