Jump to content
arned

alterar um valor da base de dados

Recommended Posts

arned

Boas, o que pretendo é o seguinte, alterar o nome e o stock de produtos já existentes na base de dados.

Se o valor escrito na textbox for igual ao valor na base de dados entao nao quero alterar nada, caso seja diferente, altera.

tenho o seguinte codigo:

nomeprod = txtnome.Text
stock1 = txtstock.Text

        '############################        
        Try

            Dim sql As String = "UPDATE Produtos SET [stock] = @stock1,[nomeproduto] = @nomeprod WHERE [codigoproduto] = @cod"


            Using connection As New OleDb.OleDbConnection(clientes.conprovide)
                Dim command As New OleDb.OleDbCommand(sql, connection)
                command.Parameters.Add("stock", OleDb.OleDbType.Integer).Value = stock1
                command.Parameters.Add("nomeproduto", OleDb.OleDbType.VarChar).Value = nomeprod
                connection.Open()
                Dim x As Integer = command.ExecuteNonQuery
                If x <> 1 Then
                    Throw New ArgumentException("Não foi possível alterar o registo do produto na base de dados!")
                Else : MessageBox.Show("Produto Alterado")
                End If

            End Using


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

mas acontece que não esta a funcionar....

Share this post


Link to post
Share on other sites
Weasel

WHERE [codigoproduto] = @cod

Onde é que estás a colocar valor no parâmetro @cod ??

Falta-te isso  :(


Knowledge to the masses


Share this post


Link to post
Share on other sites
arned

estive a alterar o codigo... agora diz que a coluna nomeproduto nao existe na tabela produtos....

Mas está la, nao estou a perceber o que se passa...

        Dim nomeprod As String
        Dim stock1 As Integer
        Dim teste As Integer = 10
        Dim cod As Integer

        cod = stock.idproduto

        If txtnome.Text = "" Then
            MessageBox.Show("Insira o Nome do Produto")
            txtnome.Focus()
            teste = 5
        ElseIf txtstock.Text = "" Then
            MessageBox.Show("Insira o Stock")
            txtstock.Focus()
            teste = 5
        End If
        nomeprod = txtnome.Text
        stock1 = txtstock.Text




        ''''''''''''''''''''

        Dim connection As New OleDb.OleDbConnection(clientes.conprovide)
        Dim query As String = "SELECT codigoproduto FROM Produtos"
        Dim query1 As String = "UPDATE Produtos SET [stock] = @stock1,[nomeproduto] = @nomeprod WHERE [codigoproduto] = @cod"


        Dim NovoDataAdapter = New OleDb.OleDbDataAdapter(query, connection)
        Dim NovoDataSet = New DataSet
        NovoDataAdapter.Fill(NovoDataSet, "Produtos")



        Try

            'iniciar ligação a base de dados
            Using connetion As New OleDb.OleDbConnection(clientes.conprovide)

                'Define o comando e os parametros
                Dim command As New OleDb.OleDbCommand(query1, connetion)

                'abre a ligação e insere o registo
                connetion.Open()

                For i = 0 To NovoDataSet.Tables("Produtos").Rows.Count - 1
                    If NovoDataSet.Tables("Produtos").Rows(i).Item("codigoproduto") = cod Then
                        NovoDataSet.Tables("Produtos").Rows(i).Item("nomeproduto") = nomeprod
                        NovoDataSet.Tables("Produtos").Rows(i).Item("stock") = stock1
                    End If
                Next

                Dim x As Integer = command.ExecuteNonQuery()
                If x <> 1 Then
                    Throw New ArgumentException("Não foi possível inserir o Produto na Base de Dados!")
                Else : MessageBox.Show("Produto Adicionado")
                End If
                connetion.Close()
            End Using

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

        End Try

Share this post


Link to post
Share on other sites
Weasel

Mais do mesmo, aonde é que estás a definir os parâmetros da tua query1 ??


Knowledge to the masses


Share this post


Link to post
Share on other sites
bioshock

Relativamente ao teu 1º post:

1. Na tua query dizes:

"UPDATE Produtos SET [stock] = @stock1,[nomeproduto] = @nomeprod WHERE [codigoproduto] = @cod"

E no comando dizes:

command.Parameters.Add("stock", OleDb.OleDbType.Integer).Value = stock1
command.Parameters.Add("nomeproduto", OleDb.OleDbType.VarChar).Value = nomeprod

Errado...tem de ser:

command.Parameters.Add("@stock1", OleDb.OleDbType.Integer).Value = txtnome.Text
command.Parameters.Add("@nomeprod", OleDb.OleDbType.VarChar).Value = txtstock.Text
command.Parameters.Add("@cod", OleDb.OleDbType.Integer).Value = ' Aqui colocas onde vais buscar o código

Que era o que o Weasel se estava a referir.

Share this post


Link to post
Share on other sites
arned

eu acho e que quando vou buscar o valor da caixa de texto o txtstock.text é string e nao inteiro... mas nao sei bem...

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

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