Clientdaset Atualização no banco
12/07/2004
0
Deryck
Posts
12/07/2004
Rômulo Barros
12/07/2004
Deryck
Caro amigo, me desculpe o incomodo com o CAPS LOCK, mas mandei assim sem saber que tinha essas regras, não tive tempo de ler tudo , estou apertado com a troca de um software da empresa, e não estou com muito tempo,mas valeu pelo toque!
12/07/2004
Rômulo Barros
12/07/2004
Deryck
Ja esta assim,,,,o problema agora é so que o banco é atualizado depois que fecha a aplicação! Ja dei comit,aplyupdate, ja fechei e abri clientdataset,,,
12/07/2004
Deryck
//Salva um alteração
procedure TDataModule1.SalvarExecute(Sender: TObject);
begin
if DataModule2.ClientDataSet.State in [DsInsert,DsEdit] then
begin
DataModule2.ClientDataSet.Post;
DataModule2.ClientDataSet.ApplyUpdates(-1);
end;
if DataModule2.ClientDataSetGRID.State in [dsinsert,dsedit] then
begin
DataModule2.ClientDataSetGRID.Post;
DataModule2.ClientDataSetGRID.ApplyUpdates(-1);
end;
FRMinserir.Close;
end;
//Cancela uma alteração ou cancela um inserção
procedure TDataModule1.CancelarExecute(Sender: TObject);
begin
DataModule2.ClientDataSetGRID.RevertRecord;
DataModule2.ClientDataSetGRID.ApplyUpdates(0);
DataModule2.ClientDataSet.RevertRecord;
DataModule2.ClientDataSet.ApplyUpdates(0);
DataModule2.ClientDataSetCria_Id.RevertRecord;
DataModule2.ClientDataSetCria_Id.ApplyUpdates(0);
FRMinserir.Close;
end;
Inseri um novo pedido
procedure TDataModule1.AtualizarExecute(Sender: TObject);
begin
DataModule2.ClientDataSetGRIDPEDIDOSAIDA_ID.Value := DataModule2.ClientDataSetCria_IdCONT.Value;//recebe o novo pedidosaida_id
DataModule2.ClientDataSetPEDIDOSAIDA_ID.Value := DataModule2.ClientDataSetCria_IdCONT.Value;//recebe o novo pedidosaida_id
FRMcons.DBGridCONS.UpdateAction(Atualizar);
FRMinserir.DBGridATUALIZA.UpdateAction(Atualizar);
DataModule2.ClientDataSet.Post;
DataModule2.ClientDataSet.ApplyUpdates(-1);
DataModule2.ClientDataSetGRID.Post;
DataModule2.ClientDataSetGRID.ApplyUpdates(-1);
DataModule2.ClientDataSetCria_Id.ApplyUpdates(-1);
DataModule2.ClientDataSetCria_Id.Close;
DataModule2.ClientDataSetCria_Id.Open;
DataModule2.ClientDataSetGRID.Close;
DataModule2.ClientDataSet.Close;
DataModule2.ClientDataSetGRID.Open;
DataModule2.ClientDataSet.Open;
FRMinserir.Close;
end;
//Abre para inserção
procedure TDataModule1.InserirExecute(Sender: TObject);
begin
FRMinserir.Show;
FRMinserir.Salvar.Visible := false;
FRMinserir.Salvar.Enabled := false;
FRMinserir.Atualizar.Visible := True;
FRMinserir.Atualizar.Enabled := True;
DataModule2.ClientDataSetGRID.Open;
DataModule2.ClientDataSetGRID.Insert;
DataModule2.ClientDataSet.Open;
DataModule2.ClientDataSet.Insert;
FRMinserir.DBEdit1.Visible := True;
FRMinserir.DBGridATUALIZA.Columns[0].Visible := True;
end;
12/07/2004
Rômulo Barros
..
Var Transacao : TTransactionDesc; // Uses DBXPress ; Procedure IniciarTransacao; Begin Transacao.TransactionId := SessionId; // SessionId é uma rotina que gera um número aleatório. Transacao.IsolationLevel := XilReadCommited; SqlConnection.StartTransaction(Transacao); End; Procedure FinalizarTransacao; Begin If(SqlConnection.InTransaction)Then SqlConnection.Commit(Transacao); End;
[color=red:8c8eb60167]Agora, basta vc chamar a rotina ´IniciarTransacao´ para os eventos ´BeforeInsert´,´BeforeEdit´ e ´BeforeDelete´ de seus ClientDataSets. Nos eventos ´AfterPost´ e ´AfterDelete´, chame a rotina ´Finalizar Transacao´;[/color:8c8eb60167]
12/07/2004
Deryck
..
Var Transacao : TTransactionDesc; // Uses DBXPress ; Procedure IniciarTransacao; Begin Transacao.TransactionId := SessionId; // SessionId é uma rotina que gera um número aleatório. Transacao.IsolationLevel := XilReadCommited; SqlConnection.StartTransaction(Transacao); End; Procedure FinalizarTransacao; Begin If(SqlConnection.InTransaction)Then SqlConnection.Commit(Transacao); End;
[color=red:dbee5a6031]Agora, basta vc chamar a rotina ´IniciarTransacao´ para os eventos ´BeforeInsert´,´BeforeEdit´ e ´BeforeDelete´ de seus ClientDataSets. Nos eventos ´AfterPost´ e ´AfterDelete´, chame a rotina ´Finalizar Transacao´;[/color:dbee5a6031][/quote:dbee5a6031]
Cara ,,nem assim rolou ,,,deu uma porrada de erro!
12/07/2004
Deryck
Var Transacao : TTransactionDesc; // Uses DBXPress ; Procedure IniciarTransacao; Begin Transacao.TransactionId := SessionId; // SessionId é uma rotina que gera um número aleatório. Transacao.IsolationLevel := XilReadCommited; SqlConnection.StartTransaction(Transacao); End; Procedure FinalizarTransacao; Begin If(SqlConnection.InTransaction)Then SqlConnection.Commit(Transacao); End;
Cara ,,nem assim rolou ,,,deu uma porrada de erro![/quote:5c3212b1a0]
Cara, consegui fazer, o lance é que no Ibtransaction, o edletimer estava 0 e quando coloquei 1 ,ele atualizou,de um em um segundo !
Clique aqui para fazer login e interagir na Comunidade :)