DELPHI - ABRIR LINHA SELECIONADA DBGRID
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
Curtidas 0
Respostas
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.
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.
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
17/10/2008
O que seria esse par1 ??
GOSTEI 0
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
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.
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
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