Ir para conteúdo

POWERED BY:

Arquivado

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

Rendan

Problema ao Recuperar ID de Tabela com transação

Recommended Posts

Estou com um problema semelhante mas estou usando um transação e não está funcionando mensagem de erro após tentar recuperar o ID:

 

ExecuteScalar requer que o comando tenha uma transação quando a conexão atribuída ao comando estiver em uma transação local pendente. A propriedade Transaction do comando não foi inicializada.

 

Segue o código:

 

Using connection As New OleDbConnection(System.Configuration.ConfigurationManager.AppSettings("DadosBanco"))
			Dim command As New OleDbCommand()
			Dim transaction As OleDbTransaction
			command.Connection = connection
			Try
				connection.Open()
				transaction = connection.BeginTransaction()
				command.Connection = connection
				command.Transaction = transaction
				command.CommandText = _
						"Insert into BLOQUETOS (BLQNOSNUM, NumeroDocumento, BLQFISJUR, BLQREGCOD, BLQDATEMIS, BLQDATVCT, BLQVAL, BLQMUL, BLQJUR, BLQMSG1, BLQMSG2, BLQMSG3, BLQMSG4, BLQMSG5, Usuario, Data, Acao, Sessao) VALUES ('" & NumeroBoleta & "', '" & NumeroDocumento & "', 'F', " & HSerial.Value & ", '" & DataPrep.DataAAAAmmddhhmmss(Emissao.Text & " " & DateAndTime.Hour(DateAndTime.Now) & ":" & DateAndTime.Minute(DateAndTime.Now)) & "', '" & VencimentoParcela & "', " & Replace(ValorTotalBoleta, ",", ".") & ", " & Replace(ValorTotalBoleta36, ",", ".") & ", " & Replace(ValorTotalBoleta37, ",", ".") & ", '" & BLQMSG(0) & "', '" & BLQMSG(1) & "', '" & BLQMSG(2) & "', '" & BLQMSG(3) & "', '" & BLQMSG(4) & "', '" & Session("LoginUsuario") & "', '" & DataPrep.DataAAAAmmddhhmmss(DateAndTime.Now) & "', 'Boletas-Inclusão', '" & Session("vSessao") & "')"

				  command.ExecuteScalar()
				  Try
						command = New OleDbCommand("SELECT @@IDENTITY", connection)
						command.CommandType = CommandType.Text
						CodigoBloqueto = command.ExecuteScalar()
					Catch ex As Exception
						Try
							transaction.Rollback()
						Catch

						End Try
						txtErro.Text &= "Um erro ocorreu ao tentar recuperar o ID.<br> " & Err.Description & "<hr>"
						txtErro.Visible = True
						MsgErro.Visible = True
						Erro.Text &= txtErro.Text
						Erro.Visible = True
						Exit Sub
					End Try

					command.CommandText = _
									"Insert into PARCELAS (COD, BLQNOSNUM, BLQCODSER, [Parcela Numero], [Numero de Parcelas], BLQINIFIM, BLQVALSER, FJ, Usuario, Data, Acao, DividaAtiva) VALUES ('" & CodigoBloqueto & "', '" & NumeroBoleta & "', '" & dr("BLQSERVICO") & "', " & J & ", " & Parcelas.SelectedValue & ", '" & dr("Origem") & "', " & Replace(ValParcelaServico(I), ",", ".") & ", 'F', '" & Session("LoginUsuario") & "', '" & DataPrep.DataAAAAmmddhhmmss(DateAndTime.Now) & "', 'Boletas-Inclusão', " & Divida.Checked & ")"
					command.ExecuteNonQuery()
					
					transaction.Commit()

Catch ex As Exception
				txtErro.Text &= "Um erro ocorreu ao tentar gerar valores em serviços para o Bloqueto.<br>" & Err.Description & "<hr>"
				txtErro.Visible = True
				MsgErro.Visible = True
				Erro.Text &= txtErro.Text
				Erro.Visible = True
				Try
					transaction.Rollback()
				Catch

				End Try
			End Try
End Using

Muito Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consigo recuperar o ID (Chave Primária) da tabela para o cadastro em outra tabela.

 

O Erro é o seguinte:

 

ExecuteScalar requer que o comando tenha uma transação quando a conexão atribuída ao comando estiver em uma transação local pendente. A propriedade Transaction do comando não foi inicializada

O Código é o mostrado abaixo.

 

Using connection As New OleDbConnection(System.Configuration.ConfigurationManager.AppSettings("DadosBanco"))
			Dim command As New OleDbCommand()
			Dim transaction As OleDbTransaction
			command.Connection = connection
			Try
				connection.Open()
				transaction = connection.BeginTransaction()
				command.Connection = connection
				command.Transaction = transaction
				command.CommandText = _
						"Insert into BLOQUETOS (BLQNOSNUM, NumeroDocumento, BLQFISJUR, BLQREGCOD, BLQDATEMIS, BLQDATVCT, BLQVAL, BLQMUL, BLQJUR, BLQMSG1, BLQMSG2, BLQMSG3, BLQMSG4, BLQMSG5, Usuario, Data, Acao, Sessao) VALUES ('" & NumeroBoleta & "', '" & NumeroDocumento & "', 'F', " & HSerial.Value & ", '" & DataPrep.DataAAAAmmddhhmmss(Emissao.Text & " " & DateAndTime.Hour(DateAndTime.Now) & ":" & DateAndTime.Minute(DateAndTime.Now)) & "', '" & VencimentoParcela & "', " & Replace(ValorTotalBoleta, ",", ".") & ", " & Replace(ValorTotalBoleta36, ",", ".") & ", " & Replace(ValorTotalBoleta37, ",", ".") & ", '" & BLQMSG(0) & "', '" & BLQMSG(1) & "', '" & BLQMSG(2) & "', '" & BLQMSG(3) & "', '" & BLQMSG(4) & "', '" & Session("LoginUsuario") & "', '" & DataPrep.DataAAAAmmddhhmmss(DateAndTime.Now) & "', 'Boletas-Inclusão', '" & Session("vSessao") & "')"

				  command.ExecuteScalar()
				  Try
						command = New OleDbCommand("SELECT @@IDENTITY", connection)
						command.CommandType = CommandType.Text
						CodigoBloqueto = command.ExecuteScalar()
					Catch ex As Exception
						Try
							transaction.Rollback()
						Catch

						End Try
						txtErro.Text &= "Um erro ocorreu ao tentar recuperar o ID.<br> " & Err.Description & "<hr>"
						txtErro.Visible = True
						MsgErro.Visible = True
						Erro.Text &= txtErro.Text
						Erro.Visible = True
						Exit Sub
					End Try

					command.CommandText = _
									"Insert into PARCELAS (COD, BLQNOSNUM, BLQCODSER, [Parcela Numero], [Numero de Parcelas], BLQINIFIM, BLQVALSER, FJ, Usuario, Data, Acao, DividaAtiva) VALUES ('" & CodigoBloqueto & "', '" & NumeroBoleta & "', '" & dr("BLQSERVICO") & "', " & J & ", " & Parcelas.SelectedValue & ", '" & dr("Origem") & "', " & Replace(ValParcelaServico(I), ",", ".") & ", 'F', '" & Session("LoginUsuario") & "', '" & DataPrep.DataAAAAmmddhhmmss(DateAndTime.Now) & "', 'Boletas-Inclusão', " & Divida.Checked & ")"
					command.ExecuteNonQuery()
					
					transaction.Commit()

Catch ex As Exception
				txtErro.Text &= "Um erro ocorreu ao tentar gerar valores em serviços para o Bloqueto.<br>" & Err.Description & "<hr>"
				txtErro.Visible = True
				MsgErro.Visible = True
				Erro.Text &= txtErro.Text
				Erro.Visible = True
				Try
					transaction.Rollback()
				Catch

				End Try
			End Try
End Using

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já usei ExecuteNonQuery antes.

 

O Erro está no segundo Try do Select ID

 

command = New OleDbCommand("SELECT @@IDENTITY", connection)
						command.CommandType = CommandType.Text
						CodigoBloqueto = command.ExecuteScalar()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não costumo trabalhar com transação, mas tente duas coisas, a primeira é passar sua variavel de transação pro seu command.

command = New OleDbCommand("SELECT @@IDENTITY", connection, transaction)
command.CommandType = CommandType.Text
CodigoBloqueto = command.ExecuteScalar()

Se ainda não der certo, crie uma variável command só para este select ao invés de usar a mesma para várias execuções.

 

Abraços...

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.