Fórum DbGrid X Query #244913

29/07/2004

0

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

Responder

Posts

29/07/2004

Ehvasc

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.


Responder

Gostei + 0

29/07/2004

Mrcdlf

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?????


Responder

Gostei + 0

30/07/2004

Catunda

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar