Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

vasco16

[Resolvido] Vb nao grava dados no access

Recommended Posts

vasco16

boas pessoal estou aqui com este erro:

Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
        Try
            Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\VASCO\Desktop\Bless - Gestão de Stands e Oficinas\Bless - Gestão de Stands e Oficinas\bin\Debug\Bless - Gestão de Stands & Oficinas.mdb"

            Dim SQL As String = "INSERT INTO compras ([matricula],[marca]) VALUES (?,?)"

            ' Inicia uma ligação à bse de dados
            Using connection As New OleDb.OleDbConnection(connString)

                ' Define o comando e os parâmetros
                Dim command As New OleDb.OleDbCommand(SQL, connection)
                command.Parameters.Add("matricula", OleDb.OleDbType.VarChar).Value = "MatriculaTextBox.Text"
                command.Parameters.Add("marca", OleDb.OleDbType.Integer).Value = "MarcaTextBox.Text"
                'command.Parameters.Add("abc", OleDbType.VarChar).Value = "O'Brien"
                'command.Parameters.Add("def", OleDbType.Date).Value = Date.Today

                ' Abre a ligação e insere o registo
                connection.Open()
                Dim x As Integer = command.ExecuteNonQuery()
                If x <> 1 Then
                    Throw New ArgumentException("Não foi possível inserir o registo na base de dados!")
                End If
            End Using

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

        End Try
    End Sub

ao inserir dados diz-me que nao foi possivel converter o valor do parametro string para int32

Share this post


Link to post
Share on other sites
softklin

Não percebo muito de vb.net a ligar a base de dados, mas...

command.Parameters.Add("marca", OleDb.OleDbType.Integer).Value = "MarcaTextBox.Text"

O campos na base de dados é numérico? Se sim, podes tentar converter, usando a função CInt, ficará algo como:

command.Parameters.Add("marca", OleDb.OleDbType.Integer).Value = CInt(MarcaTextBox.Text)


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
vasco16

Não percebo muito de vb.net a ligar a base de dados, mas...

command.Parameters.Add("marca", OleDb.OleDbType.Integer).Value = "MarcaTextBox.Text"

O campos na base de dados é numérico? Se sim, podes tentar converter, usando a função CInt, ficará algo como:

command.Parameters.Add("marca", OleDb.OleDbType.Integer).Value = CInt(MarcaTextBox.Text)

nao, o campo é mesmo do tipo string.. texto..

Share this post


Link to post
Share on other sites
softklin

então o erro pode estar nessa string Oledb

command.Parameters.Add("marca", OleDb.OleDbType.Integer).Value = "MarcaTextBox.Text"

Ali onde está integer, deveria estar provavelmente varchar, à semelhança do campo matricula.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
vasco16

pois o codigo tem de ficar assim

...

command.Parameters.Add("matricula", OleDb.OleDbType.VarChar).Value = MatriculaTextBox.Text

...

Share this post


Link to post
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

×

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.