Usuário com melhor resposta
IDENTITY_INSERT Definido como OFF

Pergunta
-
Estou tentando inserir dados em uma tabela com o retorno do ID do novo registro, porém ao executar, aparece a seguinte mensagem:
Código:
Public Function insereAcordo(strConexao As String, strAcordo As String) As Boolean Dim conn As New SqlConnection Dim strVAL() As String Dim cmd As New SqlCommand Dim idAC As Long conn.ConnectionString = strConexao conn.Open() strVAL = Split(strAcordo, ";") Try With cmd .CommandType = CommandType.StoredProcedure .CommandText = "sp_InsereAcordo" .Connection = conn .Parameters.Add(New SqlParameter("@idUnidade", SqlDbType.Int)).Value = strVAL(0) .Parameters.Add(New SqlParameter("@dataAcordo", SqlDbType.DateTime)).Value = strVAL(1) .Parameters.Add(New SqlParameter("@valorParcelado", SqlDbType.Float)).Value = strVAL(2) .Parameters.Add(New SqlParameter("@valorAdvogado", SqlDbType.Float)).Value = strVAL(3) .Parameters.Add(New SqlParameter("@quantidadeParcelas", SqlDbType.Int)).Value = strVAL(4) .Parameters.Add(New SqlParameter("@valorDaParcela", SqlDbType.Float)).Value = strVAL(5) .Parameters.Add(New SqlParameter("@vencPrimeiraParcela", SqlDbType.DateTime)).Value = strVAL(6) .Parameters.Add(New SqlParameter("@diaVencDemaisParcelas", SqlDbType.NChar)).Value = strVAL(7) .Parameters.Add(New SqlParameter("@acordoJudicial", SqlDbType.Bit)).Value = IIf(strVAL(8) = "0", 0, 1) .Parameters.Add(New SqlParameter("@numeroProcesso", SqlDbType.Int)).Value = strVAL(9) .Parameters.Add(New SqlParameter("@digitoNumeroProcesso", SqlDbType.NChar)).Value = strVAL(10) .Parameters.Add(New SqlParameter("@anoNumeroProcesso", SqlDbType.NChar)).Value = strVAL(11) .Parameters.Add(New SqlParameter("@orgaoJudiciario", SqlDbType.NChar)).Value = strVAL(12) .Parameters.Add(New SqlParameter("@tribunal", SqlDbType.NChar)).Value = strVAL(13) .Parameters.Add(New SqlParameter("@comarca", SqlDbType.NChar)).Value = strVAL(14) .Parameters.Add(New SqlParameter("@id_Advogado", SqlDbType.BigInt)).Value = strVAL(15) .Parameters.Add(New SqlParameter("@observacoes", SqlDbType.NVarChar)).Value = strVAL(16) .Parameters.Add(New SqlParameter("@id_AcordoFinanceiro", SqlDbType.Int, 0, "id_AcordoFinanceiro")) .Parameters("@id_AcordoFinanceiro").Direction = ParameterDirection.Output .ExecuteNonQuery() End With idAC = cmd.Parameters("@id_AcordoFinanceiro").Value
[b]Sergio Ivanenko[/b]
- Editado Ivanenko terça-feira, 3 de novembro de 2015 04:31
Respostas
-
Ivan, estou com sono e acabei deixando passar, novamente.
No teu INSERT INTO, tu estás tentando inserir um valor no id_AcordoFinanceiro (última coluna do INSERT).
Tente tirar o esse último valor que acredito que dará certo.
Att., Rafael Simor
Todas as Respostas
-
Boa noite.
Tu não podes colocar um valor explícito para a coluna de identidade (Id da tabela que será auto_increment), possivelmente isso aqui:
.Parameters.Add(New SqlParameter("@id_AcordoFinanceiro", SqlDbType.Int, 0, "id_AcordoFinanceiro"))
Att., Rafael Simor
-
Rafael.
Alterei, porém continua a mesma mensagem.
.Parameters.Add(New SqlParameter("@id_AcordoFinanceiro", SqlDbType.Int)) .Parameters("@id_AcordoFinanceiro").Direction = ParameterDirection.Output .ExecuteNonQuery() End With
[b]Sergio Ivanenko[/b]
- Editado Ivanenko terça-feira, 3 de novembro de 2015 04:59
-
Verifique se tua Stored Procedure não tenta inserir um valor no ID.
O valor do Id que será auto_increment não deve ser definido por ti; deixe que o banco resolva este valor.
Obs.: deixei passar o ParameterDirection.Output. Erro meu.
Att., Rafael Simor
- Editado SimorC terça-feira, 3 de novembro de 2015 05:00
-
Não estou inserindo o ID, ele é auto incremento.
ALTER PROCEDURE [dbo].[sp_InsereAcordo] ( @idUnidade int, @dataAcordo datetime, @valorParcelado float, @valorAdvogado float=NULL, @quantidadeParcelas int, @valorDaParcela float, @vencPrimeiraParcela datetime, @diaVencDemaisParcelas nchar(2), @acordoJudicial bit, @numeroProcesso int= NULL, @digitoNumeroProcesso nchar(2)= NULL, @anoNumeroProcesso nchar(4)= NULL, @orgaoJudiciario nchar(1)= NULL, @tribunal nchar(2)= NULL, @comarca nchar(4)= NULL, @id_Advogado int= NULL, @observacoes nvarchar(4000)= NULL, @id_AcordoFinanceiro int OUT ) AS BEGIN INSERT INTO AcordoFinanceiro (idUnidade, dataAcordo, valorParcelado, valorAdvogado, quantidadeParcelas, valorDaParcela, vencPrimeiraParcela, diaVencDemaisParcelas, acordoJudicial, numeroProcesso, digitoNumeroProcesso, anoNumeroProcesso, orgaoJudiciario, tribunal, comarca, id_Advogado, observacoes, id_AcordoFinanceiro) VALUES (@idUnidade,@dataAcordo,@valorParcelado,@valorAdvogado,@quantidadeParcelas,@valorDaParcela,@vencPrimeiraParcela,@diaVencDemaisParcelas,@acordoJudicial,@numeroProcesso, @digitoNumeroProcesso,@anoNumeroProcesso,@orgaoJudiciario,@tribunal,@comarca,@id_Advogado,@observacoes,@id_AcordoFinanceiro) SET @id_AcordoFinanceiro = SCOPE_IDENTITY() END
[b]Sergio Ivanenko[/b]
-
-
-
Ivan, estou com sono e acabei deixando passar, novamente.
No teu INSERT INTO, tu estás tentando inserir um valor no id_AcordoFinanceiro (última coluna do INSERT).
Tente tirar o esse último valor que acredito que dará certo.
Att., Rafael Simor
-