PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Transações no MySQL #287435

08/07/2005

0

Pessoal, eu não estou conseguindo usar transações com DBExpress no banco MySQL. Estou fazendo no esquema que o pessoal está usando no fórum e nas maiorias de exemplos, mas ele não executa nem o rollback e nem o commit. Eu coloquei um SQLMonitor para verificar e realmente ele não manda o comando de rollback e commit somente inicia a transação para o banco de dados, segue abaixo o trecho do codigo:

begin
try
Transacao.TransactionID:= 1;
Transacao.IsolationLevel:= xilReadCommitted;
FrmPrincipal.SQLConnection1.StartTransaction(Transacao);
Hora.Caption:= FormatDateTime(´HH:MM:SS´,Time);
RsAuxiliar.SQL.Text:= ´Insert Into Vendas (Data, CodClie, Vendedor, Desconto, Acrescimo, Obs, Hora, Portador, Total, Vezes) ´
+´Values (´´+FormatDateTime(´yyyy/mm/dd´,StrToDate(TxtData.Text))+´´, ´´+TxtCodForn.Text+´´, ´´+ListCodVend.Items[TxtVendedor.Items.IndexOf(TxtVendedor.Text)]+´´, ´
+´´´+ConvertFloat(TxtDesconto.Text)+´´, ´´+ConvertFloat(TxtAcrescimo.Text)+´´,´
+´´´+RemoveAcento(TxtObs.Lines.Text)+´´, ´´+Hora.Caption+´´, ´´+TxtPortador.Text+´´, ´´+ConvertFloat(TxtTotal.Text)+´´, ´´+TxtQuant.Text+´´)´;
RsAuxiliar.ExecSQL;

RsForn.Close;
RsForn.DataSet.CommandText:= ´Select a.Codigo as CodVenda, a.Data, a.Hora, a.CodClie, a.Vezes, a.Desconto, a.Acrescimo, a.Obs, a.Vendedor as CodVend, a.Portador, b.Codigo, b.Nome, c.Codigo as CodVendedor, c.Login as Vendedor ´
+´From Vendas as a left join Clientes as b, Vendedores as c on (a.CodClie = b.Codigo) Where (a.Vendedor = c.Codigo) and a.CodClie = ´´+FormatFloat(´#´,StrToFloat(LTrim(TxtCodForn.Text)))+´´ ´
+´and a.Data = ´´+FormatDateTime(´yyyy/mm/dd´,StrToDate(TxtData.Text))+´´ and a.Hora = ´´+Hora.Caption+´´´;
RsForn.Open;
Mostra_Dados;
for i:=1 to Grid1.RowCount -1 do begin
RsComp.SQL.Text:=´Select Estoque from Mercadorias Where Codigo = ´+Grid1.Cells[0,i]+´ Limit 1´;
RsComp.Open;

RsAuxiliar.SQL.Text:=´Update Mercadorias Set Estoque = ´´+FloatToStr(RsComp.FieldByName(´Estoque´).AsFloat - StrToInt(LTrim(Grid1.Cells[2,i])))+´´ ´
+´Where Codigo = ´+Grid1.Cells[0,i];
RsAuxiliar.ExecSQL;

RsAuxiliar.SQL.Text:=´Insert Into VendasDet (CodVenda, CodMerc, Qtd, Valor, Data, Hora, Pendencia) Values (´´+TxtCodigo.Text+´´, ´
+´´´+Grid1.Cells[0,i]+´´, ´´+Grid1.Cells[2,i]+´´, ´´+ConvertFloat(Grid1.Cells[3,i])+´´, ´´+FormatDateTime(´yyyy/mm/dd´,StrToDate(TxtData.Text))+´´, ´
+´´´+Hora.Caption+´´, ´´´+Pendencia.Strings[CodMerc.IndexOf(LTrim(Grid1.Cells[0,i]))]+´´´)´;
RsAuxiliar.ExecSQL;
end;
for i:=0 to CodMerc.Count -1 do begin
LocalLinha:= MLinha.Items[i];
if high(LocalLinha^.Serial) > -1 then
for j:=0 to high(LocalLinha^.Serial) do begin
RsAuxiliar.SQL.Text:=´Update Serial Set CodVenda = ´´´+TxtCodigo.Text+´´´ Where CodMerc = ´´´+CodMerc.Strings[i]+´´´ and Serial = ´´´+LocalLinha^.Serial[j]+´´´´;
RsAuxiliar.ExecSQL;
end;
end;
FrmPrincipal.SQLConnection1.Commit(Transacao);
except
on Exc : Exception do begin
MessageDlg(´Ocorreu um erro na tentativa de inclusão do registro: ´+Exc.Message,mtError,[mbOk],0);
FrmPrincipal.SQLConnection1.Rollback(Transacao);
end;
end;


o que será que acontece?


Bruno Cassucci

Bruno Cassucci

Responder

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

Aceitar