Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

renan.mafra

Em caso de erro na Transação como manter a SESSION ?

Recommended Posts

Olá pessoal,

 

Tenho uma página de finalização de transação que faz um SELECT, depois faz um UPDATE e depois faz um INSERT no banco de dados.

 

Quando faço o SELECT eu pego um valor que esta numa tabela, nesse valor

eu acrescento um novo valor, somando os dois, e guardo numa sessão,

depois esse novo valor vai para a mesma tabela com o comando UPDATE e

vai para uma outra tabela denominada TRANSACAO através do comando

INSERT.

 

Bom... digamos que o servidor caiu bem no meio disso tudo, aí eu coloquei

o con.BeginTrans no topo e con.CommitTrans no final, aí eu me resguardo com

relação ao banco de dados, mais a minha dúvida é a seguinte:

 

E a SESSION ela vai ficar com o valor alterado, como faço para se a transação

der errado em qualquer ponto, a session inicial fique mantida ???

 

Abraço a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

naum teria como tratar o erro com o on error resume next ?

se nuam me engano, acontecendo o erro na transação, ele retornaria esse erro pro ADO...

ae você poderia trata-lo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Eu estou tentando usar o @TRANSACTION,

 

No topo da página eu estou usando o seguinte:

 

<%@ TRANSACTION=REQUIRED%>

<%

response.Buffer = true

 

SUB OnTransactionAbort

response.Clear

%>

<html>

<center>

Desculpe-nos ocorreu um erro<br>

<a href="<%=request.ServerVariables("SCRIPT_NAME")%>">Clique aqui</a> e tente novamente.

</center>

<%

END SUB

 

Ou seja pelo que li num forum, quando ocorrer um erro aparece a mensagem de erro,

quando fiz um exemplo simples chamando um objeto inexistente, ocorreu tudo

beleza, mais quando coloquei no meu código, apareceu o seguinte erro:

 

Provider error '80004002'

 

No such interface supported

 

/analisa_pagamento.asp, line 76

 

e a linha 76 é justamente essa:

 

rs.open sqlstring

 

e quando não uso o TRANSACTION ocorre tudo normalmente, ou seja não é

problema no código, por que o TRANSACTION não esta funcionando ?

 

A idéia seria restabelecer a session no evento OnTransactionAbort

 

Alguém pode dar essa mão ?? to quebrando a mufa aqui.

 

Abraço !

Compartilhar este post


Link para o post
Compartilhar em outros sites

que eu saiba a session não morre só pq o seu aplicativo deu erro... só morre quando você fexa o browser ou ordena com um session.abandon

 

me corrijam se estiver enganado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal,

 

Tenho uma página de finalização de transação que faz um SELECT, depois faz um UPDATE e depois faz um INSERT no banco de dados.

 

Quando faço o SELECT eu pego um valor que esta numa tabela, nesse valor

eu acrescento um novo valor, somando os dois, e guardo numa sessão,

depois esse novo valor vai para a mesma tabela com o comando UPDATE e

vai para uma outra tabela denominada TRANSACAO através do comando

INSERT.

 

Bom... digamos que o servidor caiu bem no meio disso tudo, aí eu coloquei

o con.BeginTrans no topo e con.CommitTrans no final, aí eu me resguardo com

relação ao banco de dados, mais a minha dúvida é a seguinte:

 

E a SESSION ela vai ficar com o valor alterado, como faço para se a transação

der errado em qualquer ponto, a session inicial fique mantida ???

 

Abraço a todos

Opa!

 

Acho q é simples seu caso kra, use os métodos de transacao da conexao mesmo como você sugeriu no começo. É mais simples e não tem erro.

 

Quando à questão da session, como seu código está num mesmo módulo (página) atribua o valor novo somente no final da rotina, assim ele sempre será o certo, enquanto não terminar a rotina guarde numa variável comum mesmo.

 

E sobre a possibilidade de cair o servidor, se isso acontecer mesmo nem Jesus Cristo recupera sua session kra, já que ela estaria na ram do server...

 

Abrazzzz

Compartilhar este post


Link para o post
Compartilhar em outros sites

hummm é verdade.. o fernando ta certo..

 

mas você pode usar uma tabela no banco de dados pra guardar o valor da session... assim você não perde ela.. é só usar um campo com o codigo da transação pra identificação..

 

ai você pode estudar o melhor procedimento pra retomar a transação depois..

 

 

um abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.