Jump to content
Sign in to follow this  
progster

[Resolvido] Stocks

Recommended Posts

progster

Boas.

Estou a desenvolver uma aplicação de gestão de stocks.

O que tenho feito é:

Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Base de Dados\ConsImpressoras.mdb")
        Dim cmd As OleDbCommand
        Dim sql = "UPDATE Stock SET Stock.[Quantidade Stock] = (Stock.[Quantidade Stock]+ " & txtQuantidadeEntrar.Text & ")"
        cmd = New OleDbCommand(sql, conn)
        conn.Open()
        Dim x As Integer = cmd.ExecuteNonQuery()
        If x < 1 Then
            MessageBox.Show("Erro ao actualizar produtos em stock", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Else
            MessageBox.Show("Produtos em stock actualizados com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
DsConsImpressoras.Clear()
Me.StockTableAdapter.Fill(Me.DsConsImpressoras.Stock)
        End If
        cmd = Nothing
        conn.Close()

O que pretendo é que o utilizador introduza a quantidade de um produto a entrar em stock, bem como o Id do produto a actualizar.

Para a quantidade introduzida, sem o WHERE funciona pois actualiza todos os registos da tabela, mas para o Id do produto a actualizar está a dar erro.

O erro é:

Erro de sintaxe (operador em falta) na expressão de consulta '(Stock.[Quantidade Stock]+ 1 WHERE (Stock.[1])=  (Stock.[1])'.

Será que me podem ajudar? Desde já fico agradecido.

Cumprimentos.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
Caça

Essa sintaxe não é valida, tenta fazer assim

WHERE Stock.[iD] = ID_a_Actualizar


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
progster

... WHERE (Stock.[id Produto]=  " & txtIdProduto.Text & ")"

Continua a dar erro.

Erro:

Erro de sintaxe (operador em falta) na expressão de consulta '(Stock.[Quantidade Stock]+ 1 WHERE (Stock.[id Produto]=  1)'


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
bioshock

A forma correcta é algo deste género:

Dim query As String = "UPDATE Stock SET [Quantidade] = @Quantidade WHERE ID = @IDStock"
'(..)
command.Parameters.Add("@Quantidade", SqlDbType.Varchar).Value += 1
command.Parameters.Add("@IDStock", SqlDbType.Integer).Value = 3

Share this post


Link to post
Share on other sites
progster

E se em vez de pedir ao utilizador para introduzir o id do produto que quer actualizar, o mesmo existindo na BD aparece-se numa textbox?

Como poderia adaptar o código anterior?


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
Caça

Adapta da maneira que o bioshock te indicou, só tens de colocar o valor da Textbox no parâmetro ID_Produto


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
progster

Assim ?

Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Base de Dados\ConsImpressoras.mdb")
        Dim cmd As OleDbCommand
        Dim sql = "UPDATE Stock SET [Quantidade Stock] = @[Quantidade Stock]+ '" & txtQtdEntrar.Text & "')WHERE Id_Produto = @Id_Produto"
        cmd = New OleDbCommand(sql, conn)
        cmd.Parameters.Add("@Quantidade", OleDbType.VarChar).Value += txtQtdEntrar.Text
        cmd.Parameters.Add("@IDStock", OleDbType.Integer).Value = txtIdProd.Text
        conn.Open()
        Dim x As Integer = cmd.ExecuteNonQuery()
        If x < 1 Then
            MessageBox.Show("Erro ao actualizar produtos em stock", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Else 'If Me.txtIdProd.Text = Stock.txtIdProd.Text Then
            MessageBox.Show("Produtos em stock actualizados com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
            DsConsImpressoras.Clear()
            Me.StockTableAdapter.Fill(Me.DsConsImpressoras.Stock)
        End If
        cmd = Nothing
        conn.Close()

Agora dá erro na linha

Dim x As Integer = cmd.ExecuteNonQuery()

O erro é:

Erro de sintaxe (operador em falta) na expressão de consulta '@[Quantidade Stock]+ '1')'.

Não sei se é relevante dizer, mas para a textbox "txtId_Produto", tenho uma ligação para a tabela da BD em causa.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
progster

:cheesygrin: Tenho estado a utilizar este código.

Mas vou dar mais uma vista de olhos, pode ter-me escapado alguma coisa.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
bioshock

Olha para a tua query e vê a query que eu coloquei e diz-me se não notas nada de errado.

Share this post


Link to post
Share on other sites
progster

Já está a funcionar.

Após mais alguma pesquisa, bastou alterar para:

Dim sql = String.Format("UPDATE STOCK SET [Quantidade Stock] = ([stock].[Quantidade Stock]+{0}) WHERE Id_Produto = {1}", Convert.ToInt32(txtQtdEntrar.Text), Convert.ToInt32(txtIdProd.Text))

De qulaquer maneira, agradeço a ajuda disponibilizada.

Cumprimentos.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
progster

O que é que isso teve a ver para o post em causa? Por acaso sabes resolver TODOS os "problemas" que por aqui aparecem desde o zero?


Não resolvo dúvidas por PM.

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
Sign in to follow this  

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