none
Excluir um registro RRS feed

  • Pergunta

  • Estou fazendo isso para excluir um registro do meu banco >>  


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

            'Dim cmd As New OleDbCommand(Sql, conn)
            Dim cmd As OleDbCommand = New OleDbCommand("DELETE FROM [Dobradiças] WHERE ID = ?", conn)
            Try
                conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\CadastroDobradiças\Biblioteca_Ferragens\ferragens.mdb")
                cmd = New OleDbCommand
                'cmd.CommandText = "DELETE FROM [Dobradiças] WHERE ID = ?"
                cmd.Parameters.Add("?", OleDbType.VarChar).Value = TextBox1.Text
                cmd.Connection = conn
                conn.Open()
                cmd.ExecuteNonQuery()
            Catch et As Exception
                Throw New Exception(et.Message)
            Finally
                If (Not (cmd) Is Nothing) Then
                    cmd.Dispose()
                End If
                If (conn.State <> ConnectionState.Closed) Then
                    conn.Close()
                    conn.Dispose()
                End If
            End Try
        End Sub



    nao esta funcionando, o que estou fazendo errado ?
    quinta-feira, 29 de outubro de 2009 12:02

Respostas

  • Uma coisa a sua linha 'cmd.CommandText = "DELETE FROM [Dobradiças] WHERE ID = ?" está comentada, tente mudando essas duas linhas:

    'cmd.CommandText = "DELETE FROM [Dobradiças] WHERE ID = ?"
     cmd.Parameters.Add("?", OleDbType.VarChar).Value = TextBox1.Text

    para:

    cmd.CommandText = "DELETE FROM [Dobradiças] WHERE ID = @ID"
    cmd.Parameters.Add("@ID", OleDbType.VarChar).Value = TextBox1.Text
    • Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 10:44
    quinta-feira, 29 de outubro de 2009 15:06
  • Dim conn As New OleDbConnection()
            conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\CadastroDobradiças\Biblioteca_Ferragens\ferragens.mdb"
            conn.Open()

            Dim cmd As OleDbCommand = New OleDbCommand("DELETE FROM [Dobradiças] WHERE Codigo = @Codigo, A = @A, B = @B, C = @C, D = @D, E = @E, F = @F, Descricao = @Descricao", conn)

            cmd.Parameters.Add("@Codigo", OleDbType.VarChar).Value = TextBox1.Text
            cmd.Parameters.Add("@Nome", OleDbType.VarChar).Value = TextBox2.Text
            cmd.Parameters.Add("@A", OleDbType.VarChar).Value = TextBox3.Text
            cmd.Parameters.Add("@B", OleDbType.VarChar).Value = TextBox4.Text
            cmd.Parameters.Add("@C", OleDbType.VarChar).Value = TextBox5.Text
            cmd.Parameters.Add("@D", OleDbType.VarChar).Value = TextBox6.Text
            cmd.Parameters.Add("@E", OleDbType.VarChar).Value = TextBox7.Text
            cmd.Parameters.Add("@F", OleDbType.VarChar).Value = TextBox8.Text
            cmd.Parameters.Add("@Descricao", OleDbType.VarChar).Value = TextBox9.Text

            cmd.ExecuteNonQuery()
            conn.Close()






    dai esta dizendo que da erro na sintaxe da virgula
    quando vou passar os parametros



    como deve ficar ?
    • Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 10:44
    quinta-feira, 29 de outubro de 2009 15:38
  • Bruno você usa and ou or, and todas as comparações tem que ser verdadeiras e or se qualquer uma for verdadeira ele apaga ficaria assim:

    DELETE FROM [Dobradiças] WHERE Codigo = @Codigo and A = @A and B = @B and C = @C and D = @D and E = @E and F = @F and Descricao = @Descricao

    ou:

    DELETE FROM [Dobradiças] WHERE Codigo = @Codigo or A = @A or B = @B or C = @C or D = @D or E = @E or F = @F or Descricao = @Descricao

    você pode combinar também:

    DELETE FROM [Dobradiças] WHERE (Codigo = @Codigo and A = @A and B = @B) or (C = @C and D = @D and E = @E and F = @F and Descricao = @Descricao)

    Assim com a combinação se (Codigo = @Codigo and A = @A and B = @B) ou (C = @C and D = @D and E = @E and F = @F and Descricao = @Descricao)
     for verdadeiro é apagado
    • Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 10:44
    quinta-feira, 29 de outubro de 2009 15:58

Todas as Respostas

  • Uma coisa a sua linha 'cmd.CommandText = "DELETE FROM [Dobradiças] WHERE ID = ?" está comentada, tente mudando essas duas linhas:

    'cmd.CommandText = "DELETE FROM [Dobradiças] WHERE ID = ?"
     cmd.Parameters.Add("?", OleDbType.VarChar).Value = TextBox1.Text

    para:

    cmd.CommandText = "DELETE FROM [Dobradiças] WHERE ID = @ID"
    cmd.Parameters.Add("@ID", OleDbType.VarChar).Value = TextBox1.Text
    • Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 10:44
    quinta-feira, 29 de outubro de 2009 15:06
  • Dim conn As New OleDbConnection()
            conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\CadastroDobradiças\Biblioteca_Ferragens\ferragens.mdb"
            conn.Open()

            Dim cmd As OleDbCommand = New OleDbCommand("DELETE FROM [Dobradiças] WHERE Codigo = @Codigo, A = @A, B = @B, C = @C, D = @D, E = @E, F = @F, Descricao = @Descricao", conn)

            cmd.Parameters.Add("@Codigo", OleDbType.VarChar).Value = TextBox1.Text
            cmd.Parameters.Add("@Nome", OleDbType.VarChar).Value = TextBox2.Text
            cmd.Parameters.Add("@A", OleDbType.VarChar).Value = TextBox3.Text
            cmd.Parameters.Add("@B", OleDbType.VarChar).Value = TextBox4.Text
            cmd.Parameters.Add("@C", OleDbType.VarChar).Value = TextBox5.Text
            cmd.Parameters.Add("@D", OleDbType.VarChar).Value = TextBox6.Text
            cmd.Parameters.Add("@E", OleDbType.VarChar).Value = TextBox7.Text
            cmd.Parameters.Add("@F", OleDbType.VarChar).Value = TextBox8.Text
            cmd.Parameters.Add("@Descricao", OleDbType.VarChar).Value = TextBox9.Text

            cmd.ExecuteNonQuery()
            conn.Close()






    dai esta dizendo que da erro na sintaxe da virgula
    quando vou passar os parametros



    como deve ficar ?
    • Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 10:44
    quinta-feira, 29 de outubro de 2009 15:38
  • Bruno você usa and ou or, and todas as comparações tem que ser verdadeiras e or se qualquer uma for verdadeira ele apaga ficaria assim:

    DELETE FROM [Dobradiças] WHERE Codigo = @Codigo and A = @A and B = @B and C = @C and D = @D and E = @E and F = @F and Descricao = @Descricao

    ou:

    DELETE FROM [Dobradiças] WHERE Codigo = @Codigo or A = @A or B = @B or C = @C or D = @D or E = @E or F = @F or Descricao = @Descricao

    você pode combinar também:

    DELETE FROM [Dobradiças] WHERE (Codigo = @Codigo and A = @A and B = @B) or (C = @C and D = @D and E = @E and F = @F and Descricao = @Descricao)

    Assim com a combinação se (Codigo = @Codigo and A = @A and B = @B) ou (C = @C and D = @D and E = @E and F = @F and Descricao = @Descricao)
     for verdadeiro é apagado
    • Marcado como Resposta Bruno Gaiola sexta-feira, 30 de outubro de 2009 10:44
    quinta-feira, 29 de outubro de 2009 15:58