Jump to content

UPDATE


Valadas
 Share

Recommended Posts

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

RV

Link to comment
Share on other 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 😉

Link to comment
Share on other 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!!

RV

Link to comment
Share on other 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

RV

Link to comment
Share on other 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?

RV

Link to comment
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
 Share

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