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

vasco16

[Resolvido] Vb nao grava dados no access

5 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois o codigo tem de ficar assim

...

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

...

0

Partilhar esta mensagem


Link 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