Jump to content

Recommended Posts

Posted (edited)

Estou a usar o seguinte código para atualiza dados de uma base de dados a partir do VB:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.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 = "UPDATE Clientes SET [iDCliente] = @IDCliente, [Morada] = @Morada, [CodigoPostal] = @CodigoPostal, [Localidade] = @Localidade, [Email] = @Email, [Telefone] = @Telefone WHERE Nome = @Nome"
 Dim command As New OleDbCommand(query, ConnectionString)
 command.Parameters.Add("@IDCliente", OleDbType.Integer).Value = LabelCliente.Text
 command.Parameters.Add("@Nome", OleDbType.VarChar).Value = NomeTB.Text
 command.Parameters.Add("@Morada", OleDbType.VarChar).Value = MoradaTB.Text
 command.Parameters.Add("@CodigoPostal", OleDbType.VarChar).Value = CodigoPostalTB.Text
 command.Parameters.Add("@Localidade", OleDbType.VarChar).Value = LocalidadeTB.Text
 command.Parameters.Add("@Email", OleDbType.VarChar).Value = EmailTB.Text
 command.Parameters.Add("@Telefone", OleDbType.VarChar).Value = TelefoneTB.Text

 ConnectionString.Open()
 Dim x As Integer = command.ExecuteNonQuery()
 If x < 1 Then
	 MessageBox.Show("Erro ao atualizar", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
 Else
	 MessageBox.Show("Actualizado com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
	 LocalidadeTB.Text = ""
	 NomeTB.Text = ""
	 MoradaTB.Text = ""
	 CodigoPostalTB.Text = ""
	 EmailTB.Text = ""
	 TelefoneTB.Text = ""
 End If
 ConnectionString.Close()
 command = Nothing
End Sub

Como poderão verificar estou a utilizar uma procurar personalizada, neste caso a partir do nome do cliente (que não é a chave primaria). O problema é que esta sempre a dar a mensagem do "Erro a Atualizar", posso vos garantir que todos os dados que tentei atualizar são validos, mas infelizmente depois de vária tentativas não o consigo fazer passar daqui.

Edited by Caça
GeSHi
Posted (edited)

Para vermos onde está o erro utiliza um try catch.

Try
  'rotina de inserção
Catch ex As Exception
  MsgBox("erro" & vbCrLf & ex.Message)
End Try
Edited by NunoDinis
  • Vote 1

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

ndsotware.org

Posted

Para vermos onde está o erro utiliza um try catch.

Try
  'rotina de inserção
Catch ex As Exception
  MsgBox("erro" & vbCrLf & ex.Message)
End Try

Aquela mensagem é ele que está a mandar


Adiciona os parâmetros pela mesma ordem que estão na query, ou seja, o Nome, deve vir em ultimo.

Pedro Martins

Não respondo a duvidas por PM

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