Usuário com melhor resposta
Cadastrar dados do datagridview em uma tabela no banco de dados

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!
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
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(); }
-
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
-
-
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. -
-
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.
-
-
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
-