Inquiridor
Botão salvar

Discussão Geral
-
tenho o seguinte código no botão salvar, nos forms que tem apenas registros do tipo string, esta funcionando, esse é o primeiro form que faça com valores inteiros e decimais. Quando clico em salvar apresenta o seguinte erro: "Error converting data type varchar to numeric" , isso quando preencho os campos com que são de registros numéricos. Já quando nem preencho esses campos da o erro a seguir: "A cadeia de caracteres de entrada não estava em um formato incorreto."
string sql = "insert into produtos(des_produto,ean,est_produto,un_medida,desc_reduzida,vl_produto,custo,margem)" +
"values('" + textBoxDescricao.Text + "','"
+ textBoxBarras.Text + "','"
+ Convert.ToDecimal(textBoxEstoque.Text) + "','"
+ textBoxUnMedida.Text + "','"
+ textBoxDesRed.Text + "','"
+ Convert.ToDecimal(textBoxVlVenda.Text) + "','"
+ Convert.ToDecimal(textBox1CustoPro.Text) + "','"
+ Convert.ToDecimal(textBoxMarge.Text) + "')";
SqlConnection con = new SqlConnection();
con.ConnectionString = Properties.Settings.Default.Ducaun;
SqlCommand cmd = new SqlCommand(sql, con);
cmd.CommandType = CommandType.Text;
con.Open();
produtosDataGridView.Refresh();
try
{
int i = cmd.ExecuteNonQuery();
if (i > 0)
MessageBox.Show("Operação efetuada com sucesso !", "Mensagem do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show("Erro: Erro Ao Gravar no banco de dados " + ex.ToString());
}
finally
{
con.Close();
}
}
else
{
string sql = "update produtos set des_produto = '" + textBoxDescricao.Text +
"', ean = '" + textBoxBarras.Text +
", est_produto = " + Convert.ToDecimal(textBoxEstoque.Text) +
"', un_medida = '" + textBoxUnMedida.Text +
"', desc_reduzida = '" + textBoxDesRed +
", vl_produto = " + Convert.ToDecimal(textBoxVlVenda.Text) +
", custo = " + Convert.ToDecimal(textBox1CustoPro.Text) +
", margem = " + Convert.ToDecimal(textBoxMarge.Text);
SqlConnection con = new SqlConnection();
con.ConnectionString = Properties.Settings.Default.Ducaun;
SqlCommand cmd = new SqlCommand(sql, con);
cmd.CommandType = CommandType.Text;
con.Open();
produtosDataGridView.Refresh();
try
{
int i = cmd.ExecuteNonQuery();
if (i > 0)
MessageBox.Show("Operação efetuada com sucesso !", "Mensagem do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show("Erro: Erro Ao Gravar no banco de dados " + ex.ToString());
}
finally
{
con.Close();
}
}- Tipo Alterado Levi DomingosModerator domingo, 11 de outubro de 2015 10:36
Todas as Respostas
-
@Junin
Ja ouviste falar em parametos?
Voce precisa usar parametros, veja este exemplo:http://stackoverflow.com/questions/12939501/insert-into-c-sharp-with-sqlcommand
procura exemplo em portugues.
Tu ja ouviste falar em classes?
Precisas usar tambem, fica facil de arranjar teu codigo e manegar tambem:
A flower cannot blossom without sunshine, and man cannot live without love.
-
-
-
@Junin
este erro :1 - "Error converting data type varchar to numeric" acontence quando voce tenta gravar, na tabela e alguns campos estao vazios. se uma textbox festiver vazio pode gerar este erro. o que voce tem de fazer e vereficar se o textbox estiver vazio voce nao converte apenas passa um valor direito neste caso seria Zero(0)
textBoxEstoque.Text = 0; Por isso vais ter se utilizar parametros.
Este erro: 2 - "Error converting data type varchar to numeric" pode ser que na tabela voce definiu como char.
Este erro: "A cadeia de caracteres de entrada não estava em um formato incorreto." quer dizer que o teu insert esta errado. Os campos nao estao em ordem como na base de dados, Tabela.
Este metodo esta no lugar errado: produtosDataGridView.Refresh(); deveria estar no final do teu codigo e nao no meio.
Tenta usar a palavra Using( comando)....Porque?
Porque fecha a conecao mesmo se o codigo estiver erro, assim proteje a base de dados.
A flower cannot blossom without sunshine, and man cannot live without love.
-
sobre, o método produtosdatagridview.refresh(); foi a maneira que encontrei de contornar um problema que estava tendo de quando salvo um registro, se eu ir na tela de pesquisa e carregar o registro para o form não esta vindo atualizado, só atualizava quando saia do sistema e entrava de novo, dessa forma estava funcionando, mais vou dar uma analisada no que você me disse.
-