none
Cadastrar dados do datagridview em uma tabela no banco de dados RRS feed

  • Pergunta

  • Fala galera boa tarde! Estou com um problema em fazer uma inserção de dados apresentado ao meu datagridview.

    Eu tenho uma tabela chamada Eventos, e nela consta todos meus registros, eu criei uma outra tabela com os mesmo campos, para que fosse baixados os eventos quando a data estiver expirada.

    o problema é o seguinte... quando eu faço a inserção dos dados apresentados da primeira tabela jogando eles para a tabela eventos baixados, os dados duplica, ou seja ele esta pegando tanto o primeiro id quando os demais. Obs:(Estou selecionando os dados da linha do datagridview através de um menu e dando um click.) segue a imagem.

    segue meu codigo

     private void BaixarDadosAgenda()
            {
                try
                {
                    if (DGW_Agenda.Rows.Count > 1)
                    {
                        cg.con = new SqlConnection(cn.DBconn);
                        string cb = "INSERT INTO Eventos_Baixados VALUES (@Nome, @Endereco, @Quadra, @Lote, @Telefone, @Celular, @Data, @Hora, @Email, @Observacao, @Locacao, @Evento, @Estado)";
                        cg.con.Open();
                        cg.cmd = new SqlCommand(cb);
                        cg.cmd.Connection = cg.con;
                        for (int i = 0; i <= DGW_Agenda.Rows.Count - 1; i++)
                        {       
                            DGW_Agenda.CurrentRow.Cells[0].Value.ToString();
                            DGW_Agenda.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
                            DGW_Agenda.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
                            DGW_Agenda.MultiSelect = false;
                            cg.cmd.Parameters.Clear();
                            cg.cmd.Parameters.AddWithValue("@Nome", DGW_Agenda.Rows[i].Cells["Nome"].Value);
                            cg.cmd.Parameters.AddWithValue("@Endereco", DGW_Agenda.Rows[i].Cells["Endereco"].Value);
                            cg.cmd.Parameters.AddWithValue("@Quadra", DGW_Agenda.Rows[i].Cells["Quadra"].Value);
                            cg.cmd.Parameters.AddWithValue("@Lote", DGW_Agenda.Rows[i].Cells["Lote"].Value);
                            cg.cmd.Parameters.AddWithValue("@Telefone", DGW_Agenda.Rows[i].Cells["Telefone"].Value);
                            cg.cmd.Parameters.AddWithValue("@Celular", DGW_Agenda.Rows[i].Cells["Celular"].Value);
                            cg.cmd.Parameters.AddWithValue("@Data", DGW_Agenda.Rows[i].Cells["Data"].Value);
                            cg.cmd.Parameters.AddWithValue("@Hora", DGW_Agenda.Rows[i].Cells["Hora"].Value);
                            cg.cmd.Parameters.AddWithValue("@Email", DGW_Agenda.Rows[i].Cells["Email"].Value);
                            cg.cmd.Parameters.AddWithValue("@Observacao", DGW_Agenda.Rows[i].Cells["Observacao"].Value);
                            cg.cmd.Parameters.AddWithValue("@Locacao", DGW_Agenda.Rows[i].Cells["Locacao"].Value);
                            cg.cmd.Parameters.AddWithValue("@Evento", DGW_Agenda.Rows[i].Cells["Evento"].Value);
                            cg.cmd.Parameters.AddWithValue("@Estado", DGW_Agenda.Rows[i].Cells["Estado"].Value);
                            cg.cmd.ExecuteNonQuery();
                            DGW_Agenda.Rows.Clear();
    
                        }
                        cg.con.Close();
                        st1 = Lbl_Usuario.Text;
                        st2 = "Nova Locacão Baixada '" + TB_Nome.Text;
                        cf.LogFunc(st1, DateTime.Now, st2);
                        LogEvento.GravarLog("'Locação Baixada com Sucesso! :  = '" + TB_Nome.Text + "'Usuário'" + Lbl_Usuario.Text.ToString());
                        Reset();
                        BTN_Cadastrar.Enabled = false;
    
                        MessageBox.Show("Locação Baixada Com Sucesso !", "Locação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                      
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
    
            private void BT_BaixaAgenda_Click(object sender, EventArgs e)
            {
    
    
                if (MessageBox.Show("Deseja dar baixa nessa Locação?", "Aviso do Sistema", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                
                    BaixarDadosAgenda();
                }
    
            }

    Desde de já agradeço pela força!

    terça-feira, 2 de abril de 2019 19:34

Respostas

  • Olá, tenta o código...

    private void BaixarDadosAgenda()
    {
    	try
    	{
    		var row = DGW_Agenda.CurrentRow;
    		if (row != null)
    		{
    			//ao meu ver essas configurações seriam ao carregar a tela
    			DGW_Agenda.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    			DGW_Agenda.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
    			DGW_Agenda.MultiSelect = false;
    
    			cg.con = new SqlConnection(cn.DBconn);
    			string cb = "INSERT INTO Eventos_Baixados VALUES (@Nome, @Endereco, @Quadra, @Lote, @Telefone, @Celular, @Data, @Hora, @Email, @Observacao, @Locacao, @Evento, @Estado)";
    			cg.con.Open();
    			cg.cmd = new SqlCommand(cb);
    			cg.cmd.Connection = cg.con;
    			//for (int i = 0; i <= DGW_Agenda.SelectedRows.Count - 1; i++)
    			{       
    				cg.cmd.Parameters.Clear();
    				cg.cmd.Parameters.AddWithValue("@Nome", row.Cells["Nome"].Value);
    				cg.cmd.Parameters.AddWithValue("@Endereco", row.Cells["Endereco"].Value);
    				cg.cmd.Parameters.AddWithValue("@Quadra", row.Cells["Quadra"].Value);
    				cg.cmd.Parameters.AddWithValue("@Lote", row.Cells["Lote"].Value);
    				cg.cmd.Parameters.AddWithValue("@Telefone", row.Cells["Telefone"].Value);
    				cg.cmd.Parameters.AddWithValue("@Celular", row.Cells["Celular"].Value);
    				cg.cmd.Parameters.AddWithValue("@Data", row.Cells["Data"].Value);
    				cg.cmd.Parameters.AddWithValue("@Hora", row.Cells["Hora"].Value);
    				cg.cmd.Parameters.AddWithValue("@Email", row.Cells["Email"].Value);
    				cg.cmd.Parameters.AddWithValue("@Observacao", row.Cells["Observacao"].Value);
    				cg.cmd.Parameters.AddWithValue("@Locacao", row.Cells["Locacao"].Value);
    				cg.cmd.Parameters.AddWithValue("@Evento", row.Cells["Evento"].Value);
    				cg.cmd.Parameters.AddWithValue("@Estado", row.Cells["Estado"].Value);
    				cg.cmd.ExecuteNonQuery();
    			}
    			cg.con.Close();
    
    			DGW_Agenda.Refresh();
    
    			st1 = Lbl_Usuario.Text;
    			st2 = "Nova Locacão Baixada '" + TB_Nome.Text;
    			cf.LogFunc(st1, DateTime.Now, st2);
    			LogEvento.GravarLog("'Locação Baixada com Sucesso! :  = '" + TB_Nome.Text + "'Usuário'" + Lbl_Usuario.Text.ToString());
    			Reset();
    			BTN_Cadastrar.Enabled = false;
    
    			MessageBox.Show("Locação Baixada Com Sucesso !", "Locação", MessageBoxButtons.OK, MessageBoxIcon.Information);
    		  
    		}
    	}
    	catch (Exception ex)
    	{
    		MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    	}
    }

    Se ajudou, marque como resposta! Obrigado.

    • Marcado como Resposta Lucas_Silvaa quarta-feira, 3 de abril de 2019 14:50
    quarta-feira, 3 de abril de 2019 14:03

Todas as Respostas

  • Experimente alterar a forma que o seu FOR está trabalhando utilizando a propriedade SelectedRows. Assim:

    for (int i = 0; i <= DGW_Agenda.SelectedRows.Count - 1; i++)
                        {       
                            DGW_Agenda.CurrentRow.Cells[0].Value.ToString();
                            DGW_Agenda.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
                            DGW_Agenda.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
                            DGW_Agenda.MultiSelect = false;
                            cg.cmd.Parameters.Clear();
                            cg.cmd.Parameters.AddWithValue("@Nome", DGW_Agenda.SelectedRows[i].Cells["Nome"].Value);
                            cg.cmd.Parameters.AddWithValue("@Endereco", DGW_Agenda.SelectedRows[i].Cells["Endereco"].Value);
                            cg.cmd.Parameters.AddWithValue("@Quadra", DGW_Agenda.SelectedRows[i].Cells["Quadra"].Value);
                            cg.cmd.Parameters.AddWithValue("@Lote", DGW_Agenda.SelectedRows[i].Cells["Lote"].Value);
                            cg.cmd.Parameters.AddWithValue("@Telefone", DGW_Agenda.SelectedRows[i].Cells["Telefone"].Value);
                            cg.cmd.Parameters.AddWithValue("@Celular", DGW_Agenda.SelectedRows[i].Cells["Celular"].Value);
                            cg.cmd.Parameters.AddWithValue("@Data", DGW_Agenda.SelectedRows[i].Cells["Data"].Value);
                            cg.cmd.Parameters.AddWithValue("@Hora", DGW_Agenda.SelectedRows[i].Cells["Hora"].Value);
                            cg.cmd.Parameters.AddWithValue("@Email", DGW_Agenda.SelectedRows[i].Cells["Email"].Value);
                            cg.cmd.Parameters.AddWithValue("@Observacao", DGW_Agenda.SelectedRows[i].Cells["Observacao"].Value);
                            cg.cmd.Parameters.AddWithValue("@Locacao", DGW_Agenda.SelectedRows[i].Cells["Locacao"].Value);
                            cg.cmd.Parameters.AddWithValue("@Evento", DGW_Agenda.SelectedRows[i].Cells["Evento"].Value);
                            cg.cmd.Parameters.AddWithValue("@Estado", DGW_Agenda.SelectedRows[i].Cells["Estado"].Value);
                            cg.cmd.ExecuteNonQuery();
                            DGW_Agenda.Rows.Clear();
    
                        }

    terça-feira, 2 de abril de 2019 20:14
  • Olá @jehanKheller bom dia! Testei essa opção porem sem sucesso!

    quando faço o insert ele so pega o primeiro registro, e a apos fazer o insert quando executado, ambos os dados somem do datagriview ao inves de de limpar apenas a linha que foi inserida. 

    segue a imagem 

    quarta-feira, 3 de abril de 2019 10:28
  • Olá, pode mostrar o código sql ou a procedure... ao meu ver está certo o ajuste por selectedRows...
    quarta-feira, 3 de abril de 2019 11:57
  • Olá @LeonardoBastos

    Eu tenho duas tabelas com os mesmo campos com seguinte código

    CREATE TABLE [dbo].[Eventos_Baixados] (
        [Id]         INT            IDENTITY (1, 1) NOT NULL,
        [Nome]       NVARCHAR (200) NULL,
        [Endereco]   NVARCHAR (100) NULL,
        [Quadra]     NVARCHAR (20)  NULL,
        [Lote]       NVARCHAR (20)  NULL,
        [Telefone]   NVARCHAR (20)  NULL,
        [Celular]    NVARCHAR (20)  NULL,
        [Data]       DATE           NULL,
        [Hora]       TIME (7)       NULL,
        [Email]      NCHAR (50)     NULL,
        [Observacao] NVARCHAR (200) NULL,
        [Locacao]    NVARCHAR (200) NULL,
        [Evento]     NVARCHAR (100) NULL,
        [Estado]     NVARCHAR (50)  NULL,
        PRIMARY KEY CLUSTERED ([Id] ASC)
    );
    e quando eu faço o insert pelo datagridview, mesmo eu selecionando outra linha do meu datagrid ele so pega o primeiro registro.
    quarta-feira, 3 de abril de 2019 12:10
  • Lucas, bom dia.

    Cara, o DGW_Agenda.Rows.Clear(); vai limpar todo o seu grid, remove esse código de dentro do seu for.

    E coloca ele fora do FOR.

    Será incluído todos os registros, e após a inclusão, seu grid será "limpado".

    att.

    Felipe

    quarta-feira, 3 de abril de 2019 12:50
  • Olá, tenta o código...

    private void BaixarDadosAgenda()
    {
    	try
    	{
    		if (DGW_Agenda.SelectedRows.Count > 1)
    		{
    			//ao meu ver essas configurações seriam ao carregar a tela
    			DGW_Agenda.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    			DGW_Agenda.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
    			DGW_Agenda.MultiSelect = false;
    
    			cg.con = new SqlConnection(cn.DBconn);
    			string cb = "INSERT INTO Eventos_Baixados VALUES (@Nome, @Endereco, @Quadra, @Lote, @Telefone, @Celular, @Data, @Hora, @Email, @Observacao, @Locacao, @Evento, @Estado)";
    			cg.con.Open();
    			cg.cmd = new SqlCommand(cb);
    			cg.cmd.Connection = cg.con;
    			for (int i = 0; i <= DGW_Agenda.SelectedRows.Count - 1; i++)
    			{       
    				cg.cmd.Parameters.Clear();
    				cg.cmd.Parameters.AddWithValue("@Nome", DGW_Agenda.SelectedRows[i].Cells["Nome"].Value);
    				cg.cmd.Parameters.AddWithValue("@Endereco", DGW_Agenda.SelectedRows[i].Cells["Endereco"].Value);
    				cg.cmd.Parameters.AddWithValue("@Quadra", DGW_Agenda.SelectedRows[i].Cells["Quadra"].Value);
    				cg.cmd.Parameters.AddWithValue("@Lote", DGW_Agenda.SelectedRows[i].Cells["Lote"].Value);
    				cg.cmd.Parameters.AddWithValue("@Telefone", DGW_Agenda.SelectedRows[i].Cells["Telefone"].Value);
    				cg.cmd.Parameters.AddWithValue("@Celular", DGW_Agenda.SelectedRows[i].Cells["Celular"].Value);
    				cg.cmd.Parameters.AddWithValue("@Data", DGW_Agenda.SelectedRows[i].Cells["Data"].Value);
    				cg.cmd.Parameters.AddWithValue("@Hora", DGW_Agenda.SelectedRows[i].Cells["Hora"].Value);
    				cg.cmd.Parameters.AddWithValue("@Email", DGW_Agenda.SelectedRows[i].Cells["Email"].Value);
    				cg.cmd.Parameters.AddWithValue("@Observacao", DGW_Agenda.SelectedRows[i].Cells["Observacao"].Value);
    				cg.cmd.Parameters.AddWithValue("@Locacao", DGW_Agenda.SelectedRows[i].Cells["Locacao"].Value);
    				cg.cmd.Parameters.AddWithValue("@Evento", DGW_Agenda.SelectedRows[i].Cells["Evento"].Value);
    				cg.cmd.Parameters.AddWithValue("@Estado", DGW_Agenda.SelectedRows[i].Cells["Estado"].Value);
    				cg.cmd.ExecuteNonQuery();
    			}
    			cg.con.Close();
    
    			DGW_Agenda.Refresh();
    
    			st1 = Lbl_Usuario.Text;
    			st2 = "Nova Locacão Baixada '" + TB_Nome.Text;
    			cf.LogFunc(st1, DateTime.Now, st2);
    			LogEvento.GravarLog("'Locação Baixada com Sucesso! :  = '" + TB_Nome.Text + "'Usuário'" + Lbl_Usuario.Text.ToString());
    			Reset();
    			BTN_Cadastrar.Enabled = false;
    
    			MessageBox.Show("Locação Baixada Com Sucesso !", "Locação", MessageBoxButtons.OK, MessageBoxIcon.Information);
    		  
    		}
    	}
    	catch (Exception ex)
    	{
    		MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    	}
    }

    Se ajudou, marque como resposta! Obrigado.

    quarta-feira, 3 de abril de 2019 13:31
  • Alterei meu código, com essa solução porem sem sucesso! ele não cadastra. Fiz um debug ele ja pula direto pra confirmação.
    quarta-feira, 3 de abril de 2019 13:57
  • Olá, tenta o código...

    private void BaixarDadosAgenda()
    {
    	try
    	{
    		var row = DGW_Agenda.CurrentRow;
    		if (row != null)
    		{
    			//ao meu ver essas configurações seriam ao carregar a tela
    			DGW_Agenda.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    			DGW_Agenda.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
    			DGW_Agenda.MultiSelect = false;
    
    			cg.con = new SqlConnection(cn.DBconn);
    			string cb = "INSERT INTO Eventos_Baixados VALUES (@Nome, @Endereco, @Quadra, @Lote, @Telefone, @Celular, @Data, @Hora, @Email, @Observacao, @Locacao, @Evento, @Estado)";
    			cg.con.Open();
    			cg.cmd = new SqlCommand(cb);
    			cg.cmd.Connection = cg.con;
    			//for (int i = 0; i <= DGW_Agenda.SelectedRows.Count - 1; i++)
    			{       
    				cg.cmd.Parameters.Clear();
    				cg.cmd.Parameters.AddWithValue("@Nome", row.Cells["Nome"].Value);
    				cg.cmd.Parameters.AddWithValue("@Endereco", row.Cells["Endereco"].Value);
    				cg.cmd.Parameters.AddWithValue("@Quadra", row.Cells["Quadra"].Value);
    				cg.cmd.Parameters.AddWithValue("@Lote", row.Cells["Lote"].Value);
    				cg.cmd.Parameters.AddWithValue("@Telefone", row.Cells["Telefone"].Value);
    				cg.cmd.Parameters.AddWithValue("@Celular", row.Cells["Celular"].Value);
    				cg.cmd.Parameters.AddWithValue("@Data", row.Cells["Data"].Value);
    				cg.cmd.Parameters.AddWithValue("@Hora", row.Cells["Hora"].Value);
    				cg.cmd.Parameters.AddWithValue("@Email", row.Cells["Email"].Value);
    				cg.cmd.Parameters.AddWithValue("@Observacao", row.Cells["Observacao"].Value);
    				cg.cmd.Parameters.AddWithValue("@Locacao", row.Cells["Locacao"].Value);
    				cg.cmd.Parameters.AddWithValue("@Evento", row.Cells["Evento"].Value);
    				cg.cmd.Parameters.AddWithValue("@Estado", row.Cells["Estado"].Value);
    				cg.cmd.ExecuteNonQuery();
    			}
    			cg.con.Close();
    
    			DGW_Agenda.Refresh();
    
    			st1 = Lbl_Usuario.Text;
    			st2 = "Nova Locacão Baixada '" + TB_Nome.Text;
    			cf.LogFunc(st1, DateTime.Now, st2);
    			LogEvento.GravarLog("'Locação Baixada com Sucesso! :  = '" + TB_Nome.Text + "'Usuário'" + Lbl_Usuario.Text.ToString());
    			Reset();
    			BTN_Cadastrar.Enabled = false;
    
    			MessageBox.Show("Locação Baixada Com Sucesso !", "Locação", MessageBoxButtons.OK, MessageBoxIcon.Information);
    		  
    		}
    	}
    	catch (Exception ex)
    	{
    		MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    	}
    }

    Se ajudou, marque como resposta! Obrigado.

    • Marcado como Resposta Lucas_Silvaa quarta-feira, 3 de abril de 2019 14:50
    quarta-feira, 3 de abril de 2019 14:03
  • Olá LeonardoBastos deu certo! Obrigado, agora esta fazendo o insert conforme eu queria.

    Abraços.

    quarta-feira, 3 de abril de 2019 14:50