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

Valadas

UPDATE

24 mensagens neste tópico

Boas pessoal,

eu quero actualizar mas o código que tenho diz a seguinte mensagem "Não foi fornecido nenhum valor para um ou mais parâmetros necessários". Eu sei que é capaz de ser um erro básico mas a verdade é que não estou a ver onde está o erro!

Tenho o seguinte código:

 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try

            Dim lm As String = "UPDATE Perfil_Jogadores SET Nome_jogador=?,Data_nasc=?,Cidade_natal=?,Pais=?,Posicao=?,Ordenado_semanal=?,Estado=? where [iD_Jogador]=?"

            ' Inicia uma ligação à base de dados
            Using connection As New OleDbConnection(Gestao_Jogadores.My.Settings.ligacaobd)

                ' Define o comando e os parâmetros
                Dim command As New OleDbCommand(lm, connection)

                command.Parameters.Add("Nome_jogador", OleDbType.VarChar).Value = TextBox1.Text()


                ' If FotoPictureBox.Text.Trim <> String.Empty Then

                'command.Parameters.Add("Foto", OleDbType.).Value = FotoPictureBox.Text
                'Else
                ' command.Parameters.Add("Foto", OleDbType.bipmap).Value = 0
                'End If

                'command.Parameters.Add("Foto", OleDbType.Integer).Value = FotoPictureBox.Text


                If DateTimePicker1.Text.Trim <> String.Empty Then

                    command.Parameters.Add("Data_nasc", OleDbType.Date).Value = DateTimePicker1.Text
                Else
                    command.Parameters.Add("Data_nasc", OleDbType.Date).Value = 0
                End If



                command.Parameters.Add("Cidade_natal", OleDbType.VarChar).Value = TextBox4.Text


                command.Parameters.Add("Pais", OleDbType.VarChar).Value = TextBox5.Text

                command.Parameters.Add("Posicao", OleDbType.VarChar).Value = TextBox6.Text

                If TextBox7.Text.Trim <> String.Empty Then

                    command.Parameters.Add("Ordenado_semanal", OleDbType.Currency).Value = TextBox7.Text
                Else
                    command.Parameters.Add("Ordenao_semanal", OleDbType.Currency).Value = 0
                End If

                'command.Parameters.Add("Ordenado_semanal", OleDbType.VarChar).Value = Ordenado_semanalTextBox.Text

                command.Parameters.Add("Estado", OleDbType.VarChar).Value = TextBox8.Text

                ' 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)
        End Try



        Try

            Dim lm2 As String = "UPDATE Clubes SET Clube=?"

            ' Inicia uma ligação à base de dados
            Using connection As New OleDbConnection(Gestao_Jogadores.My.Settings.ligacaobd)

                ' Define o comando e os parâmetros
                Dim command As New OleDbCommand(lm2, connection)

                'pergunta se quer guardar ou nao
                Dim msg = MsgBox("Pretende guardar o registo? ", MsgBoxStyle.YesNoCancel)
                If msg = MsgBoxResult.Yes Then

                    If ComboBox1.Text.Trim <> String.Empty Then

                        command.Parameters.Add("Clube", OleDbType.VarChar).Value = ComboBox1.Text
                    Else
                        command.Parameters.Add("Clube", OleDbType.VarChar).Value = 0
                    End If
                    'command.Parameters.Add("@Clube", OleDbType.VarChar).Value = TextBox3.Text()

                ElseIf msg = MsgBoxResult.No Then
                End If

                If msg = MsgBoxResult.Cancel Then
                    Form1.Show()
                    Me.Close()

                End If

                ' 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

        End Try
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Falta-te definir o ID do jogador (ID_Jogador)

Já tinha definido e disse exactamente o mesmo erro!  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas pessoal,

eu quero actualizar mas o código que tenho diz a seguinte mensagem "Não foi fornecido nenhum valor para um ou mais parâmetros necessários". Eu sei que é capaz de ser um erro básico mas a verdade é que não estou a ver onde está o erro!

Tenho o seguinte código:

 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try

            Dim lm As String = "UPDATE Perfil_Jogadores SET Nome_jogador=?,Data_nasc=?,Cidade_natal=?,Pais=?,Posicao=?,Ordenado_semanal=?,Estado=? where [iD_Jogador]=?"

            ' Inicia uma ligação à base de dados
            Using connection As New OleDbConnection(Gestao_Jogadores.My.Settings.ligacaobd)

                ' Define o comando e os parâmetros
                Dim command As New OleDbCommand(lm, connection)

                command.Parameters.Add("Nome_jogador", OleDbType.VarChar).Value = TextBox1.Text()


                ' If FotoPictureBox.Text.Trim <> String.Empty Then

                'command.Parameters.Add("Foto", OleDbType.).Value = FotoPictureBox.Text
                'Else
                ' command.Parameters.Add("Foto", OleDbType.bipmap).Value = 0
                'End If

                'command.Parameters.Add("Foto", OleDbType.Integer).Value = FotoPictureBox.Text


                If DateTimePicker1.Text.Trim <> String.Empty Then

                    command.Parameters.Add("Data_nasc", OleDbType.Date).Value = DateTimePicker1.Text
                Else
                    command.Parameters.Add("Data_nasc", OleDbType.Date).Value = 0
                End If



                command.Parameters.Add("Cidade_natal", OleDbType.VarChar).Value = TextBox4.Text


                command.Parameters.Add("Pais", OleDbType.VarChar).Value = TextBox5.Text

                command.Parameters.Add("Posicao", OleDbType.VarChar).Value = TextBox6.Text

                If TextBox7.Text.Trim <> String.Empty Then

                    command.Parameters.Add("Ordenado_semanal", OleDbType.Currency).Value = TextBox7.Text
                Else
                    command.Parameters.Add("Ordenao_semanal", OleDbType.Currency).Value = 0
                End If

                'command.Parameters.Add("Ordenado_semanal", OleDbType.VarChar).Value = Ordenado_semanalTextBox.Text

                command.Parameters.Add("Estado", OleDbType.VarChar).Value = TextBox8.Text

                ' 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)
        End Try



        Try

            Dim lm2 As String = "UPDATE Clubes SET Clube=?"

            ' Inicia uma ligação à base de dados
            Using connection As New OleDbConnection(Gestao_Jogadores.My.Settings.ligacaobd)

                ' Define o comando e os parâmetros
                Dim command As New OleDbCommand(lm2, connection)

                'pergunta se quer guardar ou nao
                Dim msg = MsgBox("Pretende guardar o registo? ", MsgBoxStyle.YesNoCancel)
                If msg = MsgBoxResult.Yes Then

                    If ComboBox1.Text.Trim <> String.Empty Then

                        command.Parameters.Add("Clube", OleDbType.VarChar).Value = ComboBox1.Text
                    Else
                        command.Parameters.Add("Clube", OleDbType.VarChar).Value = 0
                    End If
                    'command.Parameters.Add("@Clube", OleDbType.VarChar).Value = TextBox3.Text()

                ElseIf msg = MsgBoxResult.No Then
                End If

                If msg = MsgBoxResult.Cancel Then
                    Form1.Show()
                    Me.Close()

                End If

                ' 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

        End Try
    End Sub

Acontece-me o mesmo ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens a certeza que não tens algum campo na tabela que não esteja aí??

o ID_jogador é automático???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens a certeza que não tens algum campo na tabela que não esteja aí??

o ID_jogador é automático???

sim não tenho! e o id é automático sim...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim não tenho! e o id é automático sim...

Então se o ID é automático, como queres que o software adivinhe ? Tens de saber qual o ID do campo que vais actualizar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então se o ID é automático, como queres que o software adivinhe ? Tens de saber qual o ID do campo que vais actualizar.

Então assim seria colocar o id no select certo!? Diz o mesmo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se tu queres actualizar um registo, tens de saber qual o registo que vais actualizar e indicar o ID ou outro campo unico.

Neste caso defines como parametro

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se tu queres actualizar um registo, tens de saber qual o registo que vais actualizar e indicar o ID ou outro campo unico.

Neste caso defines como parametro

            Dim lm As String = "UPDATE Perfil_Jogadores SET ID_Jogador=?,Nome_jogador=?,Data_nasc=?,Cidade_natal=?,Pais=?,Posicao=?,Ordenado_semanal=?,Estado=? where [iD_Jogador]=?"

         

 If TextBox2.Text.Trim <> String.Empty Then

                command.Parameters.Add("ID_Jogador", OleDbType.Integer).Value = TextBox2.Text
            Else
                command.Parameters.Add("ID_Jogador", OleDbType.Integer).Value = 0
            End If

Isso já eu tinha pensado e testado. EU venho só ao fórum em último caso!

Defeni como parâmetro mas continua a dizer o mesmo!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso já eu tinha pensado e testado. EU venho só ao fórum em último caso!

Defeni como parâmetro mas continua a dizer o mesmo!!

Mostra lá o código completo ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mostra lá o código completo ...

 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try

            Dim connection As OleDbConnection

            Dim lm As String = "UPDATE Perfil_Jogadores SET ID_Jogador=?,Nome_jogador=?,Data_nasc=?,Cidade_natal=?,Pais=?,Posicao=?,Ordenado_semanal=?,Estado=? where [iD_Jogador]=?"

            ' Inicia uma ligação à base de dados
            connection = New OleDbConnection(Gestao_Jogadores.My.Settings.ligacaobd)

            ' Define o comando e os parâmetros
            Dim command As New OleDbCommand(lm, connection)

            If TextBox2.Text.Trim <> String.Empty Then

                command.Parameters.Add("ID_Jogador", OleDbType.Integer).Value = TextBox2.Text
            Else
                command.Parameters.Add("ID_Jogador", OleDbType.Integer).Value = 0
            End If

            command.Parameters.Add("Nome_jogador", OleDbType.VarChar).Value = TextBox1.Text()


            ' If FotoPictureBox.Text.Trim <> String.Empty Then

            'command.Parameters.Add("Foto", OleDbType.).Value = FotoPictureBox.Text
            'Else
            ' command.Parameters.Add("Foto", OleDbType.bipmap).Value = 0
            'End If

            'command.Parameters.Add("Foto", OleDbType.Integer).Value = FotoPictureBox.Text


            If DateTimePicker1.Text.Trim <> String.Empty Then

                command.Parameters.Add("Data_nasc", OleDbType.Date).Value = DateTimePicker1.Text
            Else
                command.Parameters.Add("Data_nasc", OleDbType.Date).Value = 0
            End If



            command.Parameters.Add("Cidade_natal", OleDbType.VarChar).Value = TextBox4.Text


            command.Parameters.Add("Pais", OleDbType.VarChar).Value = TextBox5.Text

            command.Parameters.Add("Posicao", OleDbType.VarChar).Value = TextBox6.Text

            If TextBox7.Text.Trim <> String.Empty Then

                command.Parameters.Add("Ordenado_semanal", OleDbType.Currency).Value = TextBox7.Text
            Else
                command.Parameters.Add("Ordenao_semanal", OleDbType.Currency).Value = 0
            End If

            'command.Parameters.Add("Ordenado_semanal", OleDbType.VarChar).Value = Ordenado_semanalTextBox.Text

            command.Parameters.Add("Estado", OleDbType.VarChar).Value = TextBox8.Text

            ' 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

            connection.Close()

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try



        Try

            Dim connnection As OleDbConnection


            Dim lm2 As String = "UPDATE Clubes SET Clube=?"

            ' Inicia uma ligação à base de dados
            connnection = New OleDbConnection(Gestao_Jogadores.My.Settings.ligacaobd)

            ' Define o comando e os parâmetros
            Dim command As New OleDbCommand(lm2, connnection)

            'pergunta se quer guardar ou nao
            Dim msg = MsgBox("Pretende guardar o registo? ", MsgBoxStyle.YesNoCancel)
            If msg = MsgBoxResult.Yes Then

                If ComboBox1.Text.Trim <> String.Empty Then

                    command.Parameters.Add("Clube", OleDbType.VarChar).Value = ComboBox1.Text
                Else
                    command.Parameters.Add("Clube", OleDbType.VarChar).Value = 0
                End If
                'command.Parameters.Add("@Clube", OleDbType.VarChar).Value = TextBox3.Text()

            ElseIf msg = MsgBoxResult.No Then
            End If

            If msg = MsgBoxResult.Cancel Then
                Form1.Show()
                Me.Close()

            End If

            ' Abre a ligação e insere o registo
            connnection.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

            connnection.Close()
        Catch ex As Exception

        End Try
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em Access os parametros têm de ser definidos na mesma ordem que são indicados. Assim, o id do jogador tem de estar em último lugar, ou seja, é o último parametro a ser indicado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em Access os parametros têm de ser definidos na mesma ordem que são indicados. Assim, o id do jogador tem de estar em último lugar, ou seja, é o último parametro a ser indicado.

Como no php?  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como no php?  ;)

Não sei ... mas o que é que não entendeste ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei ... mas o que é que não entendeste ?

Corrige-me se estiver enganado. Pelo que entendi os parâmetros ficam por esta ordem:

Estado;

Ordenado_semanal;

Posicao;

Pais;

Cidade_natal;

Data_nasc;

Nome_jogador;

ID_Jogador?

Ao contrário da query!??!?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ao contrário da query!??!?

Não, não é ao contrário da query !!!

Se tu dizes:

"Nome_jogador=?,Data_nasc=?,Cidade_natal=?, ... "

Tens depois de os indicar na mesma sequência:

Nome_jogador

Data_nasc

Cidade_natal

...

até ao ID

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, não é ao contrário da query !!!

Se tu dizes:

"Nome_jogador=?,Data_nasc=?,Cidade_natal=?, ... "

Tens depois de os indicar na mesma sequência:

Nome_jogador

Data_nasc

Cidade_natal

...

até ao ID

Mas o meu ID está em primeiro...

           

Dim lm As String = "UPDATE Perfil_Jogadores SET ID_Jogador=?,Nome_jogador=?,Data_nasc=?,Cidade_natal=?,Pais=?,Posicao=?,Ordenado_semanal=?,Estado=? where [iD_Jogador]=?"

fica em último e problema resolvido?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas o meu ID está em primeiro...

Não tinha visto isso, mas tu queres também alterar o id do jogador? Isso normalmente não se faz e o ID é apenas usado e nunca alterado. Retira lá o ID do inicio e deixa-o só no fim.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tinha visto isso, mas tu queres também alterar o id do jogador? Isso normalmente não se faz e o ID é apenas usado e nunca alterado. Retira lá o ID do inicio e deixa-o só no fim.

Não eu não quero alterar o id.

O problema está resolvido. O que eu ainda não tinha tentado por não saber era que o id tinha de ficar em último, porque já tinha testado logo ao inicio e não alterava.

Deixo o meu código resolvido:

 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try

            Dim connection As OleDbConnection

            Dim lm As String = "UPDATE Perfil_Jogadores SET Nome_jogador=?,Data_nasc=?,Cidade_natal=?,Pais=?,Posicao=?,Ordenado_semanal=?,Estado=? where [iD_Jogador]=?"

            ' Inicia uma ligação à base de dados
            connection = New OleDbConnection(Gestao_Jogadores.My.Settings.ligacaobd)

            ' Define o comando e os parâmetros
            Dim command As New OleDbCommand(lm, connection)



            command.Parameters.Add("Nome_jogador", OleDbType.VarChar).Value = TextBox1.Text()


            ' If FotoPictureBox.Text.Trim <> String.Empty Then

            'command.Parameters.Add("Foto", OleDbType.).Value = FotoPictureBox.Text
            'Else
            ' command.Parameters.Add("Foto", OleDbType.bipmap).Value = 0
            'End If

            'command.Parameters.Add("Foto", OleDbType.Integer).Value = FotoPictureBox.Text


            If DateTimePicker1.Text.Trim <> String.Empty Then

                command.Parameters.Add("Data_nasc", OleDbType.Date).Value = DateTimePicker1.Text
            Else
                command.Parameters.Add("Data_nasc", OleDbType.Date).Value = 0
            End If



            command.Parameters.Add("Cidade_natal", OleDbType.VarChar).Value = TextBox4.Text


            command.Parameters.Add("Pais", OleDbType.VarChar).Value = TextBox5.Text

            command.Parameters.Add("Posicao", OleDbType.VarChar).Value = TextBox6.Text

            If TextBox7.Text.Trim <> String.Empty Then

                command.Parameters.Add("Ordenado_semanal", OleDbType.Currency).Value = TextBox7.Text
            Else
                command.Parameters.Add("Ordenao_semanal", OleDbType.Currency).Value = 0
            End If

            'command.Parameters.Add("Ordenado_semanal", OleDbType.VarChar).Value = Ordenado_semanalTextBox.Text

            command.Parameters.Add("Estado", OleDbType.VarChar).Value = TextBox8.Text

            If TextBox2.Text.Trim <> String.Empty Then

                command.Parameters.Add("ID_Jogador", OleDbType.Integer).Value = TextBox2.Text
            Else
                command.Parameters.Add("ID_Jogador", OleDbType.Integer).Value = 0
            End If

            ' 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

            connection.Close()

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try



        Try

            Dim connnection As OleDbConnection


            Dim lm2 As String = "UPDATE Clubes SET Clube=?"

            ' Inicia uma ligação à base de dados
            connnection = New OleDbConnection(Gestao_Jogadores.My.Settings.ligacaobd)

            ' Define o comando e os parâmetros
            Dim command As New OleDbCommand(lm2, connnection)

            'pergunta se quer guardar ou nao
            Dim msg = MsgBox("Pretende guardar o registo? ", MsgBoxStyle.YesNoCancel)
            If msg = MsgBoxResult.Yes Then

                If ComboBox1.Text.Trim <> String.Empty Then

                    command.Parameters.Add("Clube", OleDbType.VarChar).Value = ComboBox1.Text
                Else
                    command.Parameters.Add("Clube", OleDbType.VarChar).Value = 0
                End If
                'command.Parameters.Add("@Clube", OleDbType.VarChar).Value = TextBox3.Text()

            ElseIf msg = MsgBoxResult.No Then
            End If

            If msg = MsgBoxResult.Cancel Then
                Form1.Show()
                Me.Close()

            End If

            ' Abre a ligação e insere o registo
            connnection.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

            connnection.Close()
        Catch ex As Exception

        End Try
    End Sub

Obrigado jpaulino  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao sei se posso colocar a minha duvida, mas estou a fazer uma aplicação identica, e estou com o problema do ID, como faço para que ao carregar no botao adicionar novo registo ele adicione um valor ao ID automaticamente, visto que este está bloqueado por mim, para que nao haja modificações...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao sei se posso colocar a minha duvida, mas estou a fazer uma aplicação identica, e estou com o problema do ID, como faço para que ao carregar no botao adicionar novo registo ele adicione um valor ao ID automaticamente, visto que este está bloqueado por mim, para que nao haja modificações...

Não indicas o ID e defines na base de dados como automático.

Se tiveres mais dúvidas cria outra questão.

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