Commit e Rollback mysql e delphi (Pra quem manja de delphi e mysql)
02/06/2018
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 .
Posts
Boa Tarde, Voce esta usando ODBC??
Não Zeoslib Mysql! Preciso muito de ajuda preciso entregar esse tcc até dia 27/06
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.
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?
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.
Ok vou tentar aqui mas deixa eu ver se entendi. O Delete eu vou deletar a nota ok? Mas o last serve pra que?
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
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?
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.
Será? Vou fazer uns testes amanhã. Qualquer coisa vc me ajuda?
Ajudo sim, só postar sua duvida certinho que eu te ajudo.