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

MySQL

Delphi

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 .
Luiz Silva

Luiz Silva

Curtidas 0

Respostas

Frank Lima

Frank Lima

02/06/2018

Boa Tarde, Voce esta usando ODBC??
GOSTEI 0
Luiz Silva

Luiz Silva

02/06/2018

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

Frank Lima

02/06/2018

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.
GOSTEI 0
Luiz Silva

Luiz Silva

02/06/2018

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?
GOSTEI 0
Frank Lima

Frank Lima

02/06/2018

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.
GOSTEI 0
Luiz Silva

Luiz Silva

02/06/2018

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

Frank Lima

02/06/2018

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
GOSTEI 0
Luiz Silva

Luiz Silva

02/06/2018

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?
GOSTEI 0
Frank Lima

Frank Lima

02/06/2018

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.
GOSTEI 0
Luiz Silva

Luiz Silva

02/06/2018

Será? Vou fazer uns testes amanhã. Qualquer coisa vc me ajuda?
GOSTEI 0
Frank Lima

Frank Lima

02/06/2018

Ajudo sim, só postar sua duvida certinho que eu te ajudo.
GOSTEI 0
POSTAR