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