datagridview vb.net[Resolvido]

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 raio estás a tentar fazer aqui?
O teu valor de identidade é "DISP=01" ?
Sabes que tudo o que ponhas entre ' ' não sofre parsing, não sabes?
Para quê a igualdade e/ou as aspas?


EDIT:

Código:
            Dim respostas As String
            respostas = MsgBox("Deseja Eliminar os dados?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + 256)
            If respostas = 6 Then
            End If
1-Para quê adivinhar os códigos das enums se podes fazer isto:
Código:
        Dim respostas As DialogResult
        respostas = MsgBox("Deseja Eliminar os dados?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + 256)
        If respostas = Windows.Forms.DialogResult.Yes Then
        End If
2-Question já te dá YesNo. Ou não seria uma question.
 
Última edição:
Mas o que raio estás a tentar fazer aqui?
O teu valor de identidade é "DISP=01" ?
Sabes que tudo o que ponhas entre ' ' não sofre parsing, não sabes?
Para quê a igualdade e/ou as aspas?


Antes demais obrigado a todos.
Ribeiro calma la hein :S!!!!
Eu faço isso na Base de Dados e apaga-me o valor ;), claro isto na query da SQL ;)
Código:
DELETE FROM [dispositivo]
      WHERE ID_disp='DISP01'

So o meu problema é no VB.net :(
Quero que ele ao selecionar a linha no datagridview ele apaga na BD.
Vou tentar como o PNDmartins disse ;) vamos ver como corre ;)
 
Código:
 Try
            Dim TempID As Integer
            Dim respostas As DialogResult
            respostas = MsgBox("Deseja Eliminar os dados?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + 256)
            If respostas = DialogResult.Yes Then
                DataGridView2.Rows.RemoveAt(DataGridView2.SelectedRows(0).Index)
                TempID = DataGridView2.SelectedRows(0).Cells("ID_disp").Value
                Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE ID_disp=@ID_dip", cnSQL)
                cmSQL.ExecuteNonQuery()
                cmSQL.Dispose()
                MsgBox("Dados alterados com sucesso.", MsgBoxStyle.Information)
            End If
        Catch
        End Try

Agradeco mais uma vez a todos mas esta P.... não ta a der :S vou tentar ver se consigo encontrar alguma solução ;)
 
Código:
                 TempID = DataGridView2.SelectedRows(0).Cells("ID_disp").Value
                Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE ID_disp=@ID_dip", cnSQL)

É natural que não dê. Continuas a cometer o mesmo erro.
Desta vez, dás um valor à variável TempID, e depois não a usas.
Nem a metes directa, nem dás ao argumento @ID_dip (ID_disp?, e não dip)

Tenta:
Código:
Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE ID_disp='" & TempID & "'", cnSQL)
 
Ribeiro lol postei mal :S eu meti isso como escreves.te e nada :S
Bem pessoal de qualquer forma OBrigado a todos ;).
Vou tentar de outra forma ;)
 
Última edição:
Código:
 Try
            Dim TempID As Integer
            Dim respostas As DialogResult
            respostas = MsgBox("Deseja Eliminar os dados?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + 256)
            If respostas = DialogResult.Yes Then
                DataGridView2.Rows.RemoveAt(DataGridView2.SelectedRows(0).Index)
                TempID = DataGridView2.SelectedRows(0).Cells("ID_disp").Value
                Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE ID_disp=@ID_dip", cnSQL)
                cmSQL.ExecuteNonQuery()
                cmSQL.Dispose()
                MsgBox("Dados alterados com sucesso.", MsgBoxStyle.Information)
            End If
        Catch
        End Try

Agradeco mais uma vez a todos mas esta P.... não ta a der :S vou tentar ver se consigo encontrar alguma solução ;)

Acho incrível como consegues estragar código funcional.

O teu erro desta vez é este:

Código:
  DataGridView2.Rows.RemoveAt(DataGridView2.SelectedRows(0).Index)
  TempID = DataGridView2.SelectedRows(0).Cells("ID_disp").Value

Se eliminares a linha primeiro, depois quando la vais buscar o valor, nunca te vai dar o valor correcto. Das duas uma, ou te dá o valor da proxima row seleccionada ou te arrebenta o programa.

Neste caso tives-te um grande problema de lógica.

Também como o ribeiro55 já disse, nesta linha:
Código:
 Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE ID_disp=@ID_dip", cnSQL)

continuas a não dar o valor a query, logo é normal que nunca te apague os dados que queres.

Epá.. a melhor forma de pores querys a trabalhar é a seguinte:

1- Testas a query no Sql.
2- Copias a query para o teu código em Vb.
3- Visto que não sabes trabalhar com os Sqlparameters como deve d ser, não inventes, usa a query directa e mete o valor como se estivesses a alterar uma string.
4- Depois de isto estar a trabalhar codificas o resto das coisas que necessitas na função em torno do teu código original e funcional, desta forma se te der erro, já sabes que é de lógica e não andas a procura dos erros em lugares que não deves.
5- Epá.. faz exercicios de lógica pk já não é a primeira vez que alguem te ajuda por problemas de lógica.

Estou-te a dizer isto, não para te ofender mas para te ajudar a melhorar, senão nunca mais sais da cepa torta.
 
thx ;)

Obrigado a todos pela ajuda malta ;).

PNDmartins eu comecei aprender o VB.net foi a ver no google e a ir incomodando a malta aqui no forum como tal , desde já agradeco a ajuda de todos ;).
Tudo que sei hoje aprendi por mim e agradeco tambem as ajudas no forum que foram mt importantes para mim :D:D
 
Última edição:
Bacano rapaz, conheco pessoas que também começaram assim e são muito bons programadores.

Por isso mesmo te digo que deves de fazer exercicios de logica, garanto-te que ajuda muito.. falo por experiencia própria. :)
 
Back
Topo