Sem ApplyUpdates(), mas consegue gravar
É o seguinte: Utilizo delphi 7 / interbase 6.5 com TSqlDataSet, TDataSetProvider e TClientDataSet. Nas minhas querys, sempre boto o código abaixo no evento AfterPost e AfterDelete das tabelas:
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 ?
Tabela.ApplyUpdates(-1);
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]
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;
A minha dúvida é: Será que o método ApplyUpdates realiza em background um commit ?
Rômulo Barros
Curtidas 0
Respostas
Nebrio
23/01/2004
Estranho...Como atualizar algo no banco que ainda não existe ?
Vou fazer testes....
T+
Nébrio
Vou fazer testes....
T+
Nébrio
GOSTEI 0
Nebrio
23/01/2004
Cara fiz uns teste aqui e não funcionou não viu !!!!
Este código não funcionou
Mas este aqui funciou
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
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
Rômulo Barros
23/01/2004
Beleza... vou testar de novo ...... Devo ter me enganado !!!1 :oops:
GOSTEI 0