erro db

27/04/2009

boa tarde Column name or number of supplied values does not match table definition.   o que pode está acontecendo     connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString); SqlCommand command = new SqlCommand("INSERT INTO EsEp002F1 VALUES(@obsCoIn005, @obsCoIn005, @obsCoOr003F1)", connection); command.Parameters.Add(new SqlParameter("@obsCoIn005", txtCoIn005.Text)); command.Parameters.Add(new SqlParameter("@obsCoIn004", txtCoIn004.Text)); command.Parameters.Add(new SqlParameter("@obsCoOr003F1", txtCoOr003F1.Text)); connection.Open(); command.ExecuteNonQuery(); lblMsg.Text = "Usuário incluido com sucesso!"; RetornaValor();   public void RetornaValor() { SqlConnection connection = new SqlConnection(); try { connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString); SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT * FROM EsEp002F1",connection); DataSet dataset = new DataSet(); dataAdapter.Fill(dataset, "EsEp002F1"); GridView1.DataSource = dataset.Tables["EsEp002F1"]; GridView1.DataBind(); } catch (Exception ex) { Response.Write("Erro " + ex.Message); }
Lorena Menelli

Lorena Menelli

Curtidas 0

Respostas

Lorena Menelli

Lorena Menelli

27/04/2009

Agora está ocorrendo outro erro   ERRO insert Conversion failed when converting from a character string to uniqueidentifier.   connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString); SqlCommand command = new SqlCommand("INSERT INTO EsEp002F1 ([obsCoIn005],[obsCoIn004] ,[obsCoOr003F1],[uidProjeto]) VALUES(@obsCoIn005, @obsCoIn004, @obsCoOr003F1,@uidProjeto)", connection); command.Parameters.Add(new SqlParameter("@obsCoIn005", txtCoIn005.Text)); command.Parameters.Add(new SqlParameter("@obsCoIn004", txtCoIn004.Text)); command.Parameters.Add(new SqlParameter("@obsCoOr003F1", txtCoOr003F1.Text)); command.Parameters.Add(new SqlParameter("@uidProjeto", txtId.Text)); connection.Open(); command.ExecuteNonQuery(); lblMsg.Text = "Usuário incluido com sucesso!"; RetornaValor();
GOSTEI 0
Lorena Menelli

Lorena Menelli

27/04/2009

Olá esqueção tudo que escrevi abaxo.   Agora só estou precisando criar um codigo que crie uma versao para cadas informação que o usuario cadastra no banco   há um coluna versão que é preenchida automaticamente, um codigo gera a versão.   meu erro:     ERRO insert Cannot insert the value NULL into column 'versao', table 'TesteEstagiarios.dbo.EsEp002F1'; column does not allow nulls. INSERT fails. The statement has been terminated.   Por favor
GOSTEI 0
[devmedia .net]

[devmedia .net]

27/04/2009

Lorena tudo bem ?   Você deve passar um valor para o campo versão pois ele não permite nulo, veja se o campo está gerando mesmo o valor automaticamente, para que isso acontece, ou vc envia o valor para o campo, ou veja se ele está marcado como Identity nas propriedades dele na tabela...   Só assim ele gera valores...   Abraços   Carlos Jr
GOSTEI 0
Lorena Menelli

Lorena Menelli

27/04/2009

Ok Carlos. Na verdade, cada vez que eu preencher o formulário, o programa gera uma versão diferente, e preenche o banco na tabela versão, sem que o usuário tenha que digitar a versão. Não sei como construir esse código.
GOSTEI 0
[devmedia .net]

[devmedia .net]

27/04/2009

Olá Lorena tudo bem ? O campo versao deve ser auto incremento - identity para que senha gerado um novo código...   Por exemplo     Se o campo versao for auto-incremento você não precisa passá-lo no insert...   TABELA1 CODIGO INT NOME VARCHAR(10) DESCRICAO VARCHAR(100)     INSERT INTO TABELA (NOME, DESCRICAO) VALUES(@NOME,@DESCRICAO)   Veja que eu não coloquei o campo código no insert, pois o mesmo é auto-incremento ele gera um código automaticamente.   Para colocar esse campo como auto incremento, você abre a tabela em modo de design no banco de dados, seleciona o campo que precisa e nas propriedades do campo você o define como auto-incremento.   Agora se o PROGRAMA gera o código aleatório, você não pode deixar o campo CODIGO como auto-incremente e deve informá-lo no insert   INSERT INTO TABELA (CODIGO, NOME, DESCRICAO) VALUES(@CODIGO, @NOME,@DESCRICAO)   Caso ainda não tenha entendido, me envie a imagem ou query da sua tabela que eu altera para receber o campo auto-incremento.   Abraços
Carlos Jr
GOSTEI 0
Lorena Menelli

Lorena Menelli

27/04/2009

Na verdade na tabela tem um id que é auto incremetno, se puder me passar a maneira mais facil pode ser no selec. usando click
GOSTEI 0
[devmedia .net]

[devmedia .net]

27/04/2009

Lorena, me desculpa.. Mas se o campo já auto-incremente não pode ter erro.. ou eu não entendi bem sua dúvida.. Poderia me explicar novamente seu problema, pois não devo ter entendido bem.   Abraços   Carlos Jr
GOSTEI 0
Lorena Menelli

Lorena Menelli

27/04/2009

Claro, Preciso que o sistema gere uma versão diferente para cada vez que eu cadastre dados no banco na minha tabela tenho uma coluna versao. até agora estou fazendo assim command.Parameters.Add(new SqlParameter("@versao", txtversao.Text)); estou precisando que a versão seha criada dinameicamente no banco tmb ha uma coluna id que está como auto-incremento, apenas ela. a coluna cersao naum esta como auto.
GOSTEI 0
[devmedia .net]

[devmedia .net]

27/04/2009

Lorena, você precisa colocar a coluna versão como auto-incremento e tirá-la dos parâmetros.. As colunas auto-incremento não deve ser referenciadas no insert, você precisa criar um parâmetro com o campo versão como está fazendo, pois ele é auto-incremento por isso está ocorrendo o erro.   Abraços   Carlos Jr
GOSTEI 0
Lorena Menelli

Lorena Menelli

27/04/2009

Carlos, o pessoal da empresa disse que eu não posso colocar a coluna versao como auto-incremento pq outros formularios devem usar o mesmo banco, e com isso pode dar algum problema. Na verdade o que percebi é que eles querem que eu faça assim, sem auto, até pq ele me deram o banco pronto.   Pelo que o gerente me disse, é so fazer um insert para a coluna versao. A coluna está com o tipo int. Ele disse que pode ser um numer pequeno que faça um incremento tipo 1, 1+1=2, 2+1=3 assim por diante.   quando o usuário clicar no botão salvar é gerado um versao nova.   A tabela tmb tem um Id, que está com auto     xau..e t++
GOSTEI 0
[devmedia .net]

[devmedia .net]

27/04/2009

Oi Lorena, utilize então o Random do .net..   na inclusão do seu parâmetro.. coloque no valor   Random random = new Random(99999);   random.Next(99999);  // Isso irá gerar um número aleatório que servirá para você   entendeu..   Parameter.Add(@versao, random.Next(99999));   Só isso..   Abraços   Carlos Jr
GOSTEI 0
Lorena Menelli

Lorena Menelli

27/04/2009

Ok, Carlos. Entendi prefeitamente. Amanhã vou testar o codigo, e te dou um retorno   boa noite   abraço
GOSTEI 0
Lorena Menelli

Lorena Menelli

27/04/2009

O randon esta retornando um valor fixo   73522 73522 73522 73522 1578909153 1578909153 NULL
GOSTEI 0
[devmedia .net]

[devmedia .net]

27/04/2009

Oi Lorena, faça assim que funciona..   Random random = new Random();
int versao random.Next(11111, 99999);  //Defina o valor mínimo e o valor máximo Abraços Carlos Jr
GOSTEI 0
Lorena Menelli

Lorena Menelli

27/04/2009

Acabaram de me falar que não posso usar rando, pq tem que numeros sequencias fiz esse método   public int VerificaVersao() { int numeroVersao = 0; try { SqlConnection connection = new SqlConnection(); connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString); SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT * FROM EsEp002F1", connection); DataSet dataset = new DataSet(); string query = "SELECT COALESCE(MAX(VERSAO),0) AS nversao FROM PAMA001F1"; SqlCommand command = new SqlCommand(query, connection); int resultado = Convert.ToInt32(command.ExecuteScalar()); numeroVersao = resultado + 1; } catch (Exception ex) { Response.Write("Erro " + ex.Message); } return numeroVersao; }   mas agora como passar verifica versao por paramentro
GOSTEI 0
[devmedia .net]

[devmedia .net]

27/04/2009

Oi Lorena, passe o camando..   SELECT COALESCE(MAX(VERSAO),0) AS nversao FROM PAMA001F1 na mesma query de insert....   Agora se a versão tem que ser incremetal, por que o campo não pode ser auto-incremento, tem coisa errada aí, o auto-incremento serve justamente para isso. A solução que está dando não é muito boa.. isso é uma dica.   Mas se precisa disso..     INSERT INTO SUA_TABELA(CAMPO1, CAMPO2, CAMPO3) VALUES ( SELECT COALESCE(MAX(VERSAO),0) AS nversao FROM PAMA001F1)  , VALOR_CAMPO2, VALORCAMPO3)   ENTENDEU ??   Abraços   Carlos Jr  
GOSTEI 0
Lorena Menelli

Lorena Menelli

27/04/2009

Carlos que agradecer pela grande ajuda, o meu teste acabou ontem. Na verdade achei muito puxado, pois era uma vaga de estágio. Não consegui terminar tudo e a avaliação dos técnicos foi em cima de código e desing. Ele darão o resultado na segunda feira.. Pode fechar o poste, mesmo se não passar, vou continuar tentando. abraço.
GOSTEI 0
[devmedia .net]

[devmedia .net]

27/04/2009

Oi Lorena tudo bem ? Estou lhe enviando via FTP um projeto que fiz, com conexão em banco de dados , recuperação de dados e insert, justamente as dúvidas que você teve. Dê uma olhada por favor..   Execute a aplicação através da solution e veja os arquivos. A página inicial faz conexão com banco de dados... Veja o código html e fonte   http://www.brainiac.com.br/WebSite1.rar       Abraços   Carlos Jr
GOSTEI 0
POSTAR