Fórum Sem ApplyUpdates(), mas consegue gravar #208821
23/01/2004
0
Tudo bem, uma vez que o TClientDataSet trabalha com dados em memória e o comando ApplyUpdates salva as alterações no banco.
[color=red:5f570eb801]Entretanto[/color:5f570eb801], vejam o exemplo que descobri e que ele consegue salvar as alterações no banco [color=red:5f570eb801]sem que seja utilizado o método ApplyUpdates:[/color:5f570eb801]
A minha dúvida é: Será que o método ApplyUpdates realiza em background um commit ?
Rômulo Barros
Curtir tópico
+ 0Posts
23/01/2004
Nebrio
Vou fazer testes....
T+
Nébrio
Gostei + 0
23/01/2004
Nebrio
Este código não funcionou
Uses DBXPress; Evento OnClick De Um Botão Qualquer(Sender : Tobject); Var Transacao : TTransactionDesc; Begin Transacao.TransactionID := 1; Transacao.IsolationLevel := xilREPEATABLEREAD; SqlConnection.StartTransaction(Transacao); Try Tabela.Insert; Tabela.FieldByName(´teste´).Asstring := ´tudo ok´; Tabela.Post; SqlConnection.Commit(Transacao); Except SqlConnection.Rollback(Transacao); End; End;
Mas este aqui funciou
Uses DBXPress; Evento OnClick De Um Botão Qualquer(Sender : Tobject); Var Transacao : TTransactionDesc; Begin Transacao.TransactionID := 1; Transacao.IsolationLevel := xilREPEATABLEREAD; SqlConnection.StartTransaction(Transacao); Try Tabela.Insert; Tabela.FieldByName(´teste´).Asstring := ´tudo ok´; Tabela.Post; Tabela.ApplayUpdates(0); SqlConnection.Commit(Transacao); Except SqlConnection.Rollback(Transacao); End; End;
O Primeiro código não dá erro e insere no ClientDataSet os dados, porém, quando é realizado o Commit ele não joga para banco, pois, na verdade eles ainda não existem, simplesmente estão armazenados no ClientDataSet...quando usei o ApplayUpdates() para tornar esses dados reais o Commit funcionou beleza.
Faça o teste usando o primeiro código, insira os dados e depois abra a base de dados e consulte, vc verá que o dado inserido não existe.
T+
Nébrio
Gostei + 0
23/01/2004
Rômulo Barros
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)