Duvida Sobre Transações em Access
Olá amigos!
Tenho um programa de Controle de Restaurantes que Funciona Em Delphi com Paradox e Access.
Tenho o Programa Principal que funciona Como Controle Cadastral,Financeiro, Estatístíco e Tambem controle de mesas ocupadas
,Livres,Reservadas e seus Respectivos pedidos. Quando Abro uma mesa e o cliente pede um Produto que vem da cozinha o Programa emvia automaticamente o pedido para uma tabela em access ´Cozinha´ quando eu altero uma informação referente ao produto no balcão a alteração e repassada para a cozinha até ai tudo bem o problema começa quando realizo uma troca de mesa,por exemplo:
Mesa (1) pela mesa (2) todos os dados da mesa 1 são automáticamente tranferidos para a mesa 2.
Tudo isso funciona perfeitamente em minha máquina de desenvolvimento
porém na máquina do cliente quando troco de mesa o produto que foi trocado não pode mais ser alterado ou excluido pelas rotinas que antes funcionavam no programa.
Lembrando que no programa que funciona na cozinha existe uma tabela chamada MesaPedido.db em PARADOX que quando manipulada paça os novos dados para a tabela cozinha em ACCESS pelos seus eventos afterpost,afterdelete, a baixo segue as rotinas que uso caso alguém possa me ajudar ficarei muito grato.
Obs: Volto a lembrar que a rotina a seguir funciona perfeitamente em minha máquina de desenvolvimento porém na máquina do cliente isso não acontece.
As duas máquinas rodam Windows XP professional SP2.
[b:e60720f175]Rotina para trocar de mesa[/b:e60720f175]
// ATUALIZANDO EVENTUAIS PEDIDOS NA COZINHA
dtmp.qry.Close;
dtmp.qry.SQL.Text:= ´UPDATE COZINHA SET NMESA =:NOVONUMERO WHERE (NMESA = :NMESA)´;
dtmp.qry.Parameters.ParamByName(´NOVONUMERO´).Value:= StrToInt(frmTrocaMesa.cbxMesaLivre.Text);
dtmp.qry.Parameters.ParamByName(´NMESA´).Value := StrToInt(frmTrocaMesa.cbxMesaOcupada.Text);
dtmp.qry.ExecSQL;
[b:e60720f175]Rotinas nos eventos da tabela MesaPedido trocar de mesa[/b:e60720f175]
[b:e60720f175]Depois que a rotina acima é esecutada todas as mudanças não são altualizadas na tabelas em ACCESS. [/b:e60720f175]
procedure Tdtm.tbMesaPedidoAfterPost(DataSet: TDataSet);
begin
if tbMesaPedidoCozinha.AsBoolean = true then
begin
if sStatus = ´I´ then
begin
dtmP.conexao.BeginTrans;
dtmP.tbControleCozinha.Append;
dtmP.tbControleCozinhaCodProd.AsInteger := dtm.tbMesaPedidoCodProd.AsInteger;
dtmP.tbcontroleCozinhaquantidade.AsFloat := dtm.tbMesaPedidoQuant.AsFloat;
dtmP.tbcontroleCozinhaDescricao.AsString := dtm.tbMesaPedidoDescri.AsString;
dtmP.tbControleCozinhaNMesa.AsInteger := dtm.tbMesaPedidoNMesa.AsInteger;
dtmP.tbControleCozinhaPronto.AsBoolean := false;
dtmP.tbControleCozinhaEntregue.AsBoolean := false;
dtmP.tbcontroleCozinhaCodChave.AsInteger := dtm.tbMesaPedidoContador.AsInteger;
dtmP.tbControleCozinha.Post;
dtmP.conexao.CommitTrans;
end
else
begin
dtmP.conexao.BeginTrans;
dtmp.qry.Close;
dtmp.qry.SQL.Text:= ´UPDATE COZINHA SET QUANTIDADE =:QUANT,´+
´CODPROD = :CODPROD,DESCRICAO =:DESCRICAO WHERE (CODCHAVE = :CODCHAVE)´;
dtmp.qry.Parameters.ParamByName(´CODPROD´).Value := dtm.tbMesaPedidoCodProd.AsInteger;
dtmp.qry.Parameters.ParamByName(´DESCRICAO´).Value := dtm.tbMesaPedidoDescri.AsString;
dtmp.qry.Parameters.ParamByName(´QUANT´).Value := dtm.tbMesaPedidoQuant.AsFloat;
dtmp.qry.Parameters.ParamByName(´CODCHAVE´).Value := dtm.tbMesaPedidoContador.AsInteger;
dtmp.qry.ExecSQL;
dtmP.conexao.CommitTrans;
end;
end;
tbMesaPedido.FlushBuffers;
tbMesaPedido.Refresh;
end;
[b:e60720f175]ALGUÉM SABE SE PODE SER ALGO REFERENTE A TRANSAÇÃO? [/b:e60720f175]
Tenho um programa de Controle de Restaurantes que Funciona Em Delphi com Paradox e Access.
Tenho o Programa Principal que funciona Como Controle Cadastral,Financeiro, Estatístíco e Tambem controle de mesas ocupadas
,Livres,Reservadas e seus Respectivos pedidos. Quando Abro uma mesa e o cliente pede um Produto que vem da cozinha o Programa emvia automaticamente o pedido para uma tabela em access ´Cozinha´ quando eu altero uma informação referente ao produto no balcão a alteração e repassada para a cozinha até ai tudo bem o problema começa quando realizo uma troca de mesa,por exemplo:
Mesa (1) pela mesa (2) todos os dados da mesa 1 são automáticamente tranferidos para a mesa 2.
Tudo isso funciona perfeitamente em minha máquina de desenvolvimento
porém na máquina do cliente quando troco de mesa o produto que foi trocado não pode mais ser alterado ou excluido pelas rotinas que antes funcionavam no programa.
Lembrando que no programa que funciona na cozinha existe uma tabela chamada MesaPedido.db em PARADOX que quando manipulada paça os novos dados para a tabela cozinha em ACCESS pelos seus eventos afterpost,afterdelete, a baixo segue as rotinas que uso caso alguém possa me ajudar ficarei muito grato.
Obs: Volto a lembrar que a rotina a seguir funciona perfeitamente em minha máquina de desenvolvimento porém na máquina do cliente isso não acontece.
As duas máquinas rodam Windows XP professional SP2.
[b:e60720f175]Rotina para trocar de mesa[/b:e60720f175]
// ATUALIZANDO EVENTUAIS PEDIDOS NA COZINHA
dtmp.qry.Close;
dtmp.qry.SQL.Text:= ´UPDATE COZINHA SET NMESA =:NOVONUMERO WHERE (NMESA = :NMESA)´;
dtmp.qry.Parameters.ParamByName(´NOVONUMERO´).Value:= StrToInt(frmTrocaMesa.cbxMesaLivre.Text);
dtmp.qry.Parameters.ParamByName(´NMESA´).Value := StrToInt(frmTrocaMesa.cbxMesaOcupada.Text);
dtmp.qry.ExecSQL;
[b:e60720f175]Rotinas nos eventos da tabela MesaPedido trocar de mesa[/b:e60720f175]
[b:e60720f175]Depois que a rotina acima é esecutada todas as mudanças não são altualizadas na tabelas em ACCESS. [/b:e60720f175]
procedure Tdtm.tbMesaPedidoAfterPost(DataSet: TDataSet);
begin
if tbMesaPedidoCozinha.AsBoolean = true then
begin
if sStatus = ´I´ then
begin
dtmP.conexao.BeginTrans;
dtmP.tbControleCozinha.Append;
dtmP.tbControleCozinhaCodProd.AsInteger := dtm.tbMesaPedidoCodProd.AsInteger;
dtmP.tbcontroleCozinhaquantidade.AsFloat := dtm.tbMesaPedidoQuant.AsFloat;
dtmP.tbcontroleCozinhaDescricao.AsString := dtm.tbMesaPedidoDescri.AsString;
dtmP.tbControleCozinhaNMesa.AsInteger := dtm.tbMesaPedidoNMesa.AsInteger;
dtmP.tbControleCozinhaPronto.AsBoolean := false;
dtmP.tbControleCozinhaEntregue.AsBoolean := false;
dtmP.tbcontroleCozinhaCodChave.AsInteger := dtm.tbMesaPedidoContador.AsInteger;
dtmP.tbControleCozinha.Post;
dtmP.conexao.CommitTrans;
end
else
begin
dtmP.conexao.BeginTrans;
dtmp.qry.Close;
dtmp.qry.SQL.Text:= ´UPDATE COZINHA SET QUANTIDADE =:QUANT,´+
´CODPROD = :CODPROD,DESCRICAO =:DESCRICAO WHERE (CODCHAVE = :CODCHAVE)´;
dtmp.qry.Parameters.ParamByName(´CODPROD´).Value := dtm.tbMesaPedidoCodProd.AsInteger;
dtmp.qry.Parameters.ParamByName(´DESCRICAO´).Value := dtm.tbMesaPedidoDescri.AsString;
dtmp.qry.Parameters.ParamByName(´QUANT´).Value := dtm.tbMesaPedidoQuant.AsFloat;
dtmp.qry.Parameters.ParamByName(´CODCHAVE´).Value := dtm.tbMesaPedidoContador.AsInteger;
dtmp.qry.ExecSQL;
dtmP.conexao.CommitTrans;
end;
end;
tbMesaPedido.FlushBuffers;
tbMesaPedido.Refresh;
end;
[b:e60720f175]ALGUÉM SABE SE PODE SER ALGO REFERENTE A TRANSAÇÃO? [/b:e60720f175]
Desenvolvedor2
Curtidas 0