Jump to content
nando4

Fazer Dois INSERTS

Recommended Posts

nando4

Boas

Eu estou a fazer um software de gestão e queria que ao inserir um novo cliente, quando escolhesse o campo Tipo de Cliente, fizesse um SELECT para saber qual o id_tipo_cliente e queria usar o resultado desse SELECT para inserir nos clientes.

try
                {
                    
                    SqlCommand command = new SqlCommand("Insert into clientes(nome,telefone_p,telefone_t,telemovel_p,telemovel_t,email,fax,bi,nib,nif,notas_cliente,criado_em,cod_postal) values('@nome','@telefone_p','@telefone_t','@telemovel_p','telemovel_t','@email','@fax','@bi','@nib','@nif','@notas_cliente','@criado_em','@cod_postal')", liga);
                    command.Parameters.Add(new SqlParameter("@nome", tb_nome.Text));//ATRIBUICAO DE VARIAVEIS AS textBox
                    command.Parameters.Add(new SqlParameter("@telefone_p", tb_telefonep.Text));
                    command.Parameters.Add(new SqlParameter("@telefone_t", tb_telefonet.Text));
                    command.Parameters.Add(new SqlParameter("@telemovel_p", tb_telemovelp.Text));
                    command.Parameters.Add(new SqlParameter("@telemovel_t", tb_telemovelt.Text));
                    command.Parameters.Add(new SqlParameter("@email", tb_telefonep.Text));
                    command.Parameters.Add(new SqlParameter("@fax", tb_fax.Text));
                    command.Parameters.Add(new SqlParameter("@bi", tb_bi.Text));
                    command.Parameters.Add(new SqlParameter("@nib", tb_nib.Text));
                    command.Parameters.Add(new SqlParameter("@nif", tb_nif.Text));
                    command.Parameters.Add(new SqlParameter("@notas_cliente", tb_notas.Text));
                    command.Parameters.Add(new SqlParameter("@criado_em", Convert.ToString(dateTimePicker1.Text)));
                    command.Parameters.Add(new SqlParameter("@cod_postal", tb_codpostal.Text));
                    if (cb_tipo_cliente.Text == "Empresarial")
                    {
                        SqlCommand command2 = new SqlCommand("SELECT id_tipo_cliente FROM tipo_cliente WHERE nome_tipo_cliente = Empresarial");
                        SqlDataReader dr = command.ExecuteReader();
                        SqlCommand command3 = new SqlCommand("Insert into clientes(id_tipo_cliente) values ('" +dr["id_tipo_cliente"]+"')");
                        command3.ExecuteNonQuery();
                    }

                    command.ExecuteNonQuery();
                    MessageBox.Show("Dados inseridos com sucesso.");
                    Limpar();
                }
                catch (Exception a)

Qualquer duvida não hesitem a perguntar.

Desde já agradeço a ajuda.

Share this post


Link to post
Share on other sites
jpaulino

Em vez de usares método o ExecuteReader(), usas o método ExecuteScalar() que te devolve o resultado do T-SQL (que podes colocar numa variável e depois usar)

No final do INSERT fazes ";SELECT @@IDENTITY" que te devolve o número inserido (ID)

Share this post


Link to post
Share on other sites
nando4

Não sei se fiz bem mas aqui esta o que fiz:

SqlCommand cmd = new SqlCommand("SELECT id_tipo_cliente FROM tipo_cliente WHERE nome_tipo_cliente = '"+cb_tipo_cliente.Text+"'");
                    cmd.Connection.Open();
                    Int32 count = (Int32)cmd.ExecuteScalar();
                    SqlCommand command = new SqlCommand("Insert into clientes(nome,telefone_p,telefone_t,telemovel_p,telemovel_t,email,fax,bi,nib,nif,notas_cliente,criado_em,cod_postal,id_tipo_cliente) values('" + tb_nome.Text + "','" + tb_telefonep.Text + "','" + tb_telefonet.Text + "','" + tb_telemovelp.Text + "','" + tb_telemovelt.Text + "','" + tb_email.Text + "','" + tb_fax.Text + "','" + tb_bi.Text + "','" + tb_nib.Text + "','" + tb_nif.Text + "','" + tb_notas.Text + "','" + Convert.ToString(dateTimePicker1.Text) + "','" + tb_codpostal.Text + "','" + count + "')", liga);
                    
                    command.ExecuteNonQuery();
                    MessageBox.Show("Dados inseridos com sucesso.");
                    Limpar();

Mas dá me um erro que não percebo: "ExecuteScalar: A propriedade Connection nao foi inicializada"

Share this post


Link to post
Share on other sites
Caça

No final da instrução SQL colocas a conexão da mesma maneira que indicaste no primeiro código que mostraste


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
nando4

Desculpa la mas continuo sem perceber, nao podes ser um pouco mais especifico?

Cumps

Share this post


Link to post
Share on other sites
Caça
SqlCommand cmd = new SqlCommand("SELECT id_tipo_cliente FROM tipo_cliente WHERE nome_tipo_cliente = '"+cb_tipo_cliente.Text+"'", Liga);


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
nando4

LOL nem tinha reparado que me tinha esquecido de por isso  :)

Muito Obrigado pela ajuda  ;)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.