Inserindo e Alterando direto em Grades
Eu tenho um sistema em paradox e estou migrando para FireBird, estou utilizando os componentes descendentes da TDataSet da IBObjects, Tables pra ser mais preciso, ligado aos componentes da Ficha DataControls.
Bom o meu problema é que eu tenho muitos forms, onde o cliente altera os dados diretamente na DBGrid. Como o FireBird não grava fisicamente após o post, toda vez que adiciono um registro, me movimento para outro registro e volto para o anterior e altero ele dá o seguinte erro:
´O registro não foi encotrado para atualização´.
Eu consegui evitar o erro dando refresh a cada saida de celula da DBGrid, mas isso é impossível de ser usado, já que essas tabelas terão milhares de registros, ficará muito lento, ainda mais em rede e conecção remota. Acredito que se commitasse somente o registro a cada inserção ou alteração não daria mais o erro e não seria lento, porém não sei como comittar a ação.
Se alguém puder me ajudar ficaria muito grato.
Rafael bianco
Bom o meu problema é que eu tenho muitos forms, onde o cliente altera os dados diretamente na DBGrid. Como o FireBird não grava fisicamente após o post, toda vez que adiciono um registro, me movimento para outro registro e volto para o anterior e altero ele dá o seguinte erro:
´O registro não foi encotrado para atualização´.
Eu consegui evitar o erro dando refresh a cada saida de celula da DBGrid, mas isso é impossível de ser usado, já que essas tabelas terão milhares de registros, ficará muito lento, ainda mais em rede e conecção remota. Acredito que se commitasse somente o registro a cada inserção ou alteração não daria mais o erro e não seria lento, porém não sei como comittar a ação.
Se alguém puder me ajudar ficaria muito grato.
Rafael bianco
Rafael.bianco
Curtidas 0
Respostas
Marcos Fernando
21/02/2004
Kro amigo,
em 1º lugar gostaria de lhe parabelizar pela traco já que uso o FB já faz tempo e obtive um sucesso ótimo..
Em segundo quando em esperiencia probria naum use os componentes Tibstable, Ttable, para fazer as conexções, pois em rede facilitam muito as currumpições......
haaa quando vc fala que o Fb grava os dados fisicamente direto não é verdede,,, pois somente após um Commit, os dados são gravaos!!!
Baixe apostilas , guia e outros exemplos de aplicações com fb que é seu melhor Guia,,
Obs: use o componente IbdataSet, para faser o tratamento dos dados, DELETE, INSERT, UPDATE, e use o máxiomo dos SPs, Views e traigges do Fb,.,,,,,,,
no forum tem um item fixo de conecção comece por ai é uma ótima para novatos???
A vontade para pedir um Help,,,,
em 1º lugar gostaria de lhe parabelizar pela traco já que uso o FB já faz tempo e obtive um sucesso ótimo..
Em segundo quando em esperiencia probria naum use os componentes Tibstable, Ttable, para fazer as conexções, pois em rede facilitam muito as currumpições......
haaa quando vc fala que o Fb grava os dados fisicamente direto não é verdede,,, pois somente após um Commit, os dados são gravaos!!!
Baixe apostilas , guia e outros exemplos de aplicações com fb que é seu melhor Guia,,
Obs: use o componente IbdataSet, para faser o tratamento dos dados, DELETE, INSERT, UPDATE, e use o máxiomo dos SPs, Views e traigges do Fb,.,,,,,,,
no forum tem um item fixo de conecção comece por ai é uma ótima para novatos???
A vontade para pedir um Help,,,,
GOSTEI 0
Afarias
21/02/2004
|estou utilizando os componentes descendentes da TDataSet da
|IBObjects, Tables pra ser mais preciso,
Não use componentes TABLES -- não são projetados para sistemas C/S
|Eu consegui evitar o erro dando refresh a cada saida de celula da
|DBGrid, mas isso é impossível de ser usado, já que essas tabelas terão
|milhares de registros, ficará muito lento, {...}
Depende. O REFRESH deveria pesquisar e trazer apenas o registro selecionado (no buffer), o q não seria lento (pelo menos é assim q funciona com IBX por exemplo)
Seu problema tb pode estar no fato do UPDATE não estar bem definido. Se fosse somente na chave primária, provavelmente este erro nunca ocorreria.
|Acredito que se commitasse somente o registro a cada inserção ou
|alteração não daria mais o erro e não seria lento, porém não sei como
|comittar a ação.
Vc pode colocar um DataSet.Transaction.Commit no AfterPost do DataSet (ou algo similar no IBO)
|naum use os componentes Tibstable, Ttable, para fazer as conexções,
|pois em rede facilitam muito as currumpições......
Não gera corrupções, mas péssima performance.
T+
|IBObjects, Tables pra ser mais preciso,
Não use componentes TABLES -- não são projetados para sistemas C/S
|Eu consegui evitar o erro dando refresh a cada saida de celula da
|DBGrid, mas isso é impossível de ser usado, já que essas tabelas terão
|milhares de registros, ficará muito lento, {...}
Depende. O REFRESH deveria pesquisar e trazer apenas o registro selecionado (no buffer), o q não seria lento (pelo menos é assim q funciona com IBX por exemplo)
Seu problema tb pode estar no fato do UPDATE não estar bem definido. Se fosse somente na chave primária, provavelmente este erro nunca ocorreria.
|Acredito que se commitasse somente o registro a cada inserção ou
|alteração não daria mais o erro e não seria lento, porém não sei como
|comittar a ação.
Vc pode colocar um DataSet.Transaction.Commit no AfterPost do DataSet (ou algo similar no IBO)
|naum use os componentes Tibstable, Ttable, para fazer as conexções,
|pois em rede facilitam muito as currumpições......
Não gera corrupções, mas péssima performance.
T+
GOSTEI 0