Jump to content
AnaGPSI

[Resolvido] Datagridview eliminar

Recommended Posts

AnaGPSI

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

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
Caça
        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

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

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

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

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

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

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

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


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

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

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

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
Caça

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 by Caça

Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
AnaGPSI

Obrigada pela ajuda e disponibilidade mas acabei por mudar o meu formulário!

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.