Visual Basic - Sistema para Controle de Vendas (protótipo)
Que tal um sistema para controle de vendas ?
Atendendo a pedidos vou lançar os fundamentos, dando o pontapé inicial para que você possa criar um sistema para controle de vendas.
Nada de camarão, será o básico, o arroz com feijão. Iremos usar como base de dados o Microsoft Access - Vendas.mdb - e usar a tecnologia ADO para acesso aos dados.
Não usarei classes e o código com as regras de negócios será colocado nos formulários no velho estilo procedural que usa o padrão one-button-click.
Tudo isto para facilitar o entendimento de quem esta começando com o VB. (O estilo one-button-click no qual o código com as regras de negócio e colocado no formulário ou em um botão de comando não é muito aconselhável se você quiser ter aplicações robustas , escaláveis e de fácil manutenção)
Vou detalhar passo a passo os formulários iniciais usados no projeto destacando os aspectos mais relevantes. No final você terá uma ideia de como criar uma aplicação completa para controle de vendas e terá aprendido algumas técnicas de como trabalhar com ADO e com formulários no VB6 podendo ainda exercitar os seus conhecimentos sobre VB6 e ADO.
Iniciando a descrição do sistema
O nosso projeto de controle de vendas possui um módulo .bas onde temos os seguinte métodos definidos que serão usados pela aplicação:
O código do módulo é :
'definição das variáveis objeto visíveis em todo o projeto Public cnn As New ADODB.Connection Public rs As New ADODB.Recordset Public rs1 As New ADODB.Recordset Public rstemp As New ADODB.Recordset Public lst As ListItem Public Sub conecta() Dim path As String On Error GoTo ado2 'define o caminho do banco de dados path = App.path & "\vendas.mdb" 'define o tipo de cursor usado cnn.CursorLocation = adUseClient 'se a If rs.State = 1 Then rs.Close cnn.Open "provider = microsoft.jet.oledb.3.51;persist security info=false;data source = " & path Exit Sub ado2: MsgBox "Ocorreu um erro durante o acesso ao banco de dados : " & Err.Description, _ vbCritical, "Erro de acesso ao banco de dados" End Sub Public Sub Verifica_RStemp() If rstemp.State = 1 Then rstemp.Close End Sub Public Sub Verifica_RS() If rs.State = 1 Then rs.Close End Sub Public Sub Verifica_RS1() If rs1.State = 1 Then rs1.Close End Sub |
Nota: Eu estou usando o
provedor OleDb 3.51 mas você pode mudar para o provedor OleDb 4.0. Exemplo
:
cnn.Open "provider = microsoft.jet.oledb.4.0;persist
security info=false;data source = " & path
Deixe-me apresentar a tela principal do sistema onde temos o menu de opções. (O logotipo é opcional ...)
Para criar o formulário acima vamos usar dois controles :
As imagens são exibidas no controle ToolBar via controle ImageList. As imagens são inseridas no controle ImageList e usadas pelo controle ToollBar; para isto você deve atribuir o nome do controle ImageList na propriedade ImageList da ToolBar
Os controles ImageList e ToolBar : No
primeiro inserimos as imagens que vamos exibir e no segundo atribuímos
as imagens a ToolBar onde definimos o Texto do Menu e a chave(Key) que
será usada para acionar o menu quando o usuário fazer a seleção. |
O código para fazer o tratamento de cada seleção do usuário quando ele clicar nas opções do menu é :
Private Sub tb_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.key Case "clientes" Load clientes clientes.Show 1 Case "listaV" Load Sales_LIST Sales_LIST.Show 1 Case "vendas" Load sales sales.Show 1 Case "fornecedores" frmSupp.ano = "" Load frmSupp frmSupp.Show 1 Case "produtos" Load main main.Show 1 Case "pedido" Load frmOrder frmOrder.Show 1 Case "listaP" Load OrderPEND OrderPEND.Show 1 Case "entrega" Load Orderdel Orderdel.Show 1 Case "sair" If (MsgBox("Confirma o encerramento do sistema ? ", vbYesNo, "Encerra Sistema") = vbYes) Then cnn.Close If rs1.State = 1 Then rs1.Close End End If End Select End Sub |
Agora vamos falar do cadastro de clientes. Ao clicar na opção o formulário clientes será carregado via comando Load: Load Clientes e em seguida exibido via método Show : clientes.Show 1 (O número 1 indica que o formulário será do tipo modal ou seja terá que fechar o formulário para acessar outro formulário da aplicação. Mude para 0 e veja como o formulário clientes se comporta.)
O formulário clientes exibido é mostrado abaixo:
Neste formulário
temos os controles ListView que exibe a relação de clientes e o controle
CommandButton que usamos para os botões :
- incluir - cmdAdd Temos também o controle ImageList onde eu defini a imagem que esta sendo exibida no ListView. Para isto é necessário definir a propriedade ImgeList do controle. Obs: Se o usuário clicar duas vezes sobre uma linha do ListView entraremos em modo de edição de dados. |
Nota : os cabeçalho dos campos estão em inglês por que eu aproveitei uma tabela de um aplicativo escrito em inglês.
O ListView foi configurado da seguinte forma :
O código deste formulário é o seguinte :
Private Sub cmdAdd_Click() cmd = "inclui" Load cliDados cliDados.Show 1 End Sub Private Sub cmddel_Click() If MsgBox("Deseja realmente excluir o registro : " & clilista.SelectedItem.SubItems(1), vbYesNo) = vbYes Then cnn.Execute "delete from clientes where cli_num = " & clilista.SelectedItem.Text rs.Requery 1 Preenche End If End Sub Private Sub cmdedit_Click() Call clilista_DblClick End Sub Private Sub cmdexit_Click() Unload Me End Sub Private Sub clilista_DblClick() Dim x As Integer cmd = "edita" cliDados.data(0) = clilista.SelectedItem.Text For x = 1 To 3 cliDados.data(x) = clilista.SelectedItem.SubItems(x) Next x Load cliDados cliDados.Show 1 End Sub Private Sub Form_Load() Verifica_RS rs.Open "select * from clientes order by cli_num", cnn Preenche End Sub Public Sub Preenche() Dim x As Integer clilista.ListItems.Clear While Not rs.EOF Set lst = clilista.ListItems.Add(, , rs(0), , 1) For x = 1 To 3 lst.SubItems(x) = rs(x) Next x rs.MoveNext Wend End Sub |
Note que no código acima eu estou usando o formulário - cliDados - para editar e incluir dados do cliente. O formulário é exibido abaixo:
O formulário -
CliDados - possui dois botões :
Possui também 4 TextBox :
|
Vamos dar uma olhada no código deste formulário :
Private Sub cmdSair_Click() Unload Me End Sub Private Sub cmdSalvar_Click() Dim cta As Integer cta = 0 If data(1) = "" Then MsgBox "Por favor informe o nome do Cliente.." data(1).SetFocus Exit Sub ElseIf data(3) = "" Then MsgBox "Informe o endereço." Exit Sub End If If data(2) <> "" Then If Not IsNumeric(data(2).Text) Then MsgBox "Número do telefone inválido !" Exit Sub End If End If If clientes.cmd = "inclui" Then Verifica_RStemp rstemp.Open "select * from clientes", cnn While rstemp.RecordCount > 0 Verifica_RStemp cta = cta + 1 rstemp.Open "select * from clientes where cli_num = " & cta, cnn Wend cnn.Execute "insert into clientes values(" & cta & ", '" & data(1) & "', '" & data(2) & "', '" & data(3) & "')" ElseIf clientes.cmd = "edita" Then cnn.Execute "update clientes set cli_nome = '" & data(1) & "', cli_tel = '" & data(2) & "', cli_end = '" & _ data(3) & "' where cli_num = " & data(0) End If rs.Requery 1 clientes.Preenche Unload Me End Sub |
Note que para fazer a inclusão dos dados do formulário na tabela Clientes eu estou usando a instrução SQL :
cnn.Execute "insert into
clientes values(" & cta & ", '" & data(1) & "', '" & data(2) & "', '" & data(3)
& "')"
e para fazer a atualização utilizo o comando SQL :
cnn.Execute "update
clientes set cli_nome = '" & data(1) & "', cli_tel = '" & data(2) & "', cli_end
= '" & data(3) & "' where cli_num = " & data(0)
Veja também que eu verifico qual a opção que o cliente selecionou no formulário
clientes : clientes.cmd = "Inclui" ou clientes.cmd="edita"
A variável cmd é uma variável pública definida no formulário clientes na qual eu atribuo a seleção quando o usuário clica no menu.
No código eu estou usando as rotinas : Verifica_RStemp definida no módulo e a rotina Preenche ( clientes.Preenche ) definida no formulário clientes.
Assim você já tem os fundamentos lançados, basta implementar o formulário de Produtos e Fornecedores seguindo a mesma lógica e incrementar o sistema com os requisitos que achar necessário.
Obs: O artigo deste link : http://www.macoratti.net/vb_estq1.htm também pode lhe dar mais ideias sobre como concluir o sistema.
Veja também outros sistemas similares no : Super DVD Visual Basic
Bom estudo...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?
|
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET