Refresh em campo calculado
Pessoal,
Poderiam me tirar uma dúvida, por favor ?
Eu uso Delphi 7 + Firebird 2 + DBExpress.
É o seguinte: suponha que eu tenha um ClientDataSet ´Revista´. Criei um campo calculado que no evento
OnCalCFields chama uma função minha que busca em uma outra tabela, que chamaremos aqui de ´Y´, o valor de um campo, que chamaremos aqui de ´info´.
A relação entre a tabela ´Revista´ e a tabela ´Y´ é de 1 para N, ou seja, para uma revista eu posso ter N registros na tabela Y.
Até aí tudo bem. Ele busca os valores corretos e concatena todos esses valores no campo calculado do meu clientdataset, separando-os por vírgula.
Eu mostro esse campo calculado em uma grid.
Nessa mesma tela da grid eu posso clicar em um botão e editar a minha tabela Y em um form modal.
Quando eu edito a minha tabela Y, mais especificamente o campo ´info´, e salvo as alterações, eu modifico o valor do meu campo calculado, acrescentando a nova ´info´:
cdsCAMPO_CALCULADO_EXEMPLO.AsString := cdsCAMPO_CALCULADO_EXEMPLO.AsString + ´, ´ + info;
O problema é que essa alteração no campo não é refletida na grid do form de baixo. Eu só consigo com que ela seja refletida quando eu fecho e abro o form que contém a grid.
Detalhe: o clientdataset ´Revista´, que é o dataset mostrado pela grid, está em modo de EDIÇÃO ou INSERÇÃO.
Alguém saberia como resolver esse probleminha ?
Valeu pela ajuda, pessoal !!
Poderiam me tirar uma dúvida, por favor ?
Eu uso Delphi 7 + Firebird 2 + DBExpress.
É o seguinte: suponha que eu tenha um ClientDataSet ´Revista´. Criei um campo calculado que no evento
OnCalCFields chama uma função minha que busca em uma outra tabela, que chamaremos aqui de ´Y´, o valor de um campo, que chamaremos aqui de ´info´.
A relação entre a tabela ´Revista´ e a tabela ´Y´ é de 1 para N, ou seja, para uma revista eu posso ter N registros na tabela Y.
Até aí tudo bem. Ele busca os valores corretos e concatena todos esses valores no campo calculado do meu clientdataset, separando-os por vírgula.
Eu mostro esse campo calculado em uma grid.
Nessa mesma tela da grid eu posso clicar em um botão e editar a minha tabela Y em um form modal.
Quando eu edito a minha tabela Y, mais especificamente o campo ´info´, e salvo as alterações, eu modifico o valor do meu campo calculado, acrescentando a nova ´info´:
cdsCAMPO_CALCULADO_EXEMPLO.AsString := cdsCAMPO_CALCULADO_EXEMPLO.AsString + ´, ´ + info;
O problema é que essa alteração no campo não é refletida na grid do form de baixo. Eu só consigo com que ela seja refletida quando eu fecho e abro o form que contém a grid.
Detalhe: o clientdataset ´Revista´, que é o dataset mostrado pela grid, está em modo de EDIÇÃO ou INSERÇÃO.
Alguém saberia como resolver esse probleminha ?
Valeu pela ajuda, pessoal !!
Marcelocda
Curtidas 0
Respostas
Cps.art
12/01/2008
Tente assim:
Formdebaixo.Dbgrid.Refresh;
Formdebaixo.Dbgrid.Refresh;
GOSTEI 0
Marcelocda
12/01/2008
Não resolveu com o refresh da Grid.
Consegui resolver com o ´refreshRecord´ do clientdataset.
Valeu !
Consegui resolver com o ´refreshRecord´ do clientdataset.
Valeu !
GOSTEI 0
Onjahyr
12/01/2008
Dá uma lida neste tópico e vê se serve pr´teu caso:
http://www.activedelphi.com.br/forum/viewtopic.php?p=149403&sid=37e4cdb7fdff5d3fc0a7cbd92804ced1
http://www.activedelphi.com.br/forum/viewtopic.php?p=149403&sid=37e4cdb7fdff5d3fc0a7cbd92804ced1
GOSTEI 0