[firebase-br] Problema com transação

NextCorp Informática nextcorp em terra.com.br
Ter Jul 15 22:23:41 -03 2008


Não funcionou

Segue a rotina

procedure TfmSelEmiteBoleto.xpbtImprimirClick(Sender: TObject);
begin
  {Abre a transação}
  if not IB_Transaction1.InTransaction then
     IB_Transaction1.StartTransaction;
  xpbtImprimir.Cursor:= crHourGlass;
  with dmDados.IBO_qryRelatorio1 do
     begin
          Close;
          SQL.Clear;
          SQL.Add('Select a.*, b.cli_codigo, b.cli_nome, b.cli_num_contrato, 
b.cli_ende, b.cli_cidade, b.cli_uf, b.cli_bairro, b.cli_cep, 
b.cli_complemento, b.cli_cpf,');
          SQL.Add('b.cli_correspondencia, b.cli_ende_corr, 
b.cli_cidade_corr, b.cli_uf_corr, b.cli_bairro_corr, b.cli_cep_corr, 
b.cli_complemento_corr,');
          SQL.Add('c.ced_razao, c.ced_cnpj, c.ced_cpf, c.ced_codcedban, 
c.ced_codcedban_dv, c.ced_carteira, c.ced_especie_tit, c.ced_agencia, 
c.ced_agencia_dv,');
          SQL.Add('c.ced_tipo_pessoa, c.ced_banco, c.ced_conta, 
c.ced_conta_dv, d.ban_instrucoes');
          SQL.Add('from contas_receber a Join clientes b On a.cre_cli_codigo 
= b.cli_codigo Join cedente c On a.cre_ced_codigo = c.ced_codigo Join bancos 
d On c.ced_banco = d.ban_numero');
          if rgSelecao.ItemIndex = 0 then   // geral
             SQL.Add('where (cre_pago = ''N'') and (cre_prn = ''N'')')
          else if rgSelecao.ItemIndex = 1 then // plano
                  begin
                      SQL.Add('where (cre_pago = ''N'') and (cre_prn = 
''N'') and (cli_tipo_plano = :wtipo)');
                      ParamByName('wtipo').AsInteger:= wtipo_plano;
                  end
          else if rgSelecao.ItemIndex = 2 then // clientes
                  begin
                      SQL.Add('where (cre_pago = ''N'') and (cre_prn = 
''N'') and (cli_codigo between :wcodini and :wcodfin)');
                      ParamByName('wcodini').AsInteger:= 
dmLookUp.IB_qryClientesLk1.FieldByName('cli_codigo').asInteger;
                      ParamByName('wcodfin').AsInteger:= 
dmLookUp.IB_qryClientesLk2.FieldByName('cli_codigo').asInteger;
                  end;
          SQL.Add('order by cre_nosso_numero');
          Open;
          if IsEmpty then
             begin
                 ShowMessage('Não há registros a imprimir !!!');
                 xpbtImprimir.Cursor:= crDefault;
                 Abort;
             end
          else
             begin
                 fmqrEmiteBoleto:= TfmqrEmiteBoleto.Create(self);   // 
criando formulario
                 fmqrEmiteBoleto.QRLBDataDocFC.Caption:= DateToStr(Date);
                 fmqrEmiteBoleto.QRLBDataProcFC.Caption:= DateToStr(Date);
                 while not dmDados.IBO_qryRelatorio1.Eof do
                      begin
                         with fmqrEmiteBoleto do
                            begin
                              qrEmiteBoleto.Preview;
                              Free;
                            end;
                      end;
                 xpbtImprimir.Cursor:= crDefault;
                 {muda a cre_prn para sim}
                 Try
                   with dmDados.IB_StoredProc1 do
                      begin
                          Close;
                          StoredProcName:= 'SP_BOLETO_IMPRESSO';
                          ParamByName('WPLANO').asInteger:= wtipo_plano;
                          ParamByName('WCODINI').asInteger:= 
dmLookUp.IB_qryClientesLk1.FieldByName('cli_codigo').asInteger;
                          ParamByName('WCODFIN').asInteger:= 
dmLookUp.IB_qryClientesLk2.FieldByName('cli_codigo').asInteger;
                          if not Prepared then
                             Prepare;
                          ExecProc;
                          if MessageDlg('Confirmar a transação 
?',mtConfirmation,[mbYes,mbNo],0)= mrYes then
                             IB_Transaction1.Commit
                          else
                             IB_Transaction1.Rollback;
                      end;
                 Except
                   on Exc: Exception do
                     begin
                       IB_Transaction1.Rollback;
                       showmessage('Aconteceu a 
Advertência:'+#13#13+Exc.Message);
                     end;
                 End;
           end;
     end;
  IB_LkCCliente1.Enabled:= False;
  IB_LkCCliente2.Enabled:= False;
  IB_LkCPlano.Enabled:= False;
  xpbtImprimir.Enabled:= False;
  rgSelecao.ItemIndex:= -1;
end;


----- Original Message ----- 
From: "Carlos H. Cantu (TeamFB)" <listas em warmboot.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, July 15, 2008 4:28 PM
Subject: Re: [firebase-br] Problema com transação


Sugiro que vc coloque um IB_Transaction e associe os componentes
envolvidos no processo diretamente a ele. Antes de começar, de um
starttransaction, e depois um rollback ou commit (conforme for o
caso).

[]s
Cantu (Membro do TeamFB - FireBase)
http://www.warmboot.com.br
FireBase - http://www.FireBase.com.br
Blog - http://blog.firebase.com.br

NI> Caros colegas

NI> Estou com um problema com transações que estão me deixando louco. Uso 
delphi
NI> 5, IBO.

NI> Abro a transação
NI> imprime boletos
NI> executa uma sp que passa o campo impresso para Sim
NI> no final pergunto: Confirma a transação ????

NI> Mesmo clicando em Não, onde dá o rollback, ele não desfaz as alterações 
do
NI> campo impresso = Sim

NI> Minhas configurações do IBO transaction estão como autocommit false e
NI> readcommit marcado.

NI> Não consigo descobrir o por que de estar confirmando mesmo marcando como
NI> não.

NI> Alguma luz ????


NI> Atenciosamente

NI> Washington André Muller da silva

NI> #######################
NI> NextCorp Informática Ltda
NI> www.nextcorp.com.br
NI> nextcorp em terra.com.br
NI> 0xx-(51)-3037-6605
NI> #######################


NI> ______________________________________________
NI> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
NI> Para saber como gerenciar/excluir seu cadastro na lista, use:
NI> http://www.firebase.com.br/fb/artigo.php?id=1107
NI> Para consultar mensagens antigas: http://firebase.com.br/pesquisa


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa

E-mail verificado pelo Terra Anti-Spam.
Para classificar esta mensagem como spam ou não spam, visite
http://mail.terra.com.br/cgi-bin/reportspam.cgi?+_d=SCY0NzQ4MTEjcGVybSF0ZXJyYSYxLDEyMTYxNTAxMzkuOTI3Mzc5LjI0MTU5LmFsZGFicmEuaHN0LnRlcnJhLmNvbS5iciw0NTc3
Verifique periodicamente a pasta Spam para garantir que apenas mensagens
indesejadas sejam classificadas como Spam.



No virus found in this incoming message.
Checked by AVG - http://www.avg.com
Version: 8.0.138 / Virus Database: 270.4.11/1554 - Release Date: 15/07/2008 
18:03







Mais detalhes sobre a lista de discussão lista