Re: [firebase-br] Não Gera Erro WITH LOCK

Anderson Miranda Barrozo andersonpaduarj em hotmail.com
Seg Jul 9 20:21:35 -03 2007


Jorge Henrique,

   A coisa ta mais complicada que eu pensava. Eu fiz o que vc falou mas 
continua a mesma coisa. Nao da erro. Veja o meu codigo abaixo. Eu criei uma 
funcao e coloquei evento afteredit.

procedure TTCadArea.TravaRegistro(Arquivo, Campo: String; DS:TDataSet);
var
//  TD: TTransactionDesc;
  IBSQL: TSQLDataSet;
begin
IBSQL := TSQLDataSet.Create(Application);
Try
   Randomize;
   { Abre uma transação para controlar o processamento todo }
   TD.TransactionID := Random(65635);
   TD.IsolationLevel := xilREADCOMMITTED;
   dm.Conexao.Params.Strings[11]:='False';
   DM.Conexao.StartTransaction(TD);
   IBSQL.SQLConnection := DM.Conexao;
   IBSQL.Close;
//   IBSQL.CommandText := 'UPDATE '+Arquivo+ ' SET '+Campo+' = '+Campo+' 
WHERE '+Campo+'='+Ds.FieldByName(Campo).AsString;
   IBSQL.CommandText := 'SELECT '+Campo+ ' FROM '+Arquivo+' WHERE 
'+Campo+'='+Ds.FieldByName(Campo).AsString+' WITH LOCK';
   Try
      IBSQL.Open;
   except on E: Exception do {Em caso de erro, aborta todo processamento }
      bEGIN
      SHOWMESSAGE('TRAVOU');
      if DM.Conexao.InTransaction then
         DM.Conexao.Rollback(TD);
      eND;
   End;
finally
   IBSQL.Free;
end;



//////////////////////////////////////////////////////////////////////////////////////////////////////


>From: Jorge Henrique - América Móveis<jorgehenrique em americamoveis.com>
>Reply-To: FireBase <lista em firebase.com.br>
>To: FireBase <lista em firebase.com.br>
>Subject: Re: [firebase-br] Não Gera Erro WITH LOCK
>Date: Mon, 09 Jul 2007 16:57:30 -0300
>
>Para configurar o parametro de transação para NO_WAIT, vc deve setar a
>propriedade "WaitOnLocks" do componente CONECTION para False. Faça isso
>antes de startar a transação.
>
>dbxConection.Params.Strings[11]:='False';
>
>[]´s
>
>Jorge Henrique
>
>Anderson Miranda Barrozo escreveu:
> >    Galera,
> >
> >        Me ajudem por favor. Executo o WITH LOCK e quando 2 clientes 
>estao
> > acessando o mesmo registro preciso que gere except. Inves disso o 
>cliente
> > que acessou o registro por ultimo fica aguardando até que o primeiro da
> > commit ou rolback.
> >
> >       Me informaram que tenho que passar minha applicação para NOWAIT. 
>Como
> > faço isto no FB 1.54 junto com DBEXpress.
> >
> > Anderson Miranda
> >
> > _________________________________________________________________
> > Inscreva-se no novo Windows Live Mail beta e seja um dos primeiros a 
>testar
> > as novidades-grátis. Saiba mais:
> > 
>http://www.ideas.live.com/programpage.aspx?versionId=5d21c51a-b161-4314-9b0e-4911fb2b2e6d
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para editar sua configuração na lista, use o endereço 
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> >
> >
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>Para editar sua configuração na lista, use o endereço 
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa

_________________________________________________________________
Chegou o Windows Live Spaces com rede social. Confira 
http://spaces.live.com/





Mais detalhes sobre a lista de discussão lista