Fórum Erro no Update #36512
15/04/2003
0
Estou com um lindo problema...
Eu gostaria de saber aonde estou errado.
Criei um Banco de Dados Interbase e coloquei os seguites conponentes.
- IBdataBase, IBTransaction com a propriedade(DefaltAction: TACommitRetaining), UPdateSQL + IBquery(CachedUpdates: true), eu faço a inserçao de dados alteração e saio do sistema quando eu reinicio o sistema os dados aparecem novamente, como se eu não tivesse feito nenhuma alteração.
Maxsoftware
Curtir tópico
+ 0Posts
16/04/2003
Manchinhachiptec
Gostei + 0
16/04/2003
Afarias
-- desta forma, evite usar CachedUpdates (vai poupar uma série de problemas)
Abraço
Gostei + 0
02/05/2003
Werlon Goulart
ApplyUpdates(0)= quantidade de registros q ficarao no Buffer aguardando pra serem aplicados. o Zero indica q NENHUM registro fica pendente.
Mas se vc quiser fazer apenas um cadastro normal desabilite o CachedUpdates.
Um Abraço
Werlon Goulart
Gostei + 0
08/05/2003
Gilberto Brito
Fiz uma aplicacao com os seguintes componentes:
IBDatabase, IBTransaction, IBTable e um DataSource.
Quando altero algum dado na tabela pessoal (tabela que estou testando) essas alteracoes so sao gravadas fisicamente no banco de dados quando executo o comando IBTransaction.Commit, porem esse comando faz com que o IBTransaction seja desconectado (coisa que nao quero).
Se eu executar esses comandos:
IBTable.Post;
IBTable.ApplyUpdates;
IBTable.Refresh;
O banco de dados so ira gravar fisicamente quando eu sair do programa e se a opcao AutoStopAction do IBTransaction for igual a saCommint.
Eu queria saber se tem como fazer isso sem usar comandos de SQL, usando apenas as propriedades dos componentes e sem usar o commando Commit do IBTransaction, pois ele desconecta da base.
OBS: ja setei meu banco de dados para Forced Write = True (deixando assim o banco mais lento e mais seguro).
Gostei + 0
09/05/2003
Werlon Goulart
Isto acontece pq o IBX trata todas as operacoes Insert/Update/Delete dentro de uma transacao apenas, o q faz com q o Database seja fechado quando se aplica a Transacao (Ccommit).
Vc pode usar o CommitRetaining para manter os dados sem fechar o DataBase e os outros clientes na rede verem suas alteracoes.
Mas dai tem um problema, pois as transacoes não são aplicadas de verdade no Banco, ficam em um cache esperando pra serem gravadas quando o acesso ao disco for menor (isso foi feito pra evitar a sobrecarga de acesso ao disco), e se acabar a energia antes destas transacoes serem aplicadas vc perde o q foi feito, sem contar q o banco cresce muito e so um Backup e depois um Restore pode voltar o banco ao seu tamanho normal.
Vc tem q decidir o q usar... Tem varios topicos neste forum com este assunto... De uma olhada antes...
Um Abraço
Werlon Goulart
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)