none
Campo auto incremento dando erro RRS feed

  • Pergunta

  • Esta dando esse erro, quando foi fazer va gravação, sei que no VB eu não preciso colocar na sql o campo auto incremento, mas não sei se no c# tem alguma coisa diferente. O que deve ser?

    Cannot insert the value NULL into column 'indice', table 'UM_Juridico.dbo.processo'; column does not allow nulls. INSERT fails.
    The statement has been terminated.

    string LoginAD = System.Environment.GetEnvironmentVariable("USERNAME");
                                                            
                        string incluirSQL = "insert into processo(tipoproc,orgao,numero,testemunha1,testemunha2,testemunha3,preposto," +
                        "tipoacao,reclamante,natureza,dtrecebe,foro,vara,comarca,valorcausa,dano,detalhamento," +
                        "exito,escritorio,respdefesa,datamov,ato,prazo,descricao,login)values(" +
                        "@tipoproc,@orgao,@numero,@testemunha1,@testemunha2,@testemunha3,@preposto,@tipoacao,@reclamante,@natureza," +
                        "@dtrecebe,@foro,@vara,@comarca,@valorcausa,@dano,@detalhamento,@exito,@escritorio,@respdefesa,@datamov,@ato," +
                        "@prazo,@descricao,@login)";
    
                        //try
                        //{
                            sqlConnection1.Open();
                            SqlCommand cmd = new SqlCommand(incluirSQL, sqlConnection1);
                            {
                                cmd.Parameters.AddWithValue("@tipoproc", cbtipo.Text);
                                cmd.Parameters.AddWithValue("@orgao", cborgao.Text);
                                cmd.Parameters.AddWithValue("@numero", txtnumero.Text);
                                cmd.Parameters.AddWithValue("@testemunha1", txttest1.Text);
                                cmd.Parameters.AddWithValue("@testemunha2", txttest2.Text);
                                cmd.Parameters.AddWithValue("@testemunha3", txttest3.Text);
                                cmd.Parameters.AddWithValue("@preposto", txtpreposto.Text);
                                cmd.Parameters.AddWithValue("@tipoacao", txttipo.Text);
                                cmd.Parameters.AddWithValue("@reclamante", txtrequerente.Text);
                                cmd.Parameters.AddWithValue("@natureza", CBtipoacao.Text);
                                cmd.Parameters.AddWithValue("@dtrecebe", txtdtentrada.Text);
                                cmd.Parameters.AddWithValue("@foro", txtforo.Text);
                                cmd.Parameters.AddWithValue("@vara", txtvara.Text);
                                cmd.Parameters.AddWithValue("@comarca", txtcomarca.Text);
                                cmd.Parameters.AddWithValue("@valorcausa", txtvalor.Text);
                                cmd.Parameters.AddWithValue("@dano", txtdano.Text);
                                cmd.Parameters.AddWithValue("@detalhamento", txtdetalhe.Text);
                                cmd.Parameters.AddWithValue("@exito", txtexito.Text);
                                cmd.Parameters.AddWithValue("@escritorio", txtescri.Text);
                                cmd.Parameters.AddWithValue("@respdefesa", txtresp.Text);
                                cmd.Parameters.AddWithValue("@datamov", txtdtandamento.Text);
                                cmd.Parameters.AddWithValue("@ato", txtato.Text);
                                cmd.Parameters.AddWithValue("@prazo", txtdtprazo.Text);
                                cmd.Parameters.AddWithValue("@descricao", txtdesc.Text);
                                cmd.Parameters.AddWithValue("@login", LoginAD);
                                cmd.ExecuteNonQuery();
                                MessageBox.Show("Processo cadastrado com sucesso");
                              
                            }
                                                   
                            sqlConnection1.Close();
    
            
                    }
                    else
                    {
                        // AQUI ENTRA O PROCESSO ADM
                    }
    
                }
                else
                {
                    /// AQUI ROLA O ESPORRO
                    MessageBox.Show("Você deixou algum campo de Data em Branco");
                }


    segunda-feira, 30 de setembro de 2013 17:56

Respostas

  • Se ja tiver registros na tabela não irá deixar mesmo, ou se este campo tiver registros repetidos, não irá deixar o ideal seria ou limpar a tabela ou iniciar o valor a partir de qual ira incrementar pq ai ele deixa.

    Se for util marque...

    • Marcado como Resposta RJCERRI terça-feira, 1 de outubro de 2013 13:36
    segunda-feira, 30 de setembro de 2013 21:04

Todas as Respostas

  • Independente da Linguagem se a coluna for Autonumeração não tem a necessidade de informar no código, pois o próprio SGBD vai auto incrementar e colocar o número na coluna...

    Cara confere a tabela e verifica se a coluna Indice realmente está como Chave Primária e Identity, pelo jeito não está...


    Leonardo Lourenço Silva


    segunda-feira, 30 de setembro de 2013 17:59
  • Ela esta assim, o que sera que ta errado?
    segunda-feira, 30 de setembro de 2013 19:25
  • No Print ela não está SALVA (Está com asterisco), faça o teste pelo próprio Management Studio...

    1. Salve a tabela
    2. Clique com o direito nela Edit Top 200 Rows
    3. Coloque uma linha e de enter (Deveria salvar e Auto Incrementar)
    4. Teste novamente pela aplicação...

    OBS: Confira se realmente vocÊ está apontando para o mesmo servidor, base e tabela...


    Leonardo Lourenço Silva


    segunda-feira, 30 de setembro de 2013 19:29
  • Se não conseguir via visual utilize via script assim :

    ALTER TABLE nome_tabela
    ADD nome_coluna tipo_dados IDENTITY(valor a partir do qual vamos incrementar, valor do incremento)

    Exemplo:

    ALTER TABLE Confirmations.Produtos
    ADD id INT IDENTITY(1,1)

    Fonte = http://www.duploclique.net/sql-server-alterar-tabelas-alter-table/

    Se for util marque...

    segunda-feira, 30 de setembro de 2013 19:40
  • Não sei o que esta acontecendo, tentei no modo visual e pelo script ele não deixa colocar o nome do campo no Identity Column.
    segunda-feira, 30 de setembro de 2013 20:53
  • Se ja tiver registros na tabela não irá deixar mesmo, ou se este campo tiver registros repetidos, não irá deixar o ideal seria ou limpar a tabela ou iniciar o valor a partir de qual ira incrementar pq ai ele deixa.

    Se for util marque...

    • Marcado como Resposta RJCERRI terça-feira, 1 de outubro de 2013 13:36
    segunda-feira, 30 de setembro de 2013 21:04
  • Obrigado pessoal, não sei o que era, fiz outra tabela e consegui criar o campos, com aquela não deu jeito, tirei tudo dela deixei vazia e nada.

    Abs

    terça-feira, 1 de outubro de 2013 13:37