DbGrid X Query

Delphi

29/07/2004

Pessoal,

é o seguinte...
estou usando um DbGrid para inserir os dados.. só que uso IBDataSet e é preciso definir um ´key field´ para fazer alterações, coisas do tipo...
ai o que acontece como eu não posso definir nenhum desses dados que são inseridos pois podem ser iguais então eu trabelhei com um campo ´controle´ só que ai que vem o problema... se é o dbgrid q insere os dados esse campo não é preenchido, pois o sistema tem q preencher como um autoincremento... é quando vou salvar(comitar) não posso edita-lo pq nada é gravado pq o campo controle esta vazio...

só lembrando não posso usar trigger e generator como autoincremento porque tenho q alterar os dados antes de fechar o banco...
alterar os dados que estão atualmente na query!

alguem tem alguma sugestão para poder salvar corretamente os dados???

ajudem por favor!!!!


Mrcdlf

Mrcdlf

Curtidas 0

Respostas

Ehvasc

Ehvasc

29/07/2004

Caro colega,

pelo que eu entendi todo o problema é causado pelo DBGrid, uma sugestão seria usar o string grid e fazer os controles que vc precisa manualmente, e quando for salvar usa o campo de controle que vc precisa sem problemas.
Espero ter ajudado. Boa sorte.


GOSTEI 0
Mrcdlf

Mrcdlf

29/07/2004

Caro colega, pelo que eu entendi todo o problema é causado pelo DBGrid, uma sugestão seria usar o string grid e fazer os controles que vc precisa manualmente, e quando for salvar usa o campo de controle que vc precisa sem problemas. Espero ter ajudado. Boa sorte.


bem mais usar string grid ficara bem mais trabalhoso...
terei q passar todos os dados um a um para ser salvo estou certo?
tenho outra duvida sobre strig grid... é possivel não definir o tamanho, como se fosse um dbgrid quando o usuario for movimentando ir aumentando as linhas?????


GOSTEI 0
Catunda

Catunda

29/07/2004

Colega, não sei por qual motivo vc não poderia usar o generator para controlar o campo de autoincremento.
Utilizo bastante o IBx e DBGrid para manutenção das tabelas.
Vc só precisa usar a função Gen_id().
Para isso precisa observar o seguinte: no evento BeforePost do componente que esteja ligado ao DBGrid (pode ser uma IBQuery,IBClientDataset,...) vc testa o campo de controle, se ele for maior que zero não precisa de nenhum tratamento e se ele for 0(zero) ou Nulo vc executa uma IBQuery ou IBSQL com o seguinte codigo:

select Gen_id(generator,1) as newcodigo from RDB$DATABASE

depois é só atribuir o valor de newcodigo à variavel ligada ao campo no DBGrid.

Valeu?

Caso ainda tenha dúvidas entre em contato que lhe envio um pequeno sisteminha como exemplo.


GOSTEI 0
POSTAR