Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
Gafanhoto

(Resolvido) Form some ao fazer consulta

Question

Seguinte...

Tenho um DBGrid. Ao entrar no Form, no Events ON ACTIVATE tem o seguinte código:

DataModule2.ADOQuery1.Open;

beleza pura até aí.

Mas daí tenho um TEdit e um Button, que serã responsáveis por filtrar os dados no DBGrid.

Segue o Events do OnClick do botão:

procedure TForm1.BitBtn1Click(Sender: TObject);

var

palavra : string;

begin

palavra := chave.Text;

DataModule2.ADOQuery1.Close;

DataModule2.ADOQuery1.SQL.Clear;

DataModule2.ADOQuery1.SQL.Add ('select * from boletins_conteudo');

DataModule2.ADOQuery1.Open;

end;

O problema é que ao clicar no botão o form some, e tenho que reabri-lo.

Quando abro novamente o form, noto que ele trocou certinho o SQL da ADOQuery1, o problema é o form que está fechando na hora que eu clico no botão.

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 0
Quando abro novamente o form, noto que ele trocou certinho o SQL da ADOQuery1, o problema é o form que está fechando na hora que eu clico no botão.

procedure TForm1.BitBtn1Click(Sender: TObject);
var
palavra : string;
begin
palavra := chave.Text;
DataModule2.ADOQuery1.Close;
DataModule2.ADOQuery1.SQL.Clear;
DataModule2.ADOQuery1.SQL.Add ('select * from boletins_conteudo');
DataModule2.ADOQuery1.Open;
end;

Não existe nenhum comando para fechar o form, então se o form sumiu, ele vai aparecer novamente assim que a select estiver concluida. Pode ser muitos dados que ele esta trazendo para o DBGrid por isso a demora em mostrar o form.

abraço

Share this post


Link to post
Share on other sites
  • 0

Tmb acho que não tem anda que faça sumir o form, mas ele fecha o form e não volta mais.

Eu espero um tempão.

Não pode ser nenhuma propriedade do form, ou ele deve ser ser MDIChild, sei lá?

Estou tentando aqui...

Se tiver alguma idéia do que possa ser agradeço.

Share this post


Link to post
Share on other sites
  • 0

O problema pode ser tambem do proprio componente Form, então para teste crie um novo form e tente novamente

abraço

Share this post


Link to post
Share on other sites
  • 0

Bah . . . tentei de tudo que foi jeito mas não consegui....

Publiquei o arquivo em um host.

LINK PARA DOWNLOAD

Se puderem dar uma olhada, é só colocar o programa em

c:\Arquivos de Programas\sys

Agradeço desde já. . .

Share this post


Link to post
Share on other sites
  • 0

Bah . . . desculpa se já estou senho chato, e agradeço a ajuda que tem me dado Jhonas.

Coloquei o DBGrid e continua sumindo o form.

Mas tem um detalhe. Coloquei para teste o form contendo o DBGrid como form principal e compilei.

Funciona perfeito.

A única forma que não fecha é quando eu abro um form principal, com um mainMenu, e dou um showmodal no form contendo a DBGrid.

Talvez deva abrir o form de alguma outra maneira? Ou trocar as propriedades do form?

Estou tentando de tudo. Se conseguir vou postar aqui, mas agradeço desde já a ajuda.

Share this post


Link to post
Share on other sites
  • 0

Gafanhoto, você tem mais eventos sendo tratado neste seu form?

Experimente comentar o código dentro dos eventos (usando as chaves {/}), e deixando habilitado inicialmente apenas o do botão citado.

Testa o programa. Caso o form fechar, tem que ser pensado em outra alternativa, do contrário, vai retirando o comentário um-a-um após cada código comentado (cada evento) e vai testando até descobrir qual está gerando este efeito estranho.

Só para confirmar, você não está mostrando o form com ShowModal, certo?!

Share this post


Link to post
Share on other sites
  • 0

FINALMENTE CONSEGUIIIIII!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

É o seguinte. Não usei um button para fazer a busca, e sim coloquei no evento onchange do edit. Ficou assim:

procedure TForm2.chaveChange(Sender: TObject);
begin
  if chave.Text <> '' then begin
    DataModule2.ADOQuery1.Active := False;
    DataModule2.ADOQuery1.SQL.Clear;
    DataModule2.ADOQuery1.SQL.Add('select * from boletins_conteudo where titulo like "'+chave.Text+'%"');
    DataModule2.ADOQuery1.Active := true;
  end
  else
  begin
    DataModule2.ADOQuery1.Active := False;
    DataModule2.ADOQuery1.SQL.Clear;
    DataModule2.ADOQuery1.SQL.Add('select * from boletins_conteudo');
    DataModule2.ADOQuery1.Active := true;
  end;
end;

Ficou até melhor do que eu esperava.

Obrigado pela ajuda de todos!

Edited by Micheus
Incluída tag's CODE para melhorar a visualização, bem como identado o código. Utilize a identação também ;)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148586
    • Total Posts
      644292
×
×
  • Create New...