DELPHI - ABRIR LINHA SELECIONADA DBGRID

Delphi

17/10/2008

ESTOU DESENVOLVENDO UM SISTEMA USANDO DELPHI E BANCO DE DADOS ACCESS. TEM UMA TELA A QUAL FAÇO PESQUISA POR CODIGO, DAI TODOS OS ITENS ENCONTRADOS SAO LISTADOS EM UM DBGRID. O QUE EU GOSTARIA DE FAZER É QUANDO EU DER UM CLICK DUBLO EM UM DOS ITENS LISTADOS NO DBGRID, ELE ABRISSE O ITEM COM TODAS AS DESCRIÇOES EM UM OUTRO FORM. É POSSIVEL FAZER ISSO?


Danikenji

Danikenji

Curtidas 0

Respostas

Emarcolongo

Emarcolongo

17/10/2008

Vc pode fazer assim

No evento DlbClick da grade vc deverá posicionar o registro correspondente em componente de acesso do seu data module, em sql por exemplo.

Depois basta abrir a tela com o datasource apontado para o componente.
O exemplo abaixo é usando DBExpress, mas a ideia é a mesma.

...
begin
   datamodule.simpledataset.active := false;
   datamodule.simpledataset.dataset.commandtext := ´select * from TABELA 
     where codigo = :par1´
   datamodule.simpledataset.dataset.params.parambyname(´par1´).value := conteudo da grade
   datamodule.simpledataset.active := true;

   //abrindo a tela que tem o datasource ligado ao datamodule com o simpledataset relacionado
   if datamodule.simpledataset.fieldbyname(´campo´).text <> ´´ then
      begin
      application.createform(tftela,ftela);
      ftela.showmodal;
      ftela.destroy;
   end;

     datamodule.simpledataset.active := false;
end;


Uma outra forma é definir uma variavel global que conterá o valor
do seu campo de pesquisa e no active da tela posicionar o banco de
dados.

Espero ter ajudado.


GOSTEI 0
Danikenji

Danikenji

17/10/2008

O que seria esse par1 ??


GOSTEI 0
Leonardo_age

Leonardo_age

17/10/2008

datamodule.simpledataset.active := false; 
   datamodule.simpledataset.dataset.commandtext := ´select * from TABELA 
     where codigo = :par1´ 
   datamodule.simpledataset.dataset.params.parambyname(´par1´).value := conteudo da grade 
   datamodule.simpledataset.active := true; 

Isso seria uma variavel no SQL onde você seta o valor na linha abaixo. Você pode usar da seguinte forma:

   datamodule.simpledataset.active := false; // 
   datamodule.simpledataset.dataset.commandtext := ´select * from TABELA 
     where codigo = ´ + simpledatasetGrid.FieldbyName(´codigo´).asstring; // onde simpledatasetGrid é a dataset ligada na dbgrid 
   datamodule.simpledataset.active := true; 



GOSTEI 0
Danikenji

Danikenji

17/10/2008

resolvi de outra forma bem simples, mas nao sei se sera tao funcional mais pra frente..

o que eu fiz foi fazer no DlbClick da grade, ele abrir um outro form, e este outro form eu coloquei os dbedit do Adotable relacionado a consulta.


GOSTEI 0
Emarcolongo

Emarcolongo

17/10/2008

Sim, desta forma é muito mais simples., é que como não tinha ficado muito claro, se vc teria filtrado todos os campos lhe mandei este modo.


GOSTEI 0
POSTAR