Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

..:Luiz Fernando:..

[Resolvido] Como fazer uma tabela com dados do BD (Delphi7)

Recommended Posts

Olá Pessoal, sou novo por aqui e iniciante em delphi7.

Gostaria da ajuda de vocês referente ao DBGrid.

 

No meu form, tenho um ADOConnection configurado com um banco de dados Oracle, um ADOQuery com um comando sql e um parametro ligado a conexão, um DataSource ligado ao ADOQuery e o DBGrid ligado ao DataSource. Tem também um Edit e um Button.

 

No evento click do botão tem o seguinte codigo:

 

begin

ADOQuery1.close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('select cod_evento, des_descricao, des_estado from callmap.view_evento_resumo where cod_evento=:buscaCodigo');

ADOQuery1.Parameters.ParamByName('buscaCodigo').Value := Edit1.Text;

ADOQuery1.Open;

end;

 

Neste caso, eu consigo fazer a consulta no Banco Oracle com a condição que eu colocar no Edit1 e preenche no DBGrid.

 

Bom, o que eu quero na verdade é fazer do DBGrid uma tabela, na medida que eu for realizando a busca, ou seja, digitando o codigo que eu quero no Edit1, ir preenchendo o DBGrid (uma linha em baixo da outra), e posteriormente fazer um update automático desses dados de acordo com o Banco de dados. Porque quando eu faço a busca preenche a primeira linha, mais quando realizo outra busca sobrepoem essa primeira linha, ficando apenas com uma linha.

 

Penso eu que deve ser um comando simples ou deve ter uma forma melhor de fazer, então se alguem fizer a gentileza de me informar como proceder ou me passar um forma melhor de se fazer uma tabela ficarei muito grato.

 

Desde ja agradeço as respostas.

 

Att,

 

Luiz Fernando Campos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo...

Coloque seu código no evento onChange do Edit que usa pra digitar os argumentos de pesquisa:

 

with ADOQuery1 do
begin
 Close;
 SQL.Clear;
 SQL.Add('select');
 SQL.Add(' cod_evento, des_descricao, des_estado');
 SQL.Add('from');
 SQL.Add(' callmap.view_evento_resumo');
 SQL.Add('where');
 SQL.Add(' cod_evento LIKE ' + QuotedStr(Edit1.Text));
 Open;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo...

Coloque seu código no evento onChange do Edit que usa pra digitar os argumentos de pesquisa:

 

with ADOQuery1 do
begin
 Close;
 SQL.Clear;
 SQL.Add('select');
 SQL.Add(' cod_evento, des_descricao, des_estado');
 SQL.Add('from');
 SQL.Add(' callmap.view_evento_resumo');
 SQL.Add('where');
 SQL.Add(' cod_evento LIKE ' + QuotedStr(Edit1.Text));
 Open;
end;

Bom dia Rodrigo!

Muito Obrigado pela ajuda!

 

Quando eu coloco esse codigo no evento onchange do edit, a unica coisa que muda e que quando digito

o codigo no edit ja aparece no dbgrid sem que eu precise clicar no button.

 

Na verdade não é isso que preciso. Preciso que realiza a busca no momento em que o usuário clicar no botão, mais isso ja esta feito.

Quero agora continuar inserindo esses registros no dbgrid sem que sobreponha a primeira linha, como se fosse uma tabela.

 

Mais de toda forma muito obrigado pela ajuda!!

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Bom dia amigo...

Coloque seu código no evento onchange do Edit que usa pra digitar os argumentos de pesquisa:

 

with ADOQuery1 do
begin
 Close;
 SQL.Clear;
 SQL.Add('select');
 SQL.Add(' cod_evento, des_descricao, des_estado');
 SQL.Add('from');
 SQL.Add(' callmap.view_evento_resumo');
 SQL.Add('where');
 SQL.Add(' cod_evento LIKE ' + QuotedStr(Edit1.Text));
 Open;
end;

Bom dia Rodrigo!

Muito Obrigado pela ajuda!

 

Quando eu coloco esse codigo no evento onchange do edit, a unica coisa que muda e que quando digito

o codigo no edit ja aparece no dbgrid sem que eu precise clicar no button.

 

Na verdade não é isso que preciso. Preciso que realiza a busca no momento em que o usuário clicar no botão, mais isso ja esta feito.

Quero agora continuar inserindo esses registros no dbgrid sem que sobreponha a primeira linha, como se fosse uma tabela.

 

Mais de toda forma muito obrigado pela ajuda!!

 

Abraço!

 

Bom isso já acontece por automático quando você manda o comando ADOQuery.Post();

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Bom dia amigo...

Coloque seu código no evento onchange do Edit que usa pra digitar os argumentos de pesquisa:

 

with ADOQuery1 do
begin
 Close;
 SQL.Clear;
 SQL.Add('select');
 SQL.Add(' cod_evento, des_descricao, des_estado');
 SQL.Add('from');
 SQL.Add(' callmap.view_evento_resumo');
 SQL.Add('where');
 SQL.Add(' cod_evento LIKE ' + QuotedStr(Edit1.Text));
 Open;
end;

Bom dia Rodrigo!

Muito Obrigado pela ajuda!

 

Quando eu coloco esse codigo no evento onchange do edit, a unica coisa que muda e que quando digito

o codigo no edit ja aparece no dbgrid sem que eu precise clicar no button.

 

Na verdade não é isso que preciso. Preciso que realiza a busca no momento em que o usuário clicar no botão, mais isso ja esta feito.

Quero agora continuar inserindo esses registros no dbgrid sem que sobreponha a primeira linha, como se fosse uma tabela.

 

Mais de toda forma muito obrigado pela ajuda!!

 

Abraço!

 

Bom isso já acontece por automático quando você manda o comando ADOQuery.Post();

 

Obrigado Rodrigo!

 

Coloquei dessa forma:

 

ADOQuery1.close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('select cod_evento, des_descricao, des_estado from callmap.view_evento_resumo where cod_evento=:buscaCodigo');

ADOQuery1.Parameters.ParamByName('buscaCodigo').Value := Edit1.Text;

ADOQuery1.Open;

ADOQuery1.Append;

ADOQuery1.Post;

 

 

Mais ainda não consegui, quando digito o codigo no edit e aperto o button, esta dando o seguinte erro:

 

"Project Project1.exe raised exception class EOleException with message 'Uma linha vazia não pode ser inserida. A linha deve ter pelo menos um valor de coluna definido'. Process stopped. Use Step or Run to continue."

 

Desde já agradeço.

 

Att,

 

Luiz Fernando Campos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aproveitando o post:

 

fiz uma mudança!

 

Agora eu tenho a mesma conexão ADO e ADOQuery com parametro = edit1, um clientdataset ligado um datasetprovider, o datasetprovider ligado ao ADOquery, um datasource ligado ao clientedataset e o dbgrid ligado ao datasource.

 

Coloquei esse codigo no evento click do button:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

ADOQuery1.close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('select cod_evento, des_descricao, des_estado from callmap.view_evento_resumo where cod_evento=:buscaCodigo');

ADOQuery1.Parameters.ParamByName('buscaCodigo').Value := Edit1.Text;

ADOQuery1.Open;

ClientDataSet1.Insert;

ClientDataSet1.Post;

end;

 

Mando rodar e roda beleza....so que coloco o codigo no edit1, aperto o button mais não faz a pesquisa mais....inseri um linha em baixo da outra do jeito que eu quero, mais nao ta fazendo a pesquisa mais....

 

alguem sabe oq devo fazer??

 

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Luiz Fernando!

Desculpe ai fera, mais quando respondi seu tópico, fiz isso na correria, sem ler direito, por isso não tinha compreendido muito bem sua dúvida.

 

Isso que tu quer fazer é fácil. Basta você usar um ADOQueryConsulta (Palheta ADO) e um ClientDataSet (Palheta DataAccess).

* Coloque o ClientDataSet no form, dê duplo clique no mesmo que será exibido a tela FieldsEditor, Clique botão direito e New Field e vai inserindo os campos que você quer mostrar no DBGrid. Após criar todos os campos, clique botão direito mouse no objeto ClientDataSet -> Create DataSet.

 

Use o ADOQueryConsulta com o código que mencionei no meu primeiro tópico, para realizar a consulta que deseja.

Use o ClientDataSet ligado com o DataSource que está ligado com o DBGrid.

Após realizar a consulta com ADOQueryConsulta você vai dando .Append no ClientDataSet. Exemplo:

 

ClientDataSet.Append();
ClientDataSetdes_descricao.Value := ADOQueryConsulta.des_descricao.Value;
ClientDataSet.Post();

Aproveitando o post:

 

fiz uma mudança!

 

Agora eu tenho a mesma conexão ADO e ADOQuery com parametro = edit1, um clientdataset ligado um datasetprovider, o datasetprovider ligado ao ADOquery, um datasource ligado ao clientedataset e o dbgrid ligado ao datasource.

 

Coloquei esse codigo no evento click do button:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

ADOQuery1.close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('select cod_evento, des_descricao, des_estado from callmap.view_evento_resumo where cod_evento=:buscaCodigo');

ADOQuery1.Parameters.ParamByName('buscaCodigo').Value := Edit1.Text;

ADOQuery1.Open;

ClientDataSet1.Insert;

ClientDataSet1.Post;

end;

 

Mando rodar e roda beleza....so que coloco o codigo no edit1, aperto o button mais não faz a pesquisa mais....inseri um linha em baixo da outra do jeito que eu quero, mais nao ta fazendo a pesquisa mais....

 

alguem sabe oq devo fazer??

 

 

Obrigado!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Luiz Fernando!

Desculpe ai fera, mais quando respondi seu tópico, fiz isso na correria, sem ler direito, por isso não tinha compreendido muito bem sua dúvida.

 

Isso que tu quer fazer é fácil. Basta você usar um ADOQueryConsulta (Palheta ADO) e um ClientDataSet (Palheta DataAccess).

* Coloque o ClientDataSet no form, dê duplo clique no mesmo que será exibido a tela FieldsEditor, Clique botão direito e New Field e vai inserindo os campos que você quer mostrar no DBGrid. Após criar todos os campos, clique botão direito mouse no objeto ClientDataSet -> Create DataSet.

 

Use o ADOQueryConsulta com o código que mencionei no meu primeiro tópico, para realizar a consulta que deseja.

Use o ClientDataSet ligado com o DataSource que está ligado com o DBGrid.

Após realizar a consulta com ADOQueryConsulta você vai dando .Append no ClientDataSet. Exemplo:

 

ClientDataSet.Append();
ClientDataSetdes_descricao.Value := ADOQueryConsulta.des_descricao.Value;
ClientDataSet.Post();

 

Aproveitando o post:

 

fiz uma mudança!

 

Agora eu tenho a mesma conexão ADO e ADOQuery com parametro = edit1, um clientdataset ligado um datasetprovider, o datasetprovider ligado ao ADOquery, um datasource ligado ao clientedataset e o dbgrid ligado ao datasource.

 

Coloquei esse codigo no evento click do button:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

ADOQuery1.close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('select cod_evento, des_descricao, des_estado from callmap.view_evento_resumo where cod_evento=:buscaCodigo');

ADOQuery1.Parameters.ParamByName('buscaCodigo').Value := Edit1.Text;

ADOQuery1.Open;

ClientDataSet1.Insert;

ClientDataSet1.Post;

end;

 

Mando rodar e roda beleza....so que coloco o codigo no edit1, aperto o button mais não faz a pesquisa mais....inseri um linha em baixo da outra do jeito que eu quero, mais nao ta fazendo a pesquisa mais....

 

alguem sabe oq devo fazer??

 

 

Obrigado!

 

Rodrigo,

 

Muito obrigado pela ajuda!! Exatamente o que eu queria!

Funcionou perfeitamente!!

 

Muito obrigado mesmo! você é o cara! hahaha!

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.