Array
(
)

Atualizar o estoque em um datatable após venda

Frostlost
   - 28 nov 2008

Pessoal possui uma rotina de venda usando c# e dataset tipado.

No datagridview lanço os itens da venda , onde busco pelo código do produto a descrição e o valor. Ao digitar a quantidade do produto ou modificar o valor, o campo subtotal também é modificado. Em seguida salvo a venda e o itens da venda. Ou seja a minha venda é um mestre detalhe. Até aí tudo bem, agora preciso atualizar o estoque de outro datatable. Como faço isso. Verifiquem o código de minha aplicação abaixo:

#Código

namespace VendaVideoAula
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void vendaBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.vendaBindingSource.EndEdit();
            this.vendaTableAdapter.Update(this.vendaVideoDataSet.Venda);
            this.itensVendaTableAdapter.Update(this.vendaVideoDataSet.ItensVenda);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.itensVendaTableAdapter.Fill(this.vendaVideoDataSet.ItensVenda);
            this.produtoTableAdapter.Fill(this.vendaVideoDataSet.Produto);
            this.clienteTableAdapter.Fill(this.vendaVideoDataSet.Cliente);
            this.vendaTableAdapter.Fill(this.vendaVideoDataSet.Venda);
        }

        

        private void itensVendaDataGridView_CellValidated(object sender, DataGridViewCellEventArgs e)
        {
            string preco;
            double subtotal;
            
            if ((itensVendaDataGridView.CurrentCell.ColumnIndex == 1))
            {
                itensVendaDataGridView.CurrentRow.Cells[2].Value = "0";
                itensVendaDataGridView.CurrentRow.Cells[3].Value = "1";
                this.produto1TableAdapter.Fill(this.vendaVideoDataSet.Produto1, Convert.ToInt32(itensVendaDataGridView.CurrentRow.Cells[1].Value));
                foreach (DataRow dr in vendaVideoDataSet.Tables[4].Rows)
                {
                    preco = dr[1].ToString();
                    itensVendaDataGridView.CurrentRow.Cells[2].Value = preco;
                }
            }

            if ((itensVendaDataGridView.CurrentCell.ColumnIndex == 2) || (itensVendaDataGridView.CurrentCell.ColumnIndex == 3))
            {
                double n1 = Convert.ToDouble(itensVendaDataGridView.CurrentRow.Cells[2].Value);
                double n2 = Convert.ToDouble(itensVendaDataGridView.CurrentRow.Cells[3].Value);
                subtotal = n1 * n2;
                itensVendaDataGridView.CurrentRow.Cells[4].Value = subtotal;

                double total;
                total = 0;
                foreach (DataGridViewRow data in itensVendaDataGridView.Rows)
                {
                    total = total + Convert.ToDouble(data.Cells[4].Value);
                }
                totalTextBox.Text = total.ToString();
            }
        }


A parte de cima tudo bem, para baixar o estoque estou utilizando o método abaixo, mas não está dando certo, alguem tem alguma sugestão?

#Código
private void button1_Click(object sender, EventArgs e) //atualizar estoque
        {
            foreach (DataGridViewRow data in itensVendaDataGridView.Rows)
            {
                
                    this.produto1TableAdapter.Fill(this.vendaVideoDataSet.Produto1, Convert.ToInt32(itensVendaDataGridView.CurrentRow.Cells[1].Value));
                    DataRow drCurrent = vendaVideoDataSet.Tables["produto1"].Rows[0];
                    drCurrent.BeginEdit();
                    drCurrent["Qtde"] = "130";
                    drCurrent.EndEdit();
                    this.produto1TableAdapter.Update(this.vendaVideoDataSet.Produto1);
                    this.vendaVideoDataSet.Produto1.Clear();
            }
           this.produto1TableAdapter.Update(this.vendaVideoDataSet.Produto1);
        }