AnaGPSI 0 Report post Posted May 7, 2012 Olá boa tarde eu tenho uma datagridview com uma coluna do tipo DataGridViewCheckBoxColumn a minha dúvida é a seguinte: como faço para poder eliminar dados da base de dados em acess ao clicar numa ou mais chexkbox da tal coluna. Ou seja eliminar a linha correspondente a esse checkbox e da datagridview e da base de dados! Share this post Link to post Share on other sites
Caça 17 Report post Posted May 7, 2012 Percorres as linhas, verificas quais são as selecionadas e procedes a eliminação dos registos na Base de dados. Pedro Martins Não respondo a duvidas por PM Share this post Link to post Share on other sites
AnaGPSI 0 Report post Posted May 7, 2012 Tem algum exemplo em código à mão? Share this post Link to post Share on other sites
Caça 17 Report post Posted May 7, 2012 Para eliminar http://wiki.portugal-a-programar.pt/dev_net:vb.net:access Para percorrer basta um simples For Each Pedro Martins Não respondo a duvidas por PM Share this post Link to post Share on other sites
AnaGPSI 0 Report post Posted May 7, 2012 E como faço esse for each? Share this post Link to post Share on other sites
Caça 17 Report post Posted May 7, 2012 For Each L As DataGridViewRow In Dgv.Rows 'Verifica se a linha foi selecionada com um check If L.Cells(0).Value = True Then 'Elimina o registo End If Next Pedro Martins Não respondo a duvidas por PM Share this post Link to post Share on other sites
AnaGPSI 0 Report post Posted May 9, 2012 Não estou a conseguir será que me podia dar uma mãozinha? Dados: nome BD= mydb (Access) nome da tabela = curso campos da tabela: cod_curso (autoincrementado) nome sigla Share this post Link to post Share on other sites
Caça 17 Report post Posted May 9, 2012 O que é que já tens feito? Mostra o teu código actual. Pedro Martins Não respondo a duvidas por PM Share this post Link to post Share on other sites
AnaGPSI 0 Report post Posted May 9, 2012 Já experimentei várias maneiras e já voltei ao inicio, ou seja neste momento depois de tanto alterar só já tenho isto Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click For Each L As DataGridViewRow In DataGridView1.Rows 'Verifica se a linha foi selecionada com um check If L.Cells(0).Value = True Then 'Elimina o registo End If Next End Sub EDIT: GeSHi adicionado Share this post Link to post Share on other sites
Caça 17 Report post Posted May 9, 2012 Ainda não tens nada, no link que te dei tens lá um exemplo, podes começar a fazer qualquer coisa, não estejas a espera que façam por ti... Pedro Martins Não respondo a duvidas por PM Share this post Link to post Share on other sites
AnaGPSI 0 Report post Posted May 9, 2012 Eu sei e também não estou a espera que o façam por mim né? O problema é que não entendo o código da hiperligação mas obrigada na mesma pela disponibilidade. Share this post Link to post Share on other sites
Blackvelvet 0 Report post Posted May 9, 2012 Viva, Se colocares o teu codigo todo,será melhor para te ajudarem. Coloca lá o codigo..... 😎 Share this post Link to post Share on other sites
arrelialp 0 Report post Posted May 9, 2012 Tenho algo assim: Option Strict Off Public Class Nome_do_Form Dim listaID_Dados As New List(Of Integer) No load do form: Private Sub FormNome_do_Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadlistaID_Dados = New List(Of Integer)Dim checkbox As New DataGridViewCheckBoxColumn With checkbox .ReadOnly = False .FalseValue = 0 .FlatStyle = FlatStyle.Standard .HeaderText = "Seleccionar" End With Me.DataGridView1.Columns.Add(checkbox) End Sub Depois, no tal botão que tens: Private Sub BotaoGravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BotaoGravar.Click Dim listaID_Dados As New List(Of Integer)' ARMAZENAR DADOS ---- For Each item As DataGridViewRow In DataGridView1.Rows If item.Cells(0).Value = False Then Continue For listaID_Dados.Add(item.Cells(1).Value) End if Next If listaID_Dados.Count = 0 Then MessageBox.Show("Seleccione primeiro!", Me.Name, MessageBoxButtons.OK, MessageBoxIcon.Information) Else If MessageBox.Show("Tem a certeza que deseja inserir os items seleccionados?", Me.Name, MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.No Then Exit Sub ' Percorre-se as checkboxs seleccionadas: For i As Integer = 0 To listaID_Dados.Count - 1 ' Por cada checkbox seleccionada fazes o que tens a fazer, que é, no teu caso, apagar registos '... 'Finalmente Next MessageBox.Show("Registos apagados com sucesso!", Me.Name, MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Sub End Class Não sei se ajuda.... Share this post Link to post Share on other sites
AnaGPSI 0 Report post Posted May 30, 2012 Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click Dim connetionString As String Dim oledbCnn As OleDbConnection Dim oledbCmd1 As OleDbCommand 'Dim oledbCmd1 As OleDbCommand Dim cod_dis As Integer connetionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\GPSI\Documents\mydb.accdb;" Dim mydb As New OleDbConnection(connetionString) mydb.Open() Dim listaID_Dados As New List(Of Integer) Dim item As New DataGridViewRow For i As Integer = 0 To listaID_Dados.Count - 1 If item.Cells(0).Value = True Then Dim a As String = item.Cells(1).Value MsgBox(a) ''''''''''''''''''''''''''' 'Definir codigo de disciplina e atribuir a variavel Dim sql2 As Integer sql2 = "select cod_disciplina from disciplina where nome_disciplina=" & a & "'" oledbCnn = New OleDbConnection(connetionString) Try oledbCnn.Open() oledbCmd1 = New OleDbCommand(sql2, oledbCnn) Dim oledbReader1 As OleDbDataReader = oledbCmd1.ExecuteReader() While oledbReader1.Read cod_dis = oledbReader1.Item(0) MsgBox(cod_dis) End While Dim sqlb As String = "Delete cod_curso, cod_disciplina from curso_disciplina where cod_disciplina=" & cod_dis & "'" Dim cmd2 As New OleDbCommand(sqlb, mydb) cmd2.ExecuteNonQuery() Finally End Try MsgBox("Disciplina removida do curso") ''''''''''''''''''''''''''' End If Next End Sub End Class Coloquei este código mas não me faz nada! Onde estará o erro? Share this post Link to post Share on other sites
Caça 17 Report post Posted May 30, 2012 Que erro é que está a dar? Pedro Martins Não respondo a duvidas por PM Share this post Link to post Share on other sites
AnaGPSI 0 Report post Posted May 30, 2012 Não dá erro aparece logo "Disciplina removida do curso" mas não faz nada! Coloquei esta msgbox: MsgBox(a) para verificar se retornava um valor em "a" mas nem esse msgbox aparece! Share this post Link to post Share on other sites
Caça 17 Report post Posted May 30, 2012 Não está a dar erro dentro do bloco Try? É que estas a ignorar o erro caso apareça.. Pedro Martins Não respondo a duvidas por PM Share this post Link to post Share on other sites
AnaGPSI 0 Report post Posted May 30, 2012 Não me esta a dar erro nenhum! Share this post Link to post Share on other sites
Caça 17 Report post Posted May 30, 2012 (edited) Ou esta a dar erro e estas a ignora-lo, logo passa para a mensagem, ou então o delete que estás a fazer não afecta nenhum registo na BD.. EDIT: Ou esta condição nunca é verdadeira If item.Cells(0).Value = True Then EDIT2: Essa condição nunca é verdadeira.. Edited May 30, 2012 by Caça Pedro Martins Não respondo a duvidas por PM Share this post Link to post Share on other sites
AnaGPSI 0 Report post Posted May 31, 2012 Obrigada pela ajuda e disponibilidade mas acabei por mudar o meu formulário! Share this post Link to post Share on other sites