Retirar valores a um campo numa base de dados - Visual Basic .NET - Portugal-a-Programar
Retirar valores a um campo numa base de dados
By wizzuu,
May 19, 2015 in Visual Basic .NET
Mais um problema no meu projecto. 😛
Ora bem, no formulário "pedidos" tenho uma datagridview que não está ligada a nenhuma base de dados.
no formulário "gestão" tenho outra datagridview(StocksDataGridView) que está ligada a uma base de dados .
Formulário "pedidos":
Colunas: "Mesa", "Nome", "Preço", "Quantidade"
[*]Formulário "gestão":
​StocksDataGridView (ligada ao StocksDataSet)
​Colunas: "Cod", "Nome", "Quantidade", "Tipo"
A DataGridView1 é preenchida com o seguinte código:
DataGridView1.Rows.Add(lbl_nrmesa.Text, item.SubItems(0).Text, item.SubItems(1).Text, item.SubItems(2).Text)
Depois de efetuar isto,
Estando os seguintes valores na StockDataGridView:
Cod Nome Quantidade Tipo
1 Frango 15 Pratos
O que eu queria era que ao clicar num botão, fosse retirado ao campo Quantidade da StocksDataGridView, o valor do campo Quantidade da DataGridView1. Ou seja uma simples subtração, para ir controlando os stocks disponíveis.
If row.Cells(1) = gestao.StocksDataGridView.Rows(i).Cells(1).Value Then
Dim targetRow = DirectCast(gestao.StocksBindingSource.AddNew(), DataRowView)
targetRow(3) = gestao.StocksDataGridView.Rows(i).Cells(3).Value - row.Cells(3).Value
gestao.StocksBindingSource.EndEdit()
Com esta forma primeiro deu este erro, penso que seja por causa da StocksDataGridView estar ligada a uma base de dados, logo não dará para adicionar nem modificar nada de forma programática.
Dim instrucao As String = "UPDATE Stocks SET Quantidade=Quantidade-'" & row.Cells(3).Value & "' WHERE Nome='" & row.Cells(1).Value.ToString & "'"
Me.StocksTableAdapter1.Adapter.SelectCommand.CommandText = instrucao
Me.TableAdapterManager.UpdateAll(Me.StocksDataSet)
Me.StocksTableAdapter1.Fill(Me.StocksDataSet.Stocks)
Com este código não dá erro nenhum, simplesmente não modifica nada, quando vou ao formulário gestão, a StocksDataGridView está igual (mesmo fechando e abrindo este formulário gestão).
quero que ao clicar num botão, seja retirado ao campo Quantidade da StocksDataGridView, o valor do campo Quantidade da DataGridView1. Ou seja uma simples subtração, para ir controlando os stocks disponíveis.
Agradecia imenso a vossa ajuda, é para a PAP.
A melhor solução é ao clicar no botão, passar os valores dos campos das duas datagridviews que pretende, para duas variáveis. Depois fazer a operação de subtração com as variáveis e só depois fazer o update à base de dados com base no resultado.
Um alerta é que o update deveria ser efetuado com base no campo Cod e não Nome, dado que se pressupõe que o Cod seja único e o nome poderá eventualmente ser repetido ou ter semelhanças que poderá causar eventuais conflitos.
Edited May 20, 2015 by Cerzedelo
Desculpe a demora a responder.
Já consegui pôr uma parte a funcionar, só há um problema.
Label5.Text = DataGridView1.Rows(i).Cells(1).Value.ToString
Label6.Text = DataGridView1.Rows(i).Cells(3).Value
instrucao = "UPDATE Stocks SET Quantidade=Quantidade-'" & Label6.Text & "' WHERE Nome='" & Label5.Text.ToString & "'"
Estou a usar este código, o problema é que só muda o ultimo valor da datagrid.. Quero que mude todas as linhas.