Posts
27/04/2009
Lorena Menelli
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();
27/04/2009
Lorena Menelli
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
27/04/2009
[devmedia .net]
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
28/04/2009
Lorena Menelli
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.
28/04/2009
[devmedia .net]
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
28/04/2009
Lorena Menelli
Na verdade na tabela tem um id que é auto incremetno, se puder me passar a maneira mais facil
pode ser no selec. usando click
28/04/2009
[devmedia .net]
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
28/04/2009
Lorena Menelli
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.
28/04/2009
[devmedia .net]
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
28/04/2009
Lorena Menelli
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++
28/04/2009
[devmedia .net]
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
28/04/2009
Lorena Menelli
Ok, Carlos.
Entendi prefeitamente. Amanhã vou testar o codigo, e te dou um retorno
boa noite
abraço
29/04/2009
Lorena Menelli
O randon esta retornando um valor fixo
73522
73522
73522
73522
1578909153
1578909153
NULL
29/04/2009
[devmedia .net]
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
29/04/2009
Lorena Menelli
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