Como alterar varios campos de um cadastro e trazer o mesmo na tela.
07/03/2011
0
Olá pessoal, boa tarde.
Estou com uma duvida de como faço para alterar varios registros
de um cadastro de uma só vez e tipo queria fazer assim, quando eu
digitasse o codigo do cliente la no codigo e desse enter, o programa me
trazesse o cadastro do cliente.
incorrect syntax near the keyword where
a primeira duvida vai aqui a linha que está dando problema: Camada DAL public void alteraCliente(cadastro_cliente cliente) { try { conexao = new SqlConnection (conexao_sqlserver); SqlCommand sql = new SqlCommand ("update cliente set nome = @nome, cpf = @cpf, tel_fixo = @tel_fixo, tel_cel = @tel_cel, cidade = @cidade, rua = @rua, numero = @numero, bairro = @bairro,@data_nasc where codigo = @codigo" , conexao); sql.Parameters.AddWithValue("@codigo" , cliente.Codigo); sql.Parameters.AddWithValue("@nome" , cliente.Nome); sql.Parameters.AddWithValue("@sexo" , cliente.Sexo); sql.Parameters.AddWithValue("@cpf" , cliente.Cpf); sql.Parameters.AddWithValue("@tel_fixo" , cliente.Tel_fixo); sql.Parameters.AddWithValue("@tel_cel" , cliente.Tel_cel); sql.Parameters.AddWithValue("@cidade" , cliente.Cidade); sql.Parameters.AddWithValue("@rua" , cliente.Rua); sql.Parameters.AddWithValue("@numero" , cliente.Numero); sql.Parameters.AddWithValue("@bairro" , cliente.Bairro); sql.Parameters.AddWithValue("@data_nasc" , cliente.Data); conexao.Open(); sql.ExecuteNonQuery(); } catch (Exception erro) { throw erro; } finally { conexao.Close(); } botão private void b_editar_Click(object sender, EventArgs e) { cadastro_cliente cliente = new cadastro_cliente (); cliente.Codigo = Convert .ToInt32(tb_cod_cli.Text); cliente.Nome = tb_nome_cli.Text; cliente.Sexo = cb_sexo.SelectedValue.ToString(); cliente.Cpf = mtb_cpf.Text; cliente.Tel_fixo = mtb_tel_fix.Text; cliente.Tel_cel =mtb_cel.Text; cliente.Cidade = tb_cidade.Text; cliente.Rua = tb_rua_cli.Text; cliente.Numero = mtb_numero.Text; cliente.Bairro = tb_bairro_cli.Text; cliente.Data = Convert .ToDateTime(mtb_data_nascimento.Text); try { cadastroBLL cadastrobll = new cadastroBLL () ; cadastrobll.alteraClienteDal(cliente); MessageBox .Show("Cadastro alterado com Sucesso" ); } catch (Exception erro) { throw erro; } Altera cliente na camada BLL public void alteraClienteDal(cadastro_cliente cliente) { try { cadastrodal = new cadastroDal (); cadastrodal.alteraCliente(cliente); } catch (Exception erro) { throw erro; }
a primeira duvida vai aqui a linha que está dando problema: Camada DAL public void alteraCliente(cadastro_cliente cliente) { try { conexao = new SqlConnection (conexao_sqlserver); SqlCommand sql = new SqlCommand ("update cliente set nome = @nome, cpf = @cpf, tel_fixo = @tel_fixo, tel_cel = @tel_cel, cidade = @cidade, rua = @rua, numero = @numero, bairro = @bairro,@data_nasc where codigo = @codigo" , conexao); sql.Parameters.AddWithValue("@codigo" , cliente.Codigo); sql.Parameters.AddWithValue("@nome" , cliente.Nome); sql.Parameters.AddWithValue("@sexo" , cliente.Sexo); sql.Parameters.AddWithValue("@cpf" , cliente.Cpf); sql.Parameters.AddWithValue("@tel_fixo" , cliente.Tel_fixo); sql.Parameters.AddWithValue("@tel_cel" , cliente.Tel_cel); sql.Parameters.AddWithValue("@cidade" , cliente.Cidade); sql.Parameters.AddWithValue("@rua" , cliente.Rua); sql.Parameters.AddWithValue("@numero" , cliente.Numero); sql.Parameters.AddWithValue("@bairro" , cliente.Bairro); sql.Parameters.AddWithValue("@data_nasc" , cliente.Data); conexao.Open(); sql.ExecuteNonQuery(); } catch (Exception erro) { throw erro; } finally { conexao.Close(); } botão private void b_editar_Click(object sender, EventArgs e) { cadastro_cliente cliente = new cadastro_cliente (); cliente.Codigo = Convert .ToInt32(tb_cod_cli.Text); cliente.Nome = tb_nome_cli.Text; cliente.Sexo = cb_sexo.SelectedValue.ToString(); cliente.Cpf = mtb_cpf.Text; cliente.Tel_fixo = mtb_tel_fix.Text; cliente.Tel_cel =mtb_cel.Text; cliente.Cidade = tb_cidade.Text; cliente.Rua = tb_rua_cli.Text; cliente.Numero = mtb_numero.Text; cliente.Bairro = tb_bairro_cli.Text; cliente.Data = Convert .ToDateTime(mtb_data_nascimento.Text); try { cadastroBLL cadastrobll = new cadastroBLL () ; cadastrobll.alteraClienteDal(cliente); MessageBox .Show("Cadastro alterado com Sucesso" ); } catch (Exception erro) { throw erro; } Altera cliente na camada BLL public void alteraClienteDal(cadastro_cliente cliente) { try { cadastrodal = new cadastroDal (); cadastrodal.alteraCliente(cliente); } catch (Exception erro) { throw erro; }
Ricardo Rodrigues
Curtir tópico
+ 0
Responder
Posts
11/03/2011
Jones Roberto
Bom dia Ricardo,
você pode fazer um Btn que ao ser clicado carregue
os dados do Cliente através de um busca na tabela do banco
que pode ser feita utilizando um DataReader , com esse dataReader
você preenche as textBox do seu cadastro ....
com isso você poderá alterar o registro do banco...
outra sugestão é que em vez de passar um cliente como parametro para o alterar
passe apenas o id do cliente , ao dentro do metodo vc instancia um objeto cliente
e passa o valor do parametro como sendo igual ao cliente.Codigo
exemplo:
public void alteraCliente(int codigo)
{
try
{
cadastro_cliente cliente = new cadastro_cliente();
cliente.Codigo = codigo;
conexao = new SqlConnection (conexao_sqlserver);
string comando = "update cliente set nome = @nome, cpf = @cpf, tel_fixo = @tel_fixo, tel_cel = @tel_cel, cidade = @cidade, rua = @rua, numero = @numero, bairro = @bairro,data_nasc=@data_nasc where codigo = @codigo";
SqlCommand sql = new SqlCommand (comando , conexao);
sql.Parameters.AddWithValue("@codigo" , cliente.Codigo);
sql.Parameters.AddWithValue("@nome" , cliente.Nome);
sql.Parameters.AddWithValue("@sexo" , cliente.Sexo);
sql.Parameters.AddWithValue("@cpf" , cliente.Cpf);
sql.Parameters.AddWithValue("@tel_fixo" , cliente.Tel_fixo);
sql.Parameters.AddWithValue("@tel_cel" , cliente.Tel_cel);
sql.Parameters.AddWithValue("@cidade" , cliente.Cidade);
sql.Parameters.AddWithValue("@rua" , cliente.Rua);
sql.Parameters.AddWithValue("@numero" , cliente.Numero);
sql.Parameters.AddWithValue("@bairro" , cliente.Bairro);
sql.Parameters.AddWithValue("@data_nasc" , cliente.Data);
conexao.Open();
sql.ExecuteNonQuery();
}
catch (Exception erro)
{
throw erro;
}
finally
{
conexao.Close();
}
você também esqueceu de setar data_nasc=@data_nasc por isso estava gerando o erro
tente agora dessa maneira... agora vc tera que ver como vai fazer para carregar o cliente no
seu formulario de autalização de cadastro vou te dar um exemplo de como pode ser feito...
#region carregaCliente()
public void carregaCliente(int codigoCliente)
{
cadastro_cliente cliente = new cadastro_cliente(); conexao = new SqlConnection (conexao_sqlserver);
string cmdSql = "Select * from cliente Where codigo="+ codigoCliente; SqlCommand cmd = new SqlCommand(cmdSql, conn);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
dr.Read();
nomedoseutextbox_codigo.Text = dr["codigo"].ToString();
nomedoseutextbox_nome.Text = dr["nome"].ToString();
nomedoseutextbox_sexo.Text = dr["sexo"].ToString();
nomedoseutextbox_cpf.Text = dr["cpf"].ToString();
nomedoseutextbox_tel_fixo.Text = dr["tel_fixo"].ToString();
nomedoseutextbox_tel_cel.Text = dr["tel_cel"].ToString(); nomedoseutextbox_cidade.Text = dr["cidade"].ToString(); nomedoseutextbox_rua.Text = dr["rua"].ToString(); nomedoseutextbox_numero.Text = dr["numero"].ToString(); nomedoseutextbox_bairro.Text = dr["bairro"].ToString(); nomedoseutextbox_data_nasc.Text = dr["data_nasc"].ToString(); conn.Close();
conn.Dispose();
}
#endregion Acho que esse metodo vai carregar as propriedades de que você deseja (lembre-se eu digite o cod direito aqui , se tiver algum erro verifique no Visual Studio) acho que esse exemplo vai te ajudar muito no que vc precisa fazer , quanto ao jeito de chamar esse metodo ai vc vai ter que decidir , se vai chamar através de um button , ou através de um POSTBACK do Textbox onde vc vai digitar o codigo... Espero que ajude.. Att, Jones Roberto
public void carregaCliente(int codigoCliente)
{
cadastro_cliente cliente = new cadastro_cliente(); conexao = new SqlConnection (conexao_sqlserver);
string cmdSql = "Select * from cliente Where codigo="+ codigoCliente; SqlCommand cmd = new SqlCommand(cmdSql, conn);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
dr.Read();
nomedoseutextbox_codigo.Text = dr["codigo"].ToString();
nomedoseutextbox_nome.Text = dr["nome"].ToString();
nomedoseutextbox_sexo.Text = dr["sexo"].ToString();
nomedoseutextbox_cpf.Text = dr["cpf"].ToString();
nomedoseutextbox_tel_fixo.Text = dr["tel_fixo"].ToString();
nomedoseutextbox_tel_cel.Text = dr["tel_cel"].ToString(); nomedoseutextbox_cidade.Text = dr["cidade"].ToString(); nomedoseutextbox_rua.Text = dr["rua"].ToString(); nomedoseutextbox_numero.Text = dr["numero"].ToString(); nomedoseutextbox_bairro.Text = dr["bairro"].ToString(); nomedoseutextbox_data_nasc.Text = dr["data_nasc"].ToString(); conn.Close();
conn.Dispose();
}
#endregion Acho que esse metodo vai carregar as propriedades de que você deseja (lembre-se eu digite o cod direito aqui , se tiver algum erro verifique no Visual Studio) acho que esse exemplo vai te ajudar muito no que vc precisa fazer , quanto ao jeito de chamar esse metodo ai vc vai ter que decidir , se vai chamar através de um button , ou através de um POSTBACK do Textbox onde vc vai digitar o codigo... Espero que ajude.. Att, Jones Roberto
Responder
11/03/2011
Ricardo Rodrigues
Opa vlw ai, estou no trabalho agora mais a noite quando chegar em casa já faço as alterações e posto se deu certo ou não.
Muito obrigado.
Muito obrigado.
Responder
Clique aqui para fazer login e interagir na Comunidade :)