Tengo un problema con una transacion. Yo tengo una funcion que abre mi transacion, otra comita y otra dar un Rollback. En todos los forma esta funcionando, pero yo tengo un otro forma que cerra mi caja. En este form yo hizo, asi:
if IniciaTransacao then
try
.. Pongo todos mis codigos aca.
Solo que hay una cosa. Dentro del Try, yo tengo procedures llamadas para hacer 2 INSERTS y abajo, despues destas procedures, yo tengo un UPDATE. Mira, mi UPDATE esta despues destas procedures, no se me lo entiende. Que hizo yo, puzo un error en neste UPDATE para hacer un teste para ver se ha grabado o no. Como estas en una transacion, no deberia grabar las mis procedures, pero estas grabando si. Yo saquei todos los ApplyUpdates en el AfterPost de mis CDS, pero aun estas grabando. Que puede ser esto? Abajo está mi Unit, se sirve para usteds hacer una verificacio mejor. En rojo estan las lineas donde queda el error con sua comentarios.
Código Delphi
[-]procedure TFrmEncerramento.Encerrar;
var
F: TextFile;
FrmRatVda: TFrmRatVda;
sMensagem: String;
nDia_Abertura: Integer;
sDT_Abertura: String;
begin
Btn_Encerrar.Enabled := False;
pbFechAll.Visible := True;
sNumLoj := FmtCamReg(FloatToStr(gLoja), 4, TIPO_NUM);
if not MapaCaxConsulta('', true) then
Exit;
if IniciaTransacao(DM_Principal.SoConn_GER) then
Try
Mapa_Caixa_Rel('');
Mapa_Caixa_Rel('');
RelDesp(DateToStr(gdat));
if ExisteFunRateio then begin
mbRateou := False;
Try
FrmRatVda := TFrmRatVda.Create(Self);
FrmRatVda.ShowModal;
Finally
FreeAndNil(FrmRatVda);
End;
if not mbRateou then begin
Warning('Sr. Operador. Rateio obrigatório.' + #13 + #13 +
'Favor selecionar funcionários da lista.');
BTN_Fechar.Enabled := True;
Btn_Encerrar.Enabled := True;
exit;
end
else
MM_Fechamento.Lines.add('Rateio Atualizado.');
end
else begin
MM_Fechamento.Lines.add('Não existem vendas a serem rateadas.');
AssignFile(F, gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_RAT +
'.SEQ');
if IOResult <> 0 then
begin
sMensagem := gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_RAT + '.SEQ';
raise Exception.Create(sMensagem);
end;
Rewrite(F);
CloseFile(F);
end; CB_Rateio.Checked := True;
AtualizaFunv; MM_Fechamento.Lines.add('Resumo das vendas realizado.');
CB_ResumoVendas.Checked := True;
AtualizaSecv; CB_ResumoPecas.Checked := True;
msMensDif := '';
mnRegLidRes := 0;
mnRegLidChq := 0;
mnRegLidTro := 0;
mnRegLidCli := 0;
mnRegLidDsp := 0;
mnRegLidVen := 0;
mnRegLidFis := 0;
mnRegLidLiv := 0;
mnRegLidLog := 0;
mnRegCntRes := ObtemRegArqRes;
mnRegCntChq := ObtemRegArqChq;
mnRegCntTro := ObtemRegArqTro;
mnRegCntCli := ObtemRegArqCli;
mnRegCntDsp := ObtemRegArqDsp;
mnRegCntVen := ObtemRegArqVen;
mnRegCntFis := ObtemRegArqFis;
mnRegCntLiv := ObtemRegArqLiv;
mnRegCntLog := ObtemRegArqLog;
AssignFile(F, gPATH_ENV +
'FLASH' +
FormatFloat('0000', gLoja) +
'.NET');
if IOResult <> 0 then begin
sMensagem := gPATH_ENV +
'FLASH' +
FormatFloat('0000', gLoja) +
'.NET';
raise Exception.Create(sMensagem);
end;
Rewrite(F);
GeraArqFla(F);
CloseFile(F);
AssignFile(F, gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_RES +
'.SEQ');
if IOResult <> 0 then
begin
sMensagem := gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_RES + '.SEQ';
raise Exception.Create(sMensagem);
end;
Rewrite(F);
GeraArqRes(F);
CloseFile(F);
if CompVal(mnRegCntRes, mnRegLidRes, cmpDiferente) then
msMensDif := msMensDif + #13 + 'RES - CNT: ' + FormatFloat('000000', mnRegCntRes) + ' LID: ' + FormatFloat('000000', mnRegLidRes);
AssignFile(F, gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_CHQ +
'.SEQ');
if IOResult <> 0 then
begin
sMensagem := gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_CHQ + '.SEQ';
raise Exception.Create(sMensagem);
end;
Rewrite(F);
GeraArqChq(F);
CloseFile(F);
if CompVal(mnRegCntChq, mnRegLidChq, cmpDiferente) then
msMensDif := msMensDif + #13 + 'CHQ - CNT: ' + FormatFloat('000000', mnRegCntChq) + ' LID: ' + FormatFloat('000000', mnRegLidChq);
AssignFile(F, gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_TRO +
'.SEQ');
if IOResult <> 0 then
begin
sMensagem := gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_TRO + '.SEQ';
raise Exception.Create(sMensagem);
end;
Rewrite(F);
GeraArqTro(F);
CloseFile(F);
if CompVal(mnRegCntTro, mnRegLidTro, cmpDiferente) then
msMensDif := msMensDif + #13 + 'TRO - CNT: ' + FormatFloat('000000', mnRegCntTro) + ' LID: ' + FormatFloat('000000', mnRegLidTro);
AssignFile(F, gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_CLI +
'.SEQ');
if IOResult <> 0 then
begin
sMensagem := gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_CLI + '.SEQ';
raise Exception.Create(sMensagem);
end;
Rewrite(F);
GeraArqCli(F);
CloseFile(F);
if CompVal(mnRegCntCli, mnRegLidCli, cmpDiferente) then
msMensDif := msMensDif + #13 + 'CLI - CNT: ' + FormatFloat('000000', mnRegCntCli) + ' LID: ' + FormatFloat('000000', mnRegLidCli);
AssignFile(F, gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_DSP +
'.SEQ');
if IOResult <> 0 then
begin
sMensagem := gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_DSP + '.SEQ';
raise Exception.Create(sMensagem);
end;
Rewrite(F);
GeraArqDsp(F);
CloseFile(F);
if CompVal(mnRegCntDsp, mnRegLidDsp, cmpDiferente) then
msMensDif := msMensDif + #13 + 'DSP - CNT: ' + FormatFloat('000000', mnRegCntDsp) + ' LID: ' + FormatFloat('000000', mnRegLidDsp);
AssignFile(F, gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_VEN +
'.SEQ');
if IOResult <> 0 then
begin
sMensagem := gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_VEN + '.SEQ';
raise Exception.Create(sMensagem);
end;
Rewrite(F);
GeraArqVenCapea(F);
CloseFile(F);
if CompVal(mnRegCntVen, mnRegLidVen, cmpDiferente) then
msMensDif := msMensDif + #13 + 'VEN - CNT: ' + FormatFloat('000000', mnRegCntVen) + ' LID: ' + FormatFloat('000000', mnRegLidVen);
AssignFile(F, gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_FIS +
'.SEQ');
if IOResult <> 0 then
begin
sMensagem := gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_FIS + '.SEQ';
raise Exception.Create(sMensagem);
end;
Rewrite(F);
GeraArqFisCapea(F);
CloseFile(F);
if CompVal(mnRegCntFis, mnRegLidFis, cmpDiferente) then
msMensDif := msMensDif + #13 + 'FIS - CNT: ' + FormatFloat('000000', mnRegCntFis) + ' LID: ' + FormatFloat('000000', mnRegLidFis);
AssignFile(F, gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_LIV +
'.SEQ');
if IOResult <> 0 then
begin
sMensagem := gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_LIV + '.SEQ';
raise Exception.Create(sMensagem);
end;
Rewrite(F);
GeraArqLivCapea(F);
CloseFile(F);
if CompVal(mnRegCntLiv, mnRegLidLiv, cmpDiferente) then
msMensDif := msMensDif + #13 + 'LIV - CNT: ' + FormatFloat('000000', mnRegCntLiv) + ' LID: ' + FormatFloat('000000', mnRegLidLiv);
AssignFile(F, gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_LOG +
'.SEQ');
if IOResult <> 0 then
begin
sMensagem := gPATH_ENV +
FormatDateTime('YYYYMMDD', mDt_Abertura) +
FormatFloat('000', gLoja) +
FormatFloat('00', gcd_caixa) +
FILE_LOG + '.SEQ';
raise Exception.Create(sMensagem);
end;
Rewrite(F);
GeraArqLog(F);
CloseFile(F);
if CompVal(mnRegCntLog, mnRegLidLog, cmpDiferente) then
msMensDif := msMensDif + #13 + 'LOG - CNT: ' + FormatFloat('000000', mnRegCntLog) + ' LID: ' + FormatFloat('000000', mnRegLidLog);
CB_Geracao.Checked := True;
Dm_Principal.SacParametro;
CopyFile(pChar(gPATH_BANCO + 'SAC_DB.FDB'),pChar(gPATH_BACKUP+ 'SAC_DB.FDB'), False);
InicializaTabelas;
CB_Inicializacao.Checked := True;
CDSINS.Close;
CDSINS.CommandText := ' UPDATE TB_SAC_PARAM_CAIXA SET' +
' FL_CX_ABERTO = ' + QuotedStr('N') +
' ,DT_ENCERRAMENTO = ' + QuotedStr(FormatDateTime('dd-mmm-yyyy', gDat)) +
' ,HR_ENCERRAMENTO = ' + QuotedStr(FormatDateTime('HH:NN:SS',Time));
CDSINS.Execute; CDSINS.Close;
gsDT_Encerramento := FormatDateTime('dd/mm/yyyy', gDat);
if Trim(msMensDif) <> '' then
Warning('- Sr.Operador, favor anotar a mensagem abaixo e avisar o CPD. Obrigado' + #13 + #13 +
' _ Módulo: Sac_Gerencial' + #13 +
' _ Programa: Encerramento [Verificação de Contadores com diferença]' + #13 +
' _ MENSAGEM:' + #13 + #13 + msMensDif);
Warning('Fechamento ConcluÍdo.');
MM_Fechamento.Lines.add('Fechamento concluido.');
BTN_Fechar.Enabled := True;
BTN_Fechar.SetFocus;
CommitTransacao(DM_Principal.SoConn_GER);
Except
on E: Exception do
begin
RollbackTransacao(DM_Principal.SoConn_GER);
Warning('.:: ERRO ::. Senhor Operador, por favor, comunique o erro ao CPD.' + #13 + #13 +
' _ Módulo: Sac_Gerencial' + #13 +
' _ Programa: Encerramento [Geração de Arquivos]' + #13 + #13 +
' .:: MENSAGEM ::.' + #13 + E.Message);
end;
End;
end;