condiçao no OnColExit do DBGrid
como eu digo pro dbgrid (que esta ligado a tabela detalhe) no evento onColExit do componente a seguinte coisa:
a primeira condição eu sei como escrever mas a segunda nao:
alguem poderia me dar uma mao?
abraços a todos!
se (sair da terceira coluna) e (antes de dar um insert na tabela detalhe) entao begin tabela detalhe.post; tabela detalhe.apllyupdates(0); end;
a primeira condição eu sei como escrever mas a segunda nao:
if (dbgrid.SelectedIndex = 3) and (antes de dar um insert na tabela detalhe) then begin DM.cdsDetalhe.Post; DM.cdsDetalhe.ApplyUpdates(0); end;
alguem poderia me dar uma mao?
abraços a todos!
Mahdak
Curtidas 0
Respostas
Webjoel
28/04/2008
Caro colega!
Você conseguirá melhores resultados controlando isso no BeforePost do ClientDataSet, mas ai vem o porém:
Que componentes de acesso ao banco você está usando?
Você conseguirá melhores resultados controlando isso no BeforePost do ClientDataSet, mas ai vem o porém:
Que componentes de acesso ao banco você está usando?
GOSTEI 0
Webjoel
28/04/2008
Opa!
Viajei, logo depois do post vi que vc usa ClientDataSet, hehehe...desculpa...
a melhor forma de você controlar isso é no BeforePost do ClientDataSet, de ante mão já aviso que passando pra linha seguinte o ClientDataSet já dá um post automático por estar ligado a um DataSource que consecutivamente está ligado a dbgrid.
Mas qual é a sua intenção ao fazer isse código?
Viajei, logo depois do post vi que vc usa ClientDataSet, hehehe...desculpa...
a melhor forma de você controlar isso é no BeforePost do ClientDataSet, de ante mão já aviso que passando pra linha seguinte o ClientDataSet já dá um post automático por estar ligado a um DataSource que consecutivamente está ligado a dbgrid.
Mas qual é a sua intenção ao fazer isse código?
GOSTEI 0
Mahdak
28/04/2008
Opa!
Viajei, logo depois do post vi que vc usa ClientDataSet, hehehe...desculpa...
a melhor forma de você controlar isso é no BeforePost do ClientDataSet, de ante mão já aviso que passando pra linha seguinte o ClientDataSet já dá um post automático por estar ligado a um DataSource que consecutivamente está ligado a dbgrid.
Mas qual é a sua intenção ao fazer isse código?
olá webjoel, meu problema é que tenho um dbgrid ligado a uma tabela (detalhe) no qual insiro dados. nesse dbgrid, a primeira coluna é lookup e obrigatória atualmente eu to salvando esses dados junto com o botao salvar d formulario. nesse botao eu primeiro salvo a tabela mestre e depois a detalhe, pelo fato do campo lookup do dbgrid fazer referencia ao ID da tabela mestre.
if DM.cdsMestre.State in [dsEdit, dsInsert] then begin DM.cdsMestre.Post; DM.cdsMestre.ApplyUpdates(0); end; if DM.cdsDetalhe.State in [dsEdit, dsInsert] then begin DM.cdsDetalhe.Post; DM.cdsDetalhe.ApplyUpdates(0); end;
o problema nisso tudo é que o meu sistema ficou muito instavel quando to inserindo registros no dbGrid, por exemplo:
acabei de inserir um registro no dbgrid, dei um tab, ele inseriu a proxima linha (um novo registro). se eu nao informar nada nesse novo registro e clicar no registro anterior ja da merda pq o dbgrid da um cancelUpdates na tabela e eu nao consigo salvar aquilo que ja foi feito.
eu precisaria de uma maneira que sempre que eu inserisse um novo registro(), fosse dado um post, applyUpdates na tabela detalhe...
ja tentei no OnNewRecord, onAfterInsert do ClientDataSet, onAfterInsert mas me é retornado o erro que o campo obrigatorio da tabela detalhe nao foi preenchido.
no onAfterPost, onBeforePost, onBeforeInsert do Clientdataset nao acontece nada...
to meio perdido nessa historia... se vc puder me dar uma luz fico grato!
abraços!
GOSTEI 0
Webjoel
28/04/2008
Olha...
Já fiz esse tipo de coisa também, e passei por muitos problemas, mas a melhor forma de você fazer um cadastro mestre detalhe é mesmo usando o MasterDetail.
Procure na net artigos que explicam o funcionamento do MasterDetail, é a forma mais confiável a ser usada neste caso, no começo parece meio complicado mas depois você vai ver que fica simples e muito prático.
Qualquer duvida me dá um toque..Valeu!
Já fiz esse tipo de coisa também, e passei por muitos problemas, mas a melhor forma de você fazer um cadastro mestre detalhe é mesmo usando o MasterDetail.
Procure na net artigos que explicam o funcionamento do MasterDetail, é a forma mais confiável a ser usada neste caso, no começo parece meio complicado mas depois você vai ver que fica simples e muito prático.
Qualquer duvida me dá um toque..Valeu!
GOSTEI 0
Marco Salles
28/04/2008
eu reforço o que voce diz :
e o clientDataSet é ainda mais fiel nesta estrutura por ter um campo especifico para isto o Nested Datasets , que facilita e muito a estrutura de Mestre Detalhe
mas a melhor forma de você fazer um cadastro mestre detalhe é mesmo usando o MasterDetail.
e o clientDataSet é ainda mais fiel nesta estrutura por ter um campo especifico para isto o Nested Datasets , que facilita e muito a estrutura de Mestre Detalhe
GOSTEI 0