You are on page 1of 18

Informe Access Tutorial Controle de Estoques

1. Descrio

O controle de estoque tem o objetivo de planejar, controlar e replanejar os pro-


dutos armazenados na empresa.

Este exemplo extremante simples e bsico. Toda entrada de um determinado


produto cadastrada em sua tabela (Tabela_Produtos_Entrada) e toda sada
na tabela (Tabela_Itens). Um cdigo VBA foi definido no Evento AfterUpdate
(Aps Atualizar) de um controle para atualizar as quantidades do produto.

Este Sistema ideal para pequenos e mdios estabelecimentos que tenham


estoque.

O Estoque integrado com o Sistema de Vendas. Ao efetuar uma venda com


seus respectivos itens, o estoque automaticamente1 atualizado dando baixa
nos itens adquiridos pelo cliente. J as entradas, so feitas por meio do cadas-
tro das mercadorias num formulrio de entradas.

Muitos sistemas de controle de estoque so excelentes ferramentas de traba-


lho, no entanto, na grande maioria das vezes, extremamente complexas para o
lojista pequeno e mdio. Este Sistema exatamente isso: um controlador de
entradas e sadas de produtos, simples, robusto, rpido.

A simplicidade, robustez e velocidade, com certeza iro atender completamen-


te as pequenas e mdias empresas, tornando-se uma alternativa em relao
ao custo/benefcio do mercado. Apontamos a seguir alguns aspectos:

a) cadastro completo de clientes;

b) cadastro completo de vendas;

c) cadastro de produtos;

d) cadastro de itens adquiridos pelo cliente em cada compra;

1
A atualizao dada quando o usurio informa ao Sistema que deve ser atualizado o estoque da-
quele produto, por meio de uma caixa de verificao.

26/05/2009 1 de 18
Informe Access Tutorial Controle de Estoques

e) cadastro e controle de estoque mnimo por produto;

f) baixa automtica no estoque ao efetuar uma venda;

g) baixa automtica no estoque efetuar entradas de mercadorias;

h) baixa automtica no estoque efetuar trocas e bonificaes;

i) estoque de todos os produtos;

j) produtos abaixo do estoque mnimo;

k) situao do estoque no cadastro de produtos;

l) valor presente do estoque por produto;

m) ficha tcnica de produto;

n) Se seu computador est conectado a uma rede, voc e outros usurios


podem trabalhar com um banco de dados do Microsoft Access ao mes-
mo tempo;

O Sistema totalmente aberto e voc mesmo poder fazer as adequaes e


ajustes necessrios ao seu estabelecimento.

2. Modelagem do Banco de Dados

A Modelagem do Banco de Dados a criao de uma estrutura de dados ele-


trnica (banco de dados) que representa um conjunto de informaes. Esta
estrutura permite ao usurio recuperar dados de forma rpida e eficiente.

As seguintes etapas devem ser realizadas para criar a estrutura de um banco


de dados:

2.1. Lista de Objetos

Nesta etapa, listamos os objetos que faro parte da nossa coleo de


dados.

26/05/2009 2 de 18
Informe Access Tutorial Controle de Estoques

2.1.1. Tabelas

Para desenvolvermos nosso Controle de Estoque temos de ter pelo me-


nos cinco tabelas bsicas, so elas:

Tabela_Clientes armazena os dados clientes e relacionada com a


Tabela_Vendas.

Tabela_Produtos armazena os produtos disponveis venda, esto-


que, preo etc.

Tabela_Produtos_Entrada armazena os dados das entradas de cada


produto adquirido pela empresa.

Tabela_Vendas destinada a armazenar dados da venda, por exemplo:


Data da venda, forma de pagamento, etc. Esta deve ser relacionada com
Tabela_Itens e Tabela_Clientes.

Tabela_Itens Esta tabela normalmente associada Tabela_Vendas


e a tabela onde armazena os itens adquiridos pelos clientes em cada
venda. Tambm relacionada com a Tabela_Produtos.

Definidas as tabelas do Sistema hora de criar os campos e definir seus


respectivos Tipos de Dados.

As estruturas das nossas tabelas de exemplos podem ser mudadas de


acordo com cada projeto. Os campos que estamos exemplificando so
recomendados, demais campos podem ser criados de acordo com a ne-
cessidade de cada projeto.

Estrutura da Tabela: Tabela_Clientes

Nome do Campo Tipo de Dados Tamanho Obs.

Id_Cliente Numerao Automtica Inteiro longo


Campo pai

26/05/2009 3 de 18
Informe Access Tutorial Controle de Estoques

Chave Primria para relacio-


namento

Nome do clien-
Nome_Cliente Texto 50
te

Telefone resi-
Telefone_Residencial Texto 15 dencial do cli-
ente

Estrutura da Tabela: Tabela_Vendas

Nome do Campo Tipo de Dados Tamanho Obs.

Numerao Automtica Campo pai


Id_Vendas Inteiro longo para relacio-
Chave Primria namento

Nmero Campo filho


Id_Cliente_Vendas Inteiro longo para relacio-
Chave Estrangeira namento

Data em que a
Data_Venda Data/Hora venda foi efe-
tuada

Estrutura da Tabela: Tabela_Produtos

Nome do Campo Tipo de Dados Tamanho Obs.

26/05/2009 4 de 18
Informe Access Tutorial Controle de Estoques

Campo pai
Numerao Automtica
Id_Produto Inteiro longo para relacio-
Chave Primria
namento

Nome do ser-
Nome_Produto Texto 50 vio ou produ-
to

Preo do ser-
Preco_Produto Unidade Monetria vio ou produ-
to

Qtde. do pro-
Estoque Nmero Inteiro longo duto no esto-
que

Qtde. mnima
Estoque_Minimo Nmero Inteiro longo que deve ter
no estoque

Estrutura da Tabela: Tabela_Produtos_Entrada

Nome do Campo Tipo de Dados Tamanho Obs.

Numerao Automtica
Campo reco-
Id_Entrada Inteiro longo
mendvel
Chave Primria

Id_Produto_Entrada Nmero Inteiro longo Campo filho


para relacio-

26/05/2009 5 de 18
Informe Access Tutorial Controle de Estoques

Chave Estrangeira namento

Qtde de produ-
Qtde_Entrada Nmero Inteiro longo
to que entrou

Data de entra-
da do produto
no estoque
Data_Entrada Data/Hora
Data de sada
do produto do
estoque

Origem dos
Origem Texto 50
produtos

Atualizar no
estoque a en-
Atualizar_Entrada Sim/No
tradas do pro-
duto?

Estrutura da Tabela: Tabela_Itens

Nome do Campo Tipo de Dados Tamanho Obs.

Numerao Automtica
Id_Produto Inteiro longo Recomendvel
Chave Primria

Id_Vendas_Item Nmero Inteiro longo Campo filho


para relacio-

26/05/2009 6 de 18
Informe Access Tutorial Controle de Estoques

Chave Estrangeira namento com


a tabela ven-
das

Campo filho
para relacio-
Id_Produto_Item Nmero Inteiro longo namento com
a tabela Pro-
dutos

Preo do ser-
Preco_Produto Unidade Monetria vio ou produ-
to

Qtde de itens
Qtde_Compra Nmero Inteiro longo
adquirido

Qtde de itens
Qtde_Troca Nmero Inteiro longo
para troca

Qtde de itens
Qtde_Bonificacao Nmero Inteiro longo para bonifica-
o

Atualizar no
Atualizar_Saida Sim/No estoque a sa-
da do produto?

Obs.: Leia sobre definies de chaves primria e estrangeira no Informe


Access.

26/05/2009 7 de 18
Informe Access Tutorial Controle de Estoques

2.2. Relacionamentos

Relacionamentos uma associao estabelecida entre campos comuns


(colunas) em duas tabelas.

Os relacionamentos do Sistema de Controle de Estoque se daro da se-


guinte forma:

Relacionamento 1:

Tabela_Clientes Tabela_Vendas. Associao estabelecida entre


campo Id_Cliente, chave primria da Tabela_Clientes com o campo
Id_Cliente_Vendas, chave estrangeira da tabela Tabela_Vendas. Esta-
belecendo-se assim um relacionamento um-para-muitos.

Relacionamento 2:

Tabela_Produtos Tabela_Produtos_Entrada. Associao estabeleci-


da entre campo Id_Produto, chave primria da Tabela_Produtos com o
campo Id_Produto_Entrada, chave estrangeira da tabela Tabe-
la_Produtos_Entrada. Estabelecendo-se assim um relacionamento um-
para-muitos.

Relacionamento 3:

Tabela_Produtos Tabela_Itens. Associao estabelecida entre cam-


po Id_Produto, chave primria da Tabela_Produtos com o campo
Id_Produto_Item, chave estrangeira da tabela Tabela_Itens. Estabele-
cendo-se assim um relacionamento um-para-muitos.

Relacionamento 4:

Tabela_Vendas Tabela_Itens. Associao estabelecida entre campo


Id_Vendas, chave primria da Tabela_Vendas, com o campo

26/05/2009 8 de 18
Informe Access Tutorial Controle de Estoques

Id_Vendas_Item, chave estrangeira da tabela Tabela_Itens. Estabele-


cendo-se assim um relacionamento um-para-muitos.

Veja todos os relacionamentos no relatrio Relacionamen-


tos_Informe_Access no Informe Access e como ficaram as associaes.
Na janela Banco de Dados, clique em Relacionamentos na barra de fer-
ramentas. Para visualizar todos os relacionamentos definidos no banco
de dados, clique em Mostrar todos os relacionamentos na barra de fer-
ramentas.

3. Formulrios

Os principais formulrios do Sistema so: Frm_Clientes; Frm_Vendas;


Frm_Produtos; Frm_Produtos_Entrada e Frm_Itens.

Frm_Clientes formulrio para cadastro, edio e excluso de clientes.

Frm_Vendas - formulrio para cadastro, edio e excluso de vendas.

Frm_Produtos - formulrio para cadastro, edio e excluso de produtos.

Frm_Produtos_Entrada - formulrio para cadastro de entrada de produtos.

Frm_Itens - formulrio para cadastro dos itens adquiridos pelos clientes.

4. Consultas

Criamos apenas uma consulta para exibir os dados do estoque. A Consul-


ta_Estoque uma consulta simples que tem como sua origem a Tabe-
la_Produtos.

5. Relatrios

Em um nico relatrio possvel aferir o estoque de todos os produtos; os


produtos que esto abaixo do estoque mnimo; valor presente do estoque
por produto; ficha tcnica de produto.

26/05/2009 9 de 18
Informe Access Tutorial Controle de Estoques

Abra o Informe Access, em Dicas, na categoria de exemplos, clique em


Relatrios; em seguida selecione "Relatrio Estoques" para abrir o relatrio
e veja como se aplica este recurso.

Os clculos se do de forma simples. Usando campos calculados, por e-


xemplo: para retornar o valor de um determinado produto no estoque multi-
plicamos a quantidade deste produto no estoque pelo seu preo de venda
Valor=[Preco_Produto]*[Estoque]

6. Cdigo VBA para atualizaes do estoque

Primeiramente voc deve Fixar uma referncia para uma biblioteca Micro-
soft ActiveX Data Objects 2.1 Library, como?

a) Abra um mdulo ou crie um novo mdulo.


b) No menu Ferramentas, clique em Referncias.
c) Na caixa Referncias disponveis, marque a caixa de seleo Microsoft
ActiveX Data Objects 2.1 Library

6.1. Atualizao das entradas

Para atualizar os valores das entradas de todos os produtos no estoque,


iremos usar o controle Atualizar_Entrada que est no formulrio
Frm_Produtos_Entrada

O cdigo VBA a seguir foi definido neste controle e se o usurio escolher


Sim na pergunta do Sistema, a atualizao feita na tabela de produtos.
Caso o usurio escolha No, o Sistema no atualiza o estoque.

CDIDO VBA:

Private Sub Atualizar_Entrada_AfterUpdate()

'Testa se verdadeiro o valor do controle Atualizar_Entrada.

If Atualizar_Entrada = True Then

'Se for verdadeiro, pergunta ao usurio se ele deseja atualizar a


quantidade do produto no estoque.

26/05/2009 10 de 18
Informe Access Tutorial Controle de Estoques

If MsgBox("Deseja atualizar a quantidade deste produto no esto-


que?", vbYesNo, "Aviso") = vbYes Then

'Se o usurio no entrar com um valor ou se o valor for o (zero), o


Sistema emite uma mensagem.

If IsNull(Me.Qtde_Entrada) Or Me.Qtde_Entrada = 0 Then

MsgBox "Informe a quantidade de entrada no estoque!", vbCri-


tical, "Ateno!"

Me.Qtde_Entrada.SetFocus

Exit Sub

End If

'Declara nova varivel (cnn) de conexo pelo sistema ADO

Dim cnn As New ADODB.Connection

'Declara varivel rs1 para os registros

Dim rs1 As ADODB.Recordset

'Abre a conexo com o banco

Set cnn = CurrentProject.Connection

'Abre a conexo com o registro

Set rs1 = New ADODB.Recordset

rs1.CursorType = adOpenKeyset

rs1.LockType = adLockOptimistic

'Abre a Tabela_Produtos

26/05/2009 11 de 18
Informe Access Tutorial Controle de Estoques

rs1.Open "Tabela_Produtos", cnn, , , adCmdTable

'Compara o cdigo do produto entre as tabelas Produtos e a ta-


bela para entradas de produtos.

rs1.Find "Id_Produto=" & Me.Id_Produto_Entrada, 0, adSearch-


Forward, 1

If Not rs1.EOF Then

'Soma a quantidade que entrou naquele momento ao esto-


que

rs1("Estoque") = rs1("Estoque") + Me.Qtde_Entrada

'Atualiza a tabela de estoques

rs1.Update

'Emite uma mensagem informando a quantidade atual no


estoque.

MsgBox "Quantidade atual disponvel de " &


rs1("Estoque") & " produtos", vbExclamation, "Ateno!"

End If

'Fecha os registros

rs1.Close

'Fecha a conexo

cnn.Close

'Fecha a conexo com o banco

Set cnn = Nothing

26/05/2009 12 de 18
Informe Access Tutorial Controle de Estoques

'Fecha a conexo com o registro

Set rs1 = Nothing

Else

End If

End If

End Sub

6.2. Atualizao das sadas

Para atualizar os valores das sadas de todos os produtos no estoque,


iremos usar o controle Atualizar_Saida que est no formulrio Frm_Itens

O cdigo VBA a seguir foi definido neste controle e se o usurio escolher


Sim na pergunta do Sistema, a atualizao feita na tabela de produtos.
Caso o usurio escolha No, o Sistema no atualiza o estoque.

CDIDO VBA:

Private Sub Atualizar_Saida_AfterUpdate()

'Testa se verdadeiro o valor do controle Atualizar_Saida.

If Atualizar_Saida = True Then

'Se for verdadeiro, pergunta ao usurio se ele deseja atualizar a


quantidade do produto no estoque.

If MsgBox("Deseja atualizar a quantidade deste produto no esto-


que?", vbYesNo, "Aviso") = vbYes Then

'Se o usurio no entrar com um valor ou se o valor for o (zero), o


Sistema emite uma mensagem.

26/05/2009 13 de 18
Informe Access Tutorial Controle de Estoques

If IsNull(Me.Qtde_Compra) Or Me.Qtde_Compra = 0 Then

MsgBox "Informe a quantidade de vendida no estoque!", vbCri-


tical + vbOKOnly, "Ateno!"

Me.Qtde_Compra.SetFocus

Exit Sub

End If

'Declara nova varivel (cnn) de conexo pelo sistema ADO

Dim cnn As New ADODB.Connection

'Declara varivel rs1 para os registros

Dim rs1 As ADODB.Recordset

'Abre a conexo com o banco

Set cnn = CurrentProject.Connection

'Abre a conexo com o registro

Set rs1 = New ADODB.Recordset

rs1.CursorType = adOpenKeyset

rs1.LockType = adLockOptimistic

'Abre a Tabela_Produtos

rs1.Open "Tabela_Produtos", cnn, , , adCmdTable

'Procura e compara cdigo do produto entre as tabelas Produtos


e a tabela de itens.

26/05/2009 14 de 18
Informe Access Tutorial Controle de Estoques

rs1.Find "Id_Produto=" & Me.Id_Produto_Item, 0, adSearchFor-


ward, 1

If Not rs1.EOF Then

'Diminui a quantidade de itens que saiu naquele momento ao


estoque. (Compra)

rs1("Estoque") = rs1("Estoque") - Me.Qtde_Compra

'Diminui a quantidade de itens que saiu naquele momento ao


estoque. (Troca)

rs1("Estoque") = rs1("Estoque") - Me.Qtde_Troca

'Diminui a quantidade de itens que saiu naquele momento ao


estoque. (Bonificao)

rs1("Estoque") = rs1("Estoque") - Me.Qtde_Bonificacao

'Verifica se o estoque menor do que 0 (zero)

If rs1("Estoque") < 0 Then

'Se for, emite mensagem ao usurio

MsgBox "Quantidade no disponvel. Saldo atual em esto-


que de " & rs1("Estoque") + Me.Qtde_Compra & " produtos", vbCriti-
cal, "Ateno!"

Exit Sub

Else

'Verifica se o estoque atual menor do que o estoque m-


mino

If rs1("Estoque") < rs1("Estoque_Minimo") Then

26/05/2009 15 de 18
Informe Access Tutorial Controle de Estoques

' Se for, emite mensagem avisando ao usurio que deve


pedir deste produto ao fornecedor

MsgBox "Estoque atual abaixo do estoque mnimo. Pe-


dir no mnimo " & rs1("Estoque_Minimo") - rs1("Estoque") & " produ-
tos(s)", vbExclamation, "Ateno!"

'Atualiza a tabela de estoques

rs1.Update

Exit Sub

Else

rs1.Update

'Emite uma mensagem informando a quantidade atual


no estoque.

MsgBox "Quantidade atual disponvel de " &


rs1("Estoque") & " produtos", vbExclamation, "Ateno!"

End If

End If

End If

'Fecha os registros

rs1.Close

'Fecha a conexo

cnn.Close

'Fecha a conexo com o banco

26/05/2009 16 de 18
Informe Access Tutorial Controle de Estoques

Set cnn = Nothing

'Fecha a conexo com o registro

Set rs1 = Nothing

Else

End If

End If

End Sub

7. Concluso

Bom. Chegamos ao fim do nosso tutorial. Este no um tutorial com todas


as respostas para se criar um Controle de Estoques. Cada empresa tem
uma demanda diferente, cada programador pode usar uma metodologia de
modelagem diferente etc.

A idia deste tutorial dar diretrizes tcnicas quanto modelagem, funcio-


nalidade e a programao do Sistema de Controle de Estoques.

Antes de criar uma soluo final para sua empresa ou para qualquer outra
finalidade, faa vrios testes no Sistema. Insira e remova dados, adapte o
Sistema s necessidades da empresa, etc. Isso possibilitar descobrir fa-
lhas antes de disponibilizar o Sistema para toda a empresa.

Este tutorial mostrou que podemos criar um Controle de Estoques no Ac-


cess. Controle de Estoques por si s, muito complexo, visto a diversidade
de conceitos sobre o assunto e as peculiaridades de cada empresa. Isso
no significa, no entanto, que um programa de difcil manipulao. Ele
chega a ser fcil, na medida em que voc o entende e usa.

26/05/2009 17 de 18
Informe Access Tutorial Controle de Estoques

Como j dito, o objetivo deste tutorial mostrar a viabilidade de desenvol-


vimento do Sistema e que voc mesmo possa criar suas solues a partir
deste exemplo.

Sugiro que voc examine o Sistema por completo: tabelas; campos; tipos
de dados dos campos; relacionamentos; cdigos VBA etc, e por ultimo, mas
muito importante, consulte sempre os usurios, so eles o motivo de o Sis-
tema existir, oua a opinio deles e na medida do possvel, implante suas
idias.

Boa Sorte a todos!

Lus Carlos

26/05/2009 18 de 18