Ir para conteúdo

POWERED BY:

Arquivado

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

Dh-00

Commit e rollback com access usando Vb.net

Recommended Posts

Tentei implementar alguns códigos de transações que achei na internet, mas não obtive sucesso.

 

Gostaria de saber se alguem tem algum exemplo de como se trabalhar com transações utilizando vb.net + access.

 

Estou utilizando vb express 2008 + access 2003 + oledb

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Plataforma .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET » Windows Applications

 

De uma olhada nesse artigo: http://www.vb-helper.com/howto_net_db_transaction.html

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Plataforma .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET » Windows Applications

 

De uma olhada nesse artigo: http://www.vb-helper.com/howto_net_db_transaction.html

 

Abraços...

 

quintelab, consegui fazer o commit, porem estou com problemas no rollback, quando coloco ele dentro do bloco de exceção o compilador da erro.

 

 

Dim trans As OleDb.OleDbTransaction = conn.BeginTransaction(IsolationLevel.ReadCommitted)

						Dim cmd_insert = New OleDb.OleDbCommand(sql, conn, trans)

						'monta os paremtros
						With cmd_insert.Parameters
							.Add(New OleDb.OleDbParameter("@ID_ESCOLA", v_id_escola))
							.Add(New OleDb.OleDbParameter("@ANO_LETIVO", txt_ano.Text.Trim))
							.Add(New OleDb.OleDbParameter("@DSC_ANO_LETIVO", txt_desc.Text.Trim))
							.Add(New OleDb.OleDbParameter("@DSC_TURMA", txt_turma.Text.Trim))
							.Add(New OleDb.OleDbParameter("@ID_TIPO_TURMA", v_id_turma))
							.Add(New OleDb.OleDbParameter("@DSC_SALA", txt_sala.Text.Trim))
							.Add(New OleDb.OleDbParameter("@ID_TIPO_CURSO", v_id_curso))
							.Add(New OleDb.OleDbParameter("@ID_TIPO_SERIE", v_id_serie))
							.Add(New OleDb.OleDbParameter("@ID_TIPO_TURNO", v_id_turno))
							.Add(New OleDb.OleDbParameter("@USUARIO", Frm_principal.lbl_usuario.Text.Trim))
						End With

						cmd_insert.ExecuteNonQuery()

						trans.Commit()

						MsgBox("Cadastro de nova sala realizado com sucesso!", MsgBoxStyle.Information, "Aviso!")
						Limpa_campos()
					End If

				Catch ex As Exception
					MsgBox("Houve um erro no cadastro da nova turma!" + Chr(13) + ex.Message)
					 trans.rollback() --> Diz que este metodo nao é valido  
				Finally
					If (conn.State = ConnectionState.Open) Then
						conn.Close()
					End If
				End Try

 

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual erro? Só aparece esta mensagem?

Dei uma olhada no artigo aparentemente esta OK.

 

Abraços...

O erro da justamente no trecho de exception, diz que o metodo trans nao existe.

 

Catch ex As Exception

MsgBox("Houve um erro no cadastro da nova turma!" + Chr(13) + ex.Message)

trans.rollback() --> Diz que este metodo nao é valido

 

Aproveitando a deixa, gostaria de uma ajudinha em transações encadeadas, como faria elas:

Exemplo:

 

Classe 1 cria registro na tabela

Classe 1 chama metodo da classe lib para processar o registro criado

 

Gostaria de ter esse controle de transação, tanto na classe 1 quanto na classe LIB, ou seja, se alguma delas falhar deverá ser executado um rollback total do processamento.

 

Fiz um teste passando a variavel trans como referencia para o metodo que quero processar na classe lib, mas nao deu certo.

 

Preciso fazer isso em meu projeto, pois existem cenarios que deixam o banco muito inconsistente, pois o access efetua commit automatico do processamento....

 

Obrigado!

 

abs

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.