Commit e Rollback mysql e delphi (Pra quem manja de delphi e mysql)

02/06/2018

0

Pessoal, meu sistema tem uma relação N - N de tabelas que servem para o movimento de estoque. Tabela Produto, Notas Fiscais e a entidade entre elas Itens que são os itens da nota. Fiz todos os procedimentos necessários e agora elas estão relacionadas por inner join e mestre detalhe. Minha dúvida é a seguinte: Quando a pessoa vai realizar um movimento abre-se um form para cadastrar a nota fiscal. Depois de salva a nota abre-se um outro form para lançar os itens da nota. Se a pessoa fechar essa janela mostra um mensagem que se ela fechar sem lançar nenhum item a nota anteriormente cadastrada será excluída/cancelada. Se ela lançar pelo menos um item beleza. No entanto isso não está funcionando ainda. Se a pessoa fechar a janela gostaria que a nota de antes que foi cadastrada seja desfeita/cancelada/excluída e sei que para isso preciso do rollback e do commit do mysql. Como posso porceder? Estou usando o Zeos para ligar com o banco e um data módule .
Luiz Silva

Luiz Silva

Responder

Posts

03/06/2018

Frank Lima

Boa Tarde, Voce esta usando ODBC??
Responder

03/06/2018

Luiz Silva

Não Zeoslib Mysql! Preciso muito de ajuda preciso entregar esse tcc até dia 27/06
Responder

03/06/2018

Frank Lima

Seguinte.eu faço assim na minha tabela de notas, quando abro o form de lançar os itens, eu nao lanço eles de verdade, eu lanço eles em uma tabela temporaria, ai so depois do usuario apertar a confirmação no meu caso usei o atalho f3 que eu jogo na tabela verdadeira. no meu caso a tabela itens_nota. se voce usar a tabela temporaria acho que vai resolver o seu problema. eu uso ado com ODBC, uso clientdataset como tabela temporaria.
Responder

03/06/2018

Luiz Silva

Sim mas no meu caso é se a pessoa não lançar nenhum item entao a nota anteriormente cadastrada deveria ser excluida. Preciso gravar a nota primeiro no banco para gerar a chave primaria e ir para a chave estrangeira da tabela itens. Como poderia fazer isso?
Responder

03/06/2018

Frank Lima

Voce salva a nota depois acrescenta os itens né??
se tiver query, voce usa assim, Ex: Query1.Last. e da um delete.
Ou faz no comando SQL, SELECT MAX(NOTA_COD) FROM NOTA; e da um delete.
Responder

03/06/2018

Luiz Silva

Ok vou tentar aqui mas deixa eu ver se entendi. O Delete eu vou deletar a nota ok? Mas o last serve pra que?
Responder

03/06/2018

Frank Lima

Se voce usar query como tabela, ele busca o ultimo registro da tabela, mas pelo jeito nao e query q vc usa né. nao sei como funciona zeos como conexao do mysql, se vc ADO com obdc vc usaria adoquery como tabela
Responder

03/06/2018

Luiz Silva

Não eu uso o componente zquery sim. Para realizar as consultas. No entanto se eu deletar a nota anterior quando for gerada outra o id da que foi excluida não vai ser pulado? Ou será que isso importa muito?
Responder

03/06/2018

Frank Lima

não é pulado, ai qd for gerar outro id ele pega o ultimo, tbm, por exemplo se a nota deleta o id era 18, a nova vai ser 18.
Responder

03/06/2018

Luiz Silva

Será? Vou fazer uns testes amanhã. Qualquer coisa vc me ajuda?
Responder

04/06/2018

Frank Lima

Ajudo sim, só postar sua duvida certinho que eu te ajudo.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar