1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

datagridview vb.net[Resolvido]

Discussão em 'Programação' iniciada por Ruben_Barbosa, 16 de Março de 2009. (Respostas: 30; Visualizações: 7716)

  1. Ruben_Barbosa

    Ruben_Barbosa Power Member

    PRecisava de uma dica vossa pessoal, como eleminar uma linha selecionada de um datagridview ;)
     
    Última edição: 24 de Março de 2009
  2. nasic

    nasic Power Member

    Código:
    int rowNumber = dataGridView.CurrentRow();
    
    Se não estou em erro Isto permite-te determinar qual a row seleccionada.Dps é eleminar essa mm linha. Agora depende o pretendes fazer. Queres apagar a linha após seleccionares a linha e carregares num botão? Ou simplesmente seleccionar a linha? Deve existir um evento para tal. É uma questão de procurares.

    Boa sorte Ruben
     
  3. Ruben_Barbosa

    Ruben_Barbosa Power Member

    obrigado :)

    Mas não ta a dar **** :S!!!

    não sei pk ?
     
    Última edição: 17 de Março de 2009
  4. Ruben_Barbosa

    Ruben_Barbosa Power Member

    SE ALGUEM PODER dar uma dica agradecia ;)
     
  5. ribeiro55

    ribeiro55 Power Member

    Não estou a ver uma situação em que queiras apagar uma linha de uma DataGridView, sem apagar a linha correspondente na datasource (a menos que estejas a empregar estructuras na datasource, e não databases, e mesmo assim...), por isso porque não executas uma query DELETE e voltas a fazer o SELECT ?
    Dessa forma, a linha vai-te "desaparecer".

    EDIT: Já exprimentaste?:
    Código:
    DataGridView1.Rows.RemoveAt(DataGridView1.SelectedRows(0).Index)
     
    Última edição: 17 de Março de 2009
  6. Granadafeup

    Granadafeup Power Member

    SE PUDESSES POSTAR O CODIGO se calhar alguém ajudava :P

    edit: O ribeiro55 chegou primeiro :P
     
  7. Ruben_Barbosa

    Ruben_Barbosa Power Member

    Mais um vez Obrigado ribeiro :) impecavel :)
    mas tambem quero apagar da BD !!!

    Mas eu ao fazer Delete from tabela apago tudo :S que maravilha.

    Tipo eu fiz assim

    Código:
      Try
                Dim respostas As String
                respostas = MsgBox("Deseja Eliminar os dados?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + 256)
                If respostas = 6 Then
                    DataGridView2.Rows.RemoveAt(DataGridView2.SelectedRows(0).Index)
                    Dim cmSQL As New SqlCommand("Delete dispositivo from [email protected]_disp,[email protected],[email protected],[email protected],[email protected] WHERE [email protected]_disp", cnSQL)
                    cmSQL.Parameters.Add(New SqlParameter("@Tipo", TextBox10.Text))
                    cmSQL.Parameters.Add(New SqlParameter("@Marca", TextBox11.Text))
                    cmSQL.Parameters.Add(New SqlParameter("@Modelo", TextBox12.Text))
                    cmSQL.Parameters.Add(New SqlParameter("@Departamento", TextBox13.Text))
                    cmSQL.Parameters.Add(New SqlParameter("@ID_disp", TextBox9.Text))
                    cmSQL.ExecuteNonQuery()
                    cmSQL.Dispose()
                    MsgBox("Dados alterados com sucesso.", MsgBoxStyle.Information)
                End If
            Catch
            End Try
    
    devia apagar a linha que queria so
     
    Última edição: 17 de Março de 2009
  8. ribeiro55

    ribeiro55 Power Member

    Código:
    "Delete dispositivo from [email protected]_disp,[email protected],[email protected],[email protected],[email protected] WHERE [email protected]_disp"
    
    Estar a apagar-te a tabela toda é uma sorte, porque a síntaxe está errada.

    A síntaxe correcta seria:
    Código:
    DELETE FROM dispositivo WHERE [email protected]_disp
    EDIT: E não devias eliminar a linha da datagrid sem ter a certeza de que a query foi executada com sucesso. Já que a queres apagar manualmente.
     
  9. Ruben_Barbosa

    Ruben_Barbosa Power Member

    PEssoal é o seguinte ele apaga-me a linha do datagridview mas não me apaga da bd :S

    Pois faco actualizar o dtgview e torna aparecer :S

    Meu codigo
    Código:
    Try
                Dim respostas As String
                respostas = MsgBox("Deseja Eliminar os dados?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + 256)
                If respostas = 6 Then
                    DataGridView2.Rows.RemoveAt(DataGridView2.SelectedRows(0).Index)
                    Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE [email protected]_disp,[email protected],[email protected],[email protected],[email protected]", cnSQL)
                    cmSQL.Parameters.Add(New SqlParameter("@Tipo", TextBox10.Text))
                    cmSQL.Parameters.Add(New SqlParameter("@Marca", TextBox11.Text))
                    cmSQL.Parameters.Add(New SqlParameter("@Modelo", TextBox12.Text))
                    cmSQL.Parameters.Add(New SqlParameter("@Departamento", TextBox13.Text))
                    cmSQL.Parameters.Add(New SqlParameter("@ID_disp", TextBox9.Text))
                    cmSQL.ExecuteNonQuery()
                    cmSQL.Dispose()
                    MsgBox("Dados alterados com sucesso.", MsgBoxStyle.Information)
                End If
            Catch
            End Try
    
     
  10. Granadafeup

    Granadafeup Power Member

    Embora não resolva o teu problema fica o conselho, se o ID_disp for a tua Chave Primária dessa tabela escusas de colocar as outras colunas dentro do where.

    Outro conselho será fazeres refactoring do nome das textbox, pois ao fazer debug ver TextBoxN no codigo pode ser confusoe induzir em erros.
     
  11. Ruben_Barbosa

    Ruben_Barbosa Power Member


    Alguem pode dar uma mãozinha?

    não ta a funcar n sei pk, tipo Ele apagar me a linha do Datagridview mAS nao da BD :(:(:(
     
    Última edição: 20 de Março de 2009
  12. Ruben_Barbosa

    Ruben_Barbosa Power Member

    Última edição: 20 de Março de 2009
  13. jpaulino

    jpaulino Power Member

    Alteraste hoje: Última edição de Ruben_Barbosa : Hoje às 09:44

    De qualquer maneira estás a indicar um parametro no comando T-SQL "@ID_disp" e depois não está a indicar o valor.

    Para saberes se o comando executou e quantos registos foram afectados podes fazer:

    Dim result As Integer = cmSQL.ExecuteNonQuery()

    Se o result for 1, para o teu caso, é porque apagou um registo.
     
  14. Ruben_Barbosa

    Ruben_Barbosa Power Member

    sim sim alterei a bocado ;) para poupar trabalho xD de fAZER outro xD
     
  15. Ruben_Barbosa

    Ruben_Barbosa Power Member

    Nao dá :S:S ****
     
  16. ribeiro55

    ribeiro55 Power Member

    Ou estás a fazer alguma coisa errada, ou não tens permissão na DB para um DELETE.

    Exprimenta sem usar argumentos, ou seja, a query directa toda "escrevinhada" à pata.
    Usa a solução que o jpaulino te deu para receberes o resultado da query.
     
  17. jpaulino

    jpaulino Power Member


    Não dá o quê ?

    Mostra lá como está agora e qual é o resultado da variavel "result" ?
     
  18. Ruben_Barbosa

    Ruben_Barbosa Power Member


    Eu tou farto de workar na query da BD em SQL e lá funciona
    Código:
    delete from dispositivos where ID_disp='"DISP=01"'
    
    Mas o que quero é na datagridview ele seleciona uma linha e dps vai carrregar no botao eliminar e ele elimina.

    O que acontece elemina a linha no dtgview com o seguinte codido
    Código:
    DataGridView2.Rows.RemoveAt(DataGridView2.SelectedRows(0).Index 
    
    mas na base de dados não apaga enfim :S:S não percebo

    postar o codigo again.

    Código:
     Try
                Dim respostas As String
                respostas = MsgBox("Deseja Eliminar os dados?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + 256)
                If respostas = 6 Then
                    DataGridView2.Rows.RemoveAt(DataGridView2.SelectedRows(0).Index)
                    Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE [email protected]_dip", cnSQL)
                    cmSQL.ExecuteNonQuery()
                    cmSQL.Dispose()
                    MsgBox("Dados alterados com sucesso.", MsgBoxStyle.Information)
                End If
            Catch
            End Try
    
     
  19. PNDmartins

    PNDmartins Power Member

    Epá.. até não é tão complicado como isso, pelo menos nao me parece.

    O teu problema está nestas 2 linhas de código:

    Código:
     Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE [email protected]_disp", cnSQL)
     cmSQL.ExecuteNonQuery()
    
    Tu na query tens "Where [email protected]_Disp" mas onde é que lhe estás a dar o ID para executar a query??

    Como não estás a dar isso, o ID vai vazio e o sql não gosta que dados vazios.

    Tenta por antes assim:

    Código:
    Dim TempID as integer
    TempID = dtgview.SelectedRows(0).Cells("O nome da coluna que tem o ID").Value
    
    Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE ID_disp=" & TempID, cnSQL)
     cmSQL.ExecuteNonQuery()
    
    Agora 2 criticas:
    - Lê bem os post pk o ribeirinho55 já te disse para fazeres isto antes.

    - Se tivesses perdido 2 minutos no google tinhas percebido logo qual era o problema.
     
    Última edição: 20 de Março de 2009

Partilhar esta Página