Fórum Sanvando alterações FireBird IBDataSet - problema #235926
03/06/2004
Pessoal... eh o seguinte estou desenvolvendo uma aplicação usando banco FireBird e os componentes da guia Interbase. Tenho um form de cadastro com botões para fazer inserção, alteração, salvamento... para inserir um registro ta tudo ok... clico em inserir faço a digitação clico em salvar e blz... salva tudo no banco. mas quando clico em editar um registro faço as alterações e salvo parece que esta tudo ok mas quando fecho a tela e abro novamente processo que também fecha e abre a ibdataset os dados naum foram salvos no banco.
Estou usando os componentes OBDataBase, IBTransaction, IBDataSet e DataSource.
O codigo do botão editar eh:
DM.IBDataSet .Edit;
O codigo do botão salvar eh:
if Not(DM.IBTransaction.InTransaction) Then
DM.IBTransaction.StartTransaction;
DM.IBDataSet .Post;
DM.IBDataSet .ApplyUpdates;
DM.IBTransaction.CommitRetaining;
Aguardo retorno.... obrigado.... :wink:
Posts
Não sei pq não está funcionando, pois está tudo correto.
Verifique se não tá faltando algum código ou a ordem pode estar incorreta, copiando seu código e colocando a ordem correta deveria ficar assim:
if Not(DM.IBTransaction.InTransaction) Then
DM.IBTransaction.StartTransaction;
DM.IBDataSet .Edit;
//Aqui entra o código para alteração ex:
dm.IbDataSetNome.AsSTring := edtNome.text;
dm.ibDataSetEndereco.AsSTring := edtEnder.text;
//E por aí vai
DM.IBDataSet .Post;
DM.IBDataSet .ApplyUpdates;
DM.IBTransaction.CommitRetaining;
Cara... fiz mais alguns testes e descobri o seguinte tenho 14 tabelas no banco e o problema esta ocorrendo na tela de cadastro de 3 as maiores... e no primeiro registro da tabela eu consigo salvar as alterações normalmente mas do segundo em diante naum tem como ...
Tentei fazer o que foi postado anteriormente mas naum mudou nada....
Continuo aguardando... obrigado.
Se esta acontecendo algum erro o delphi deveria parar e mostrar o erro! a naum ser que vc desmarcou a opção Stop Delphi on Exceptions. Se naum aparece mesmo, ai eu naum sei. Eu ja vi este problema antes mas no momento naum estou me recordando o que estava errado, vou tentar me lembrar. Mas acho que é algo sobre naum encontrar o registro certo para alterar, naum estou lembrado agora???
:cry: agora naum da nem no primeiro registro... eu fiz um delete nas tabelas e tentei cadastrar denovo alguns registros e depois alteralos... mas novamente naum tem como.... :cry:
Fiz um teste com o ibtable e funciona perfeitamente.... soh que gostaria de usar o componente ibdataset... continuo aguardando uma solução...
:roll:
quando eu uso o componente ibdataset eu sempre vou na opcao dataset editor pressionando o botao direito do mouse e mando gerar os codigos sql referentes a alteracao, inclusao, exclusao e atualizacao dos registros.
verifique a propriedade modifysql do seu componente e veja se tem os codigos pra alteracao, se nao gere eles pelo dataset editor... talvez seja isto...
t+
07/06/2004
Rogerio_amorim
Talvez vc naum tenha definido corretamente na opção Key Fields os campos chaves e no Update Fields os campos que poderão ser alterados, apartir desse ponto vc vai poder gerar suas linhas em SQL através do botão Generate SQL, isso tudo claro, usando o Database Editor, pressionando o botão direito no componenete IBdataset como o colega anterior acabou de postar.
Rogério Amorim