Jump to content

Datagriedview com checkboxes.


aprendiz93

Recommended Posts

Desculpa mais n entendi essa sua Lógica.

Vou explicar novamente o que eu preciso.

Tenho um Datagriedview que é preenchido com dados do BD access. Criei uma coluna no Datagriedview com Checkboxs para o usário marcar quais registros ele deseja excluir. Após o usuário marca os registros que ele quer excluir gostaria q ele clica-se

no botão remover e exclui-se o registro q ele selecionou.

Qual seria o código necessário para esse algoritimo?

Agradeço pela atenção.

Link to comment
Share on other sites

Acho que fui bem claro, mas volto a explicar, não tem problema 🙂

Tens que percorrer as posiçoes da dataGrid, e se a checkBox estiver checkada vais eliminar, então:

For i = 0 To dg.Rows.Count - 1

   If dg.Item(0, i).Value = "Sim" Then
       ''CODIGO PARA ELIMINAR
   End If

Next

Percebeste ?

NOTA: Nunca utilizei a opção de eliminar com checkbox em dataGrid, portanto não será " .Value = "SIM" ".

Edited by Caça
GeSHi

Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Link to comment
Share on other sites

Acho que fui bem claro, mas volto a explicar, não tem problema 🙂

Tens que percorrer as posiçoes da dataGrid, e se a checkBox estiver checkada vais eliminar, então:

For i = 0 To dg.Rows.Count - 1

If dg.Item(0, i).Value = "Sim" Then
	''CODIGO PARA ELIMINAR
End If

Next

Percebeste ?

NOTA: Nunca utilizei a opção de eliminar com checkbox em dataGrid, portanto não será " .Value = "SIM" ".

Penso que seja 1 ou 0 😉

Link to comment
Share on other sites

Boa Tarde!!

Implementei esse código mais n deu em nd. segue o meu código.

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

 Dim ligação As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Projects\Controle de Despesas\Usuário.accdb;Persist Security Info=False;"

 For i = 0 To DataGridView1.Rows.Count - 1


	 If Convert.ToBoolean(DataGridView1.Item(0, i).Value) = True Then


		 'CODIGO PARA ELIMINAR

		 Dim query As String = "Delete from BDUSUA where codigo = " & DataGridView1.Item(0, i).Value & ""


	 End If
 Next
End Sub


Agradeço desde já pela força.

Edited by Caça
Link to comment
Share on other sites

Nem podia dar. Ou estariamos perante um milagre.

O 0(zero) de Item(0,i) indica a coluna.

Por isso tens de colocar o numero da coluna que tens a checkbox na primeira expressão, e na outra (código para eliminar) indicas a coluna onde está o codigo (coluna com indice unico ou chave primária da tabela DBUSA).

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
Share on other sites

Bom dia!!

Ainda continuo com problemas. Mesmo colocando as colunas corretas no código não faz função nenhuma e nem da erro. Segue o código.


Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

Dim ligação As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Projects\Controle de Despesas\Usuário.accdb;Persist Security Info=False;"

For i = 0 To DataGridView1.Rows.Count - 1


If Convert.ToBoolean(DataGridView1.Item(1, i).Value) = True Then


'CODIGO PARA ELIMINAR

Dim query As String = "Delete from BDUSUA where Código = " & DataGridView1.Item(2, i).Value & ""


End If
Next
End Sub
Link to comment
Share on other sites

Boass!!

Fiz mais umas implementações no meu código mais agora esta dando error. "Nenhum valor foi fornecido para um ou mais parâmetros necessários."

Segue o código.


Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

Dim ligação As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Projects\Controle de Despesas\Usuário.accdb;Persist Security Info=False;"

Dim conecção As New OleDbConnection(ligação)

For i = 0 To DataGridView1.Rows.Count - 1


If Convert.ToBoolean(DataGridView1.Item(1, i).Value) = True Then

'CODIGO PARA ELIMINAR

Dim sintaxe As String = "Delete from BDUSUA where Código = " & DataGridView1.Item(2, i).Value & ""

Dim command As New OleDbCommand(sintaxe, conecção)

conecção.Open()

Dim insere As Integer = command.ExecuteNonQuery()

If insere < 1 Then
MsgBox("Usuário não foi exluido!! Tente novamente!!")
Else
MsgBox("Usuário Excluido com sucesso!!")
End If

conecção.Close()

Dim da As New OleDb.OleDbDataAdapter
Dim ds As DataSet
Dim sintaxe2 = "Select * From BDUSUA"
command.CommandText = sintaxe2
command.Parameters.Clear()
da.SelectCommand = command
' Cria um DataSet, ou seja, uma representação em memória da informação
ds = New DataSet
' Coloca a informação da tabela definida no DataSet
da.Fill(ds, "BDUSUA")
' Define que a fonte de dados da DataGridView é a nossa DataSet
' criando automáticamente as colunas e linhas de dados
Me.DataGridView1.DataSource = ds.Tables("BDUSUA")
sintaxe = Nothing
conecção = Nothing

End If
Next
End Sub
Link to comment
Share on other sites

Mais uma vez eu digo: usem apenas códigos que saibam o que faz. Algum dia ainda terão dissabores serios.

Quanto ao teu problema,

1- Tu pediste ajuda num código para eliminar registos de um tabela, que estão carregados numa datagrid, mas não indicaste como eles foram carregados.

2- O objecto Command deve ser usado depois da conecção ser aberta e antes de a fechar, e não deves dentro de um ciclo estar a abrir e fechar constantemente essa conecção.

3- Também só é suposto recarregares os registos restantes depois de todas as eliminações.

4- A coluna com checkbox está ligada a um campo da tabela BDUSUA? Se não então os valores perdem-se a cada recarregamento.

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
Share on other sites

Boas!

Eu esclareci muito bem o que eu preciso, mais cada um fala para min fazer uma coisa, ai sai essas cacas.

Mais vamos lá, vou explicar novamente o que eu preciso.

Tenho um Datagriedview ligado a uma tabela do BD access que tem apenas 3 campos, codigo,nome, senha. Criei uma coluna no Datagriedview com Checkboxs chamada Selecionar, para o usário marcar quais registros ele deseja excluir. Após o usuário marca os registros que ele quer excluir gostaria q ele clica-se no botão remover que fica fora do Datagriedview "Óbvio"e exclui-se os registros q ele selecionou.

Edited by aprendiz93
Link to comment
Share on other sites

As cacas que sairam foram apenas porque você não desenvolveu um código seguindo as dicas aqui apresentadas.

Você ficou sempre à espera de um código completo e pronto a usar.

Revisando:

Existe um procedimento, que você não mostrou, para carregar a tabela na datagrid.

Essa datagrid tem como primeira coluna uma checkbox, será a coluna 0

O código do usuário será coluna 1 (segunda coluna).

A coluna seguinte (2) deve ter o Nome.

Então:

Para apagar os usuários selecionados na checkbox (coluna 0) deve percorrer todas as linhas da checkbox, e onde o valor for 'True' (Valor Lógico) apagar o respecivo usuário da tabela pelo código (coluna 1).

No final carregar a tabela novamente na datagrid, para visualizar os usuários que ficaram.

Penso não ser difícil, se você está realmente interessado em aprender a programar.

Se não for o caso disso, deixo-lhe uma papinha feita por min:

Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
 Dim ligação As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Projects\Controle de Despesas\Usuário.accdb;Persist Security Info=False;"
 Dim conecção As New OleDbConnection(ligação)
 conecção.Open()
 Dim command As New OleDbCommand
 command.Connection = conecção
 Dim r As Long = 0
 For i = 0 To DataGridView1.Rows.Count - 1
	 If DataGridView1.Item(0, i).Value = True Then
		 command.CommandText = "DELETE FROM BDUSUA WHERE Código = " & DataGridView1.Item(1, i).Value
		 r = r + command.ExecuteNonQuery()
	 End If
 Next
 conecção.Close()
 If r Then
	 MsgBox(r & " Usuários Excluidos com sucesso!!")
 Else
	 MsgBox("Nenhum Usuário não foi exluido!! Tente novamente!!")
 End If
 'Carregar novamente a tabela BDUSUA na DataGridView1
End Sub

A escolha é sua.

Edited by FreiNando

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
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.