Jump to content
Luisveiga18

Erro ao eliminar dados

Recommended Posts

Luisveiga18

Bom dia!

Estou com o seguinte problema, estou a usar o seguinte codigo para eliminar dados de uma base de dados a partir do VB2010

Private Sub BotaoEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BotaoEliminar.Click
 Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Luís Sebastião\Desktop\PAP 2012-2013\Resgest\ResgestDB.accdb")
 Dim query As String = "DELETE FROM Clientes WHERE ID = @ID_Cliente"
 Dim command As New OleDbCommand(query, ConnectionString)
 command.Parameters.Add("@ID_Cliente", OleDbType.Integer).Value = IDClienteTB.Text
 ConnectionString.Open()

 If IDClienteTB.Text = "" Then
	 MessageBox.Show("Erro ao eliminar", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
	 GoTo Loop_Strat
 End If
 Dim x As Integer = command.ExecuteNonQuery()
 If x < 1 Then
	 MessageBox.Show("Erro ao eliminar", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
	 IDClienteTB.Text = ""
 Else
	 MessageBox.Show("Eliminado com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
	 IDClienteTB.Text = ""
 End If

 Dim query1 As String = "SELECT * FROM Clientes"
 Dim DataAdapter As New OleDbDataAdapter(query1, ConnectionString)
 Dim MyData As New DataSet
 DataAdapter.Fill(MyData, "Clientes")
 Me.DataGridView1.DataSource = MyData.Tables("Clientes")
 ConnectionString.Close()
 command = Nothing
Loop_Strat:
End Sub

Sempre que tento eliminar dá o seguinte erro - "OleDbExeption was unhandled / Não foi fornecido nenhum valor para um ou mais parâmetros necessários." Estou a usar o Access 2010 como base dados e antes este código estava perfeitamente a funcionar. Este erro acontece também no codigo de adicionar e alterar dados.

Edited by apocsantos
geshi

Share this post


Link to post
Share on other sites
NunoDinis

Assim por alto parece-me que o idCliente não está a ser passado. Certifica-te..


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

ndsotware.org

Share this post


Link to post
Share on other sites
psantos10

Boas

Olhado para este trecho:

command.Parameters.Add("@ID_Cliente", OleDbType.Integer).Value = IDClienteTB.Text

acho que o problema está no tipo do valor que está a ser passado. Vê que o parametro espera um "Integer" e estás a passar uma "string" vindo da TextBox.

Tenta alterar a linha acima por esta:

command.Parameters.Add("@ID_Cliente", OleDbType.Integer).Value = CInt(IDClienteTB.Text)

Espero que ajude

Cumps

PS

Edited by pmg
remover cores

-------Assinatura?

Share this post


Link to post
Share on other sites
Luisveiga18

O eliminar já consegui resolver, mas o adicionar continua com o mesmo problema. Acho que será porque as minhas chaves primarias estão como manuais e não automáticas Acham que será esse o problema?

Share this post


Link to post
Share on other sites
psantos10

O eliminar já consegui resolver, mas o adicionar continua com o mesmo problema. Acho que será porque as minhas chaves primarias estão como manuais e não automáticas Acham que será esse o problema?

como resolveu a questão do "eliminar"?

pode mostrar o trecho do código para adicionar?


-------Assinatura?

Share this post


Link to post
Share on other sites
Luisveiga18

Este é o código do adicionar

Private Sub BotaoAdicionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BotaoAdicionar.Click
Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Luís Sebastião\Desktop\PAP 2012-2013\Resgest\ResgestDB.accdb")
Dim query As String = "INSERT INTO Clientes([iDCliente], [Nome], [Morada], [Codigo-Postal], [Localidade], [Email], [Telefone]) VALUES (@IDCliente, @Nome, @Morada, @Codigo-Postal, @Localidade, @Email, @Telefone)"
Dim command As New OleDbCommand(query, ConnectionString)
command.Parameters.Add("@IDCliente", OleDbType.Integer).Value = CInt(IDClienteTB.Text)
command.Parameters.Add("@Nome", OleDbType.VarChar).Value = NomeTB.Text
command.Parameters.Add("@Morada", OleDbType.VarChar).Value = MoradaTB.Text
command.Parameters.Add("@Codigo-Postal", OleDbType.VarChar).Value = CodigoPostalTB.Text
command.Parameters.Add("@Email", OleDbType.VarChar).Value = EmailTB.Text
command.Parameters.Add("@Telefone", OleDbType.VarChar).Value = TelefoneTB.Text
command.Parameters.Add("@Localidade", OleDbType.VarChar).Value = LocalidadeTB.Text

ConnectionString.Open()
If IDClienteTB.Text = "" Or NomeTB.Text = "" Or MoradaTB.Text = "" Or CodigoPostalTB.Text = "" Or LocalidadeTB.Text = "" Or EmailTB.Text = "" Or TelefoneTB.Text = "" Then
MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
GoTo Loop_Strat
End If
Dim x As Integer = command.ExecuteNonQuery()
If x < 1 Then
MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
MessageBox.Show("Registo inserido com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Dim query1 As String = "SELECT * FROM Clientes"
Dim DataAdapter As New OleDbDataAdapter(query1, ConnectionString)
Dim MyData As New DataSet
DataAdapter.Fill(MyData, "Clientes")
Me.DataGridView1.DataSource = MyData.Tables("Clientes")
ConnectionString.Close()
command = Nothing
DataGridView1.Refresh()
Loop_Strat:

O problema do eliminar era da chave primaria no codigo:

Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source= C:\Users\Luís Sebastião\Desktop\PAP 2012-2013\Resgest\ResgestDB.accdb")
Dim query As String = "DELETE FROM Clientes WHERE IDCliente = @IDCliente"

Edited by Caça
GeSHi

Share this post


Link to post
Share on other sites
acao

boas

aparentemente não dislumbro nada de anormal, verifica aqui tambem os nomes da query com a tabela, poderá ser aí erro outravez.

o que alterava era o verificar os campos vazios, colocava logo o if no inicio, porque se estão vazios não necessita de fazer o cod antes.

cumps

acao

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


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