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);
}