Jump to content

Delete com parametros


Mica
 Share

Recommended Posts


Dim myconnectionstring As String = _
"Provider=Microsoft.Jet.OLEDB.4.0 ata Source=C:\Documents and Settings\Mica\Os meus documentos\Visual Studio 2008\Projects\Projecto_2\Projecto_2\Produtos.mdb;"

        If MsgBox("Tem a certeza que deseja Apagar o Funcionário? ", MessageBoxButtons.YesNo, "Apagar") = Windows.Forms.DialogResult.Yes Then
            Try

                Dim SQL As String

                SQL = "DELETE into Funcionários (Nome, Apelido, Idade, Telefone, Morada, Cargo) VALUES (?,?,?,?,?,?,?)"



                '     Inicia uma ligação à bse de dados
                Using connection As New OleDbConnection(myconnectionstring)
                    'Define o comando e os parâmetros
                    Dim command As New OleDbCommand(SQL, connection)


                    command.Parameters.Clear("Nome", OleDbType.VarChar)
                    command.Parameters.Clear("Apelido", OleDbType.VarChar)
                    command.Parameters.Clear("Idade", OleDbType.VarChar)
                    command.Parameters.Clear("Telefone", OleDbType.VarChar)
                    command.Parameters.Clear("Morada", OleDbType.VarChar)
                    command.Parameters.Clear("Cargo", OleDbType.VarChar)



                    'Abre a ligação 
                    connection.Open()
                    Dim x As Integer = command.ExecuteNonQuery()
                End Using

            Catch ex As Exception
                MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)

            End Try
            MessageBox.Show("Funcionário apagado!", "Apagar", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If

Bem estou a tentar apagar um funcionário da minha base de dados... Estou a tentar apagar por parâmetros o que creio que é possível ^^

command.Parameters.Clear("Nome", OleDbType.VarChar) Mas nesta parte em todas elas, dá erro Error 1 Overload resolution failed because no accessible 'Clear' accepts this number of arguments Qualquer coisa como isto!

Link to comment
Share on other sites

DELETE INTO não existe!

Se consultares a documentação da norma SQL vês logo o rol de erros que tens nesse comando.

A norma é DELETE FROM tabela WHERE condição.

No teu caso deves querer algo como DELETE FROM Funcionários WHERE Nome = '<nome>'.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

Podes usar por parâmetros se assim entenderes, pega lá um exemplo:

' Connexão à BD;
Dim ConnectionBD As String = "Provider=Microsoft.Jet.OLEDB.4.0 ata Source=C:\Documents and Settings\Mica\Os meus documentos\Visual Studio 2008\Projects\Projecto_2\Projecto_2\Produtos.mdb;"
' Query para eliminar os dados consoante os parâmetros;
Dim query As String = "DELETE FROM Clientes WHERE [ClienteNome] = @clienteNome"   
' Associamos a ligação à BD;
Dim connection As New OleDbConnection(ConnectionBD)   
' Criamos os comandos;
Dim command As New OleDbCommand(query, connection)
' Indicação dos parâmetros a serem eliminados;
command.Parameters.Add("@clienteNome", OleDbType.VarChar).Value = Textbox1.Text
' Abre a ligação;
connection.Open() 
' Guarda em X o número de registos eliminados; 
Dim x As Integer = command.ExecuteNonQuery() 
' Se x for menor do que um, então é porque não eliminou com sucesso;
If x < 1 Then 
      MessageBox.Show("Erro ao eliminar dados.") 
Else
      MessageBox.Show("Dados eliminados com sucesso!")
End If   
' Fecha a ligação e limpa as variáveis; 
connection.Close() 
connection = Nothing 
command = Nothing
Link to comment
Share on other sites

eeheh consegui ver o erro antes de postares mas muito obrigado na mesma ;P

Agora um novo

Erro de sintaxe (vírgula) na expressão de consulta '[Cod_Empregado, Nome, Apelido, Idade, Telefone, Morada, Cargo] = (@Cod_Empregado, @Nome, @Apelido, @Idade, @Telefone, @Morada, @Cargo)'.

Código:

... 
' Query para eliminar os dados consoante os parâmetros;
        Dim query As String = "DELETE FROM Funcionários WHERE [Cod_Empregado, Nome, Apelido, Idade, Telefone, Morada, Cargo] = (@Cod_Empregado, @Nome, @Apelido, @Idade, @Telefone, @Morada, @Cargo)"
        ' Associamos a ligação à BD;
        Dim connection As New OleDbConnection(ConnectionBD)
        ' Criamos os comandos;
        Dim command As New OleDbCommand(query, connection)
        ' Indicação dos parâmetros a serem eliminados;
        command.Parameters.Add("@Cod_Empregado", OleDbType.VarChar).Value = TextBox1.Text
        command.Parameters.Add("@Nome", OleDbType.VarChar).Value = TextBox2.Text
        command.Parameters.Add("@Apelido", OleDbType.VarChar).Value = TextBox3.Text
        command.Parameters.Add("@Idade", OleDbType.VarChar).Value = TextBox4.Text
        command.Parameters.Add("@Telefone", OleDbType.VarChar).Value = TextBox5.Text
        command.Parameters.Add("@Morada", OleDbType.VarChar).Value = TextBox6.Text
        command.Parameters.Add("@Cargo", OleDbType.VarChar).Value = TextBox7.Text
        ' Abre a ligação;
        connection.Open()
        ' Guarda em X o número de registos eliminados;
        Dim x As Integer = command.ExecuteNonQuery()
        ' Se x for menor do que um, então é porque não eliminou com sucesso;
        If x < 1 Then
            MessageBox.Show("Erro ao eliminar dados.")
        Else
            MessageBox.Show("Dados eliminados com sucesso!")
        End If
        ' Fecha a ligação e limpa as variáveis;
        connection.Close()
        connection = Nothing
        command = Nothing
    End Sub
Link to comment
Share on other sites

Experimenta antes:

Dim query As String = "DELETE FROM Funcionários WHERE [Cod_Empregado] = @Cod_Empregado, [Nome] = @Nome"

E por aí adiante. Se der erro, podes sempre substituir a vírgula por "AND". Agora não tenho nenhum exemplo para confirmar se está totalmente correcto, mas experimenta,  🙂

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
 Share

×
×
  • 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.