Controle de Estoques - Parte VI- Formulário de Entrada de itens do Estoque

Na janela Solution Explorer, clique com o botão direito em ctrComissao. Selecione Add / Windows Form.
No name, digite: frmEntrada e pressione a tecla Enter. Altere as seguintes propriedades:
Text: Entrada de Produtos no estoque
StartPosition: ScreenCenter 'Centraliza o formulário
MinimizeBox: False
MaximizeBox: False

Coloque um Label na parte superior esquerda do formulário e altere as propriedades:
Name: lblPesquisa
Text: Pesquisa:

Coloque um TextBox logo abaixo do label acima e altere as propriedades:
Name: txtPesquisa

Na janela ToolBox (na parte esquerda superior da janela, onde na aba ToolBox tem as ferramentas: Label, TextBox, etc.), selecione a aba Data Sources. Veja figura abaixo:

ctrEstoque3
Selecione o de Produto e na seta ao lado selecione DataGridView.

Arraste-o logo abaixo do TextBox txtPesquisa. Altere o nome do grid para: dgvProduto.

Altere a seguinte propriedade do dgvProduto:
Size: 411; 236

Observação: Delete o ProdutoBindingNavigator.

Clique com o botão direito sobre o grid e selecione Edit Columns.
Selecione cada campo abaixo e altere as propriedades:
HeaderText: Código
Width:60
HeaderText: Descrição
Width:120
HeaderText: QtdEstoque
Width: 80
HeaderText: ValorVenda
Width: 90
DefaultCellStyle: clique no botão ao lado. Na opção Behavior / Format. Clique no botão ao lado e selecione Currency. Em Layout / Alignment, selecione TopRight.

Monte abaixo do grid, o layout do form conforme abaixo:

Coloque primeiro um groupbox e altere as propriedades:
Name: gbDados
Text: &Dados

Dentro do mesmo, coloque os componentes:

Componente Text Name Propriedade
Label Data: lblData  
MaskedTextBox   mskData  
Label Valor: lblValor  
TextBox   mskValor  
Label QtdeEst: lblQtdeEstoque  
TextBox   txtQtdeEstoque  
Label Qtde: lblQtde  
TextBox   txtQtde  
Label Total: lbTotal  
TextBox   txtValorTotal  

Coloque outro groupbox e altere as propriedades:
Name: gbOpcoes
Text: &Opções

Dentro do mesmo, coloque os componentes:

Componente Text Name Propriedade
Button C&onfirma btnConfirma Enabled = False
Button &Pesquisa btnPesquisaEntrada  
Button Sai&r btnSair  

Dê um duplo clique no formulário.
Antes da linha Public Class frmPProduto, digite: Imports System.Data.OleDb

Logo após a linha Public Class frmPProduto, digite:
Private dsProduto As DataSet
Private daProduto As New OleDbDataAdapter
Private dtProduto As DataTable

Desça até o Private Sub frmPProduto_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Antes do End Sub, digite:
Try
Dim cn As New OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.oleDB.4.0;Data Source=" & sCaminho & "\Estoque.mdb;"
cn.Open()
Dim sSQL As String = "Select * From Produto Order By Descricao"
dsProduto = New DataSet()
daProduto = New OleDbDataAdapter(sSQL, cn)
daProduto.Fill(dsProduto, "Produto")
dtProduto = dsProduto.Tables("Produto")
dgvProduto.DataSource = dtProduto
Catch err As Exception
MessageBox.Show(err.Message)
Finally
cn.Close()
End Try

Selecione o evento Form_Closed e digite:
Close()

Clique no ícone View Designer para voltar ao formulário. Dê um duplo clique no TextBox txtPesquisa e digite:
Dim cn As New OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.oleDB.4.0;Data Source=" & sCaminho & "\Estoque.mdb;"
cn.Open()
Dim sSQL As String = "Select * From Produto Where Descricao Like '" & txtPesquisa.Text & "%'"
dsProduto = New DataSet()
daProduto = New OleDbDataAdapter(sSQL, cn)
daProduto.Fill(dsProduto, "Produto")
dtProduto = dsProduto.Tables("Produto")
dgvProduto.DataSource = dtProduto
cn.Close()

Volte ao formulário. Dê um duplo clique no dgvProduto. Altere o evento para CellClick e digite o código abaixo:
mskData.Text = DateTime.Today 'Data do sistema é armazenado neste maskedit
mskValor.Text = dgvProduto.CurrentRow.Cells(3).Value.ToString
'O valor de venda deste produto é armazenado neste maskedit
txtQtdeEstoque.Text = dgvProduto.CurrentRow.Cells(2).Value.ToString
'A quantidade em estoque atual, é armazenada neste textbox
txtQtde.Focus()

Volte ao formulário. Dê um duplo clique no textbox txtTotal e digite o código abaixo:
If Len(txtQtde.Text) = 0 Then Exit Sub 'Senão foi digitado nenhuma quantidade, não executa as linhas abaixo
txtValorTotal.Text = CType(mskValor.Text, Single) * CType(txtQtde.Text, Integer)
'Efetua o cálculo
btnConfirma.Enabled = True
'Habilita este botão

Codificação do botão btnConfirma:
If MessageBox.Show("Confirma a Entrada ?", "Entrada", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then

Dim sSQL As String, sData As String, datatmp As Date
datatmp = Convert.ToDateTime(mskData.Text)
sData = datatmp.Year.ToString & "-" & datatmp.Month.ToString & "-" & datatmp.Day.ToString

Try
'Insere na tabela de Entrada
sSQL = "Insert Into Entrada (CodProduto, DataEntrada, Quantidade, Valor_Unitario)"
sSQL = sSQL & "Values (" & dgvProduto.CurrentRow.Cells(0).Value.ToString & ","
sSQL = sSQL & "'" & sData & "'" & ","
sSQL = sSQL & txtQtde.Text & ","
sSQL = sSQL & Replace(mskValor.Text, ",", ".") & ")"
Dim cmdEntrada As New OleDbCommand(sSQL, cn)
cn.Open()
cmdEntrada.ExecuteNonQuery()

'Atualiza o estoque
Dim nQtde As Integer = txtQtde.Text, nQtdeEstoque As Integer = dgvProduto.CurrentRow.Cells(2).Value.ToString
txtQtde.Text = nQtde + nQtdeEstoque
sSQL = "Update Produto Set QtdEstoque=" & txtQtde.Text
sSQL = sSQL & " Where Codigo=" & dgvProduto.CurrentRow.Cells(0).Value.ToString
Dim cmdProduto As New OleDbCommand(sSQL, cn)
cmdProduto.ExecuteNonQuery()

'Exibe e atualiza o grid de produtos
Dim dsProduto As DataSet
Dim daProduto As New OleDbDataAdapter
Dim dtProduto As DataTable
sSQL = "Select * From Produto Order By Descricao"
dsProduto = New DataSet()
daProduto = New OleDbDataAdapter(sSQL, cn)
daProduto.Fill(dsProduto, "Produto")
dtProduto = dsProduto.Tables("Produto")
dgvProduto.DataSource = dtProduto
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
cn.Close()
btnConfirma.Enabled = False
Call Limpar()
End Try
End If

Abaixo do End Sub, crie a subrotina abaixo:
Private Sub Limpar()
txtPesquisa.Text = ""
mskData.Text = ""
mskValor.Text = ""
txtQtdeEstoque.Text = ""
txtQtde.Text = ""
txtValorTotal.Text = ""
End Sub

No evento KeyPress do textbox txtQtde, digite o código abaixo:
'Só permite digitar números
If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack Then
e.Handled = True
End If

Codificação do botão btnPesquisa:
frmPEntrada.ShowDialog()

Pressione a tecla F5 para executar o projeto.

Observação: Para a montagem das Saídas de itens do Estoque, a codificação acima é praticamente igual. Só terá as mudanças quando onde existir entrada será saída.

Controle de Estoque - Parte I

Controle de Estoque - Parte II

Controle de Estoque - Parte III

Controle de Estoque - Parte IV

Controle de Estoque - Parte V

Controle de Estoque - Parte VII

Hosted by www.Geocities.ws

1