Rendan 0 Denunciar post Postado Agosto 12, 2008 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
quintelab 91 Denunciar post Postado Agosto 12, 2008 Desculpa, não entendi qual o problema. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Rendan 0 Denunciar post Postado Agosto 16, 2008 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
quintelab 91 Denunciar post Postado Agosto 17, 2008 Pelo que reparei, seu primeiro insert esta sendo executado como ExecuteScalar, o correto seria o ExecuteNonQuery. De uma olhada nisso. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Rendan 0 Denunciar post Postado Agosto 20, 2008 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
quintelab 91 Denunciar post Postado Agosto 20, 2008 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