none
Pegar dados de uma linha do datagridview e inserir em outra tabela c# RRS feed

  • Pergunta

  • Boa Noite,

    Fecharam meu topico anterior, pq precisei viajar,   enfim to  reabrindo   outro.

    Necessito selecionar a linha do datagridview1  que está   linkada  a uma  tabela  consultas e ao apertar o botão os dados     são inseridos na tabela consultas_canceladas que possue os mesmos campos da tabela consulta.

    Criei uma classe para inserir mas ainda não conseguir....Meu codigo está assim:

    //Classe  de   inserir  
    
    public void cadastro(cadas_consultas_canceladas cadas)
            {
                string caminho = "SERVER=localhost;DATABASE=teste;UID=root;PASSWORD=;";
    
                try
                {
    
                    conexao = new MySqlConnection(caminho);
                    conexao.Open();
                    //yyyy-MM-dd
                    string inserir = "INSERT INTO consultas_canceladas (Cd_consulta_cancelada,Dataa,cd_paciente,cro,cd_procedimento,cd_hr,cd_pagamento,hr_dt_inserido)VALUES('" + cadas.Codigo_cance + "','" + cadas.Dataa_cance + "','" + cadas.cd_paciente_cance + "','" + cadas.cro_cance + "' ,'" + cadas.cd_procedimento_cance + "','" + cadas.cd_hr_cance + "','" + cadas.cd_pgto_cance + "','" + cadas.hr_dt_inserido_cance + "')";
    
                    
                    MySqlCommand comandos = new MySqlCommand(inserir, conexao);
    
                    comandos.ExecuteNonQuery();
                    MessageBox.Show("Consulta Cadastrada com Sucesso!");
    
                    conexao.Close();
    
                }
    
                catch (Exception ex)
                {
    
                    throw new Exception("Erro de comandos" + ex.Message);
                }
    
    
            }
    
    //codigo do  botão
    
     //Botão de cancelar consultas
             private void button1_Click(object sender, EventArgs e)
             {
               
                 cadas_consultas_canceladas ccn = new cadas_consultas_canceladas();
                 dal_consultas_canceladas dcn = new dal_consultas_canceladas();
    
                 ccn.Codigo_cance=dataGridView1.Columns[0].ToString();
                 ccn.Dataa_cance = dataGridView1.Columns[1].ToString();
                 ccn.cd_paciente_cance = dataGridView1.Columns[2].ToString();
                 ccn.cro_cance = dataGridView1.Columns[3].ToString();
                 ccn.cd_procedimento_cance = dataGridView1.Columns[4].ToString();
                 ccn.cd_hr_cance = dataGridView1.Columns[5].ToString();
                 ccn.cd_pgto_cance = dataGridView1.Columns[6].ToString();
                 ccn.hr_dt_inserido_cance = dataGridView1.Columns[7].ToString();
    
                 dcn.cadastro(ccn);
    
             }

    Alguém pode me ajudar?



    • Editado Andressa.s sábado, 18 de março de 2017 04:52
    terça-feira, 14 de março de 2017 00:47

Respostas

  • Bom dia Andressa como vai ?

     Olhando so falta ler a linha do datagrid que esta selecionada seria assim:

    //verifica existe linha selcionada
    if(datagridview.SelectedRows.Count > 0)
    {
      //insere na tabela
      ccn.Codigo_cance = datagridView1.SelectedRows[0].Cells[0].Value.ToString();
    
    //...
    }

     Outra coisa poderia utilizar parametros para passar os dados no seu insert :

     Parametros com MySql

     

     

    terça-feira, 14 de março de 2017 11:01
  • Boa  Noite,

    Testei e parece  que irá funcionar , mas o único problema está no insert agora, por causa da data, tentei arrumar utilizando STR_TO_DATE  mas não funcionou.

    //modifiquei no formato da data
    string inserir = "INSERT INTO consultas_canceladas (Cd_consulta_cancelada,STR_TO_DATE(Dataa, ‘%Y-%m-%d’),cd_paciente,cro,cd_procedimento,cd_hr,cd_pagamento,hr_dt_inserido)VALUES('" + cadas.Codigo_cance + "','" + cadas.Dataa_cance + "','" + cadas.cd_paciente_cance + "','" + cadas.cro_cance + "' ,'" + cadas.cd_procedimento_cance + "','" + cadas.cd_hr_cance + "','" + cadas.cd_pgto_cance + "','" + cadas.hr_dt_inserido_cance + "')";

    Ele apresenta  o seguinte erro:

    Erro de comandosYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(Dataa, ‘%Y-%m-%d’

    Como resolvo, pode me ajudar?





    Boa tarde Andressa,

       Remova o str_to_date e passe o valor de sua string assim :

    string dataInsert = Convert.ToDateTime(suadata).ToString("yyyy-MM-dd");
     Caso não funcione utilize parametro conforme o link que mencionei na resposta anterior.

    • Marcado como Resposta Andressa.s sábado, 18 de março de 2017 04:50
    quarta-feira, 15 de março de 2017 19:06

Todas as Respostas

  • Bom dia Andressa como vai ?

     Olhando so falta ler a linha do datagrid que esta selecionada seria assim:

    //verifica existe linha selcionada
    if(datagridview.SelectedRows.Count > 0)
    {
      //insere na tabela
      ccn.Codigo_cance = datagridView1.SelectedRows[0].Cells[0].Value.ToString();
    
    //...
    }

     Outra coisa poderia utilizar parametros para passar os dados no seu insert :

     Parametros com MySql

     

     

    terça-feira, 14 de março de 2017 11:01
  • Boa  Noite,

    Testei e parece  que irá funcionar , mas o único problema está no insert agora, por causa da data, tentei arrumar utilizando STR_TO_DATE  mas não funcionou.

    //modifiquei no formato da data
    string inserir = "INSERT INTO consultas_canceladas (Cd_consulta_cancelada,STR_TO_DATE(Dataa, ‘%Y-%m-%d’),cd_paciente,cro,cd_procedimento,cd_hr,cd_pagamento,hr_dt_inserido)VALUES('" + cadas.Codigo_cance + "','" + cadas.Dataa_cance + "','" + cadas.cd_paciente_cance + "','" + cadas.cro_cance + "' ,'" + cadas.cd_procedimento_cance + "','" + cadas.cd_hr_cance + "','" + cadas.cd_pgto_cance + "','" + cadas.hr_dt_inserido_cance + "')";
    

    Ele apresenta  o seguinte erro:

    Erro de comandosYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(Dataa, ‘%Y-%m-%d’

    Como resolvo, pode me ajudar?





    • Editado Andressa.s terça-feira, 14 de março de 2017 23:47
    terça-feira, 14 de março de 2017 23:26
  • Boa  Noite,

    Testei e parece  que irá funcionar , mas o único problema está no insert agora, por causa da data, tentei arrumar utilizando STR_TO_DATE  mas não funcionou.

    //modifiquei no formato da data
    string inserir = "INSERT INTO consultas_canceladas (Cd_consulta_cancelada,STR_TO_DATE(Dataa, ‘%Y-%m-%d’),cd_paciente,cro,cd_procedimento,cd_hr,cd_pagamento,hr_dt_inserido)VALUES('" + cadas.Codigo_cance + "','" + cadas.Dataa_cance + "','" + cadas.cd_paciente_cance + "','" + cadas.cro_cance + "' ,'" + cadas.cd_procedimento_cance + "','" + cadas.cd_hr_cance + "','" + cadas.cd_pgto_cance + "','" + cadas.hr_dt_inserido_cance + "')";

    Ele apresenta  o seguinte erro:

    Erro de comandosYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(Dataa, ‘%Y-%m-%d’

    Como resolvo, pode me ajudar?





    Boa tarde Andressa,

       Remova o str_to_date e passe o valor de sua string assim :

    string dataInsert = Convert.ToDateTime(suadata).ToString("yyyy-MM-dd");
     Caso não funcione utilize parametro conforme o link que mencionei na resposta anterior.

    • Marcado como Resposta Andressa.s sábado, 18 de março de 2017 04:50
    quarta-feira, 15 de março de 2017 19:06
  • Boa Noite,

    funcionou perfeitamente, me salvou...mto obrigado jovem!

    :)

    sábado, 18 de março de 2017 04:51