wizzuu Posted May 19, 2015 Report Share Posted May 19, 2015 Boa tarde. 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": DataGridView1 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: For Each item As ListViewItem In ListView2.Items DataGridView1.Rows.Add(lbl_nrmesa.Text, item.SubItems(0).Text, item.SubItems(1).Text, item.SubItems(2).Text) Next 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. Tentei das seguintes formas: Forma 1: Dim i As Integer i = 1 For Each row As DataGridViewRow In DataGridView1.Rows 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 'Etc. gestao.StocksBindingSource.EndEdit() End If i = i + 1 Next 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. Forma 2 For Each row As DataGridViewRow In DataGridView1.Rows 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) Next 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). Volto a repetir, 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. Obrigado, Cumprimentos 🙂 Link to comment Share on other sites More sharing options...
Cerzedelo Posted May 20, 2015 Report Share Posted May 20, 2015 (edited) 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 Link to comment Share on other sites More sharing options...
wizzuu Posted May 25, 2015 Author Report Share Posted May 25, 2015 (edited) 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. Desculpe a demora a responder. Obrigado desde já pela resposta. Já consegui pôr uma parte a funcionar, só há um problema. For i = 0 To DataGridView1.RowCount - 1 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 & "'" Me.StocksTableAdapter1.Adapter.SelectCommand.CommandText = instrucao Next Estou a usar este código, o problema é que só muda o ultimo valor da datagrid.. Quero que mude todas as linhas. Cumprimentos Edited May 25, 2015 by apocsantos geshi Link to comment Share on other sites More sharing options...
wizzuu Posted May 27, 2015 Author Report Share Posted May 27, 2015 up Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now