Ir para o conteúdo
Luisveiga18

Erro ao eliminar dados

Mensagens Recomendadas

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.

Editado por apocsantos
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Editado por pmg
remover cores

-------Assinatura?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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"

Editado por Caça
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.