erro db
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
Curtidas 0
Respostas
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
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]
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
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]
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
Carlos Jr
GOSTEI 0
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]
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
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]
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
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]
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
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
27/04/2009
O randon esta retornando um valor fixo
73522
73522
73522
73522
1578909153
1578909153
NULL
GOSTEI 0
[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
int versao random.Next(11111, 99999); //Defina o valor mínimo e o valor máximo Abraços Carlos Jr
GOSTEI 0
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]
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
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]
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