Visual Basic 6 - Controle de Estoques com ADO - II
Se você esta chegando agora deverá ler a primeira parte do artigo - VB6 - Controle de Estoques com ADO - I onde iniciamos o projeto definindo as seguintes tarefas :
Definição dos objetos e linguagem a ser utilizada
Definição do Banco de dados , tabelas e estruturas específicas
Definição das classes : Clientes , Produtos , Pedidos e ItensPedidos
Definição das propriedades básicas de cada classe
Nesta segunda parte vamos continuar definindo as funcionalidades de cada classe . Vamos definir os métodos para cada classe de forma a permitir que nossas classes executem ações. Os métodos fazem a sua classe funcionar. . Até agora definimos apenas as variáveis membros que tem a função de armazenar os dados através dos procedimentos :
Property Let - que permitem aos usuários das classes atribuir e alterar as variáveis membros
Property Get - que permitem aos usuários das classes ler o conteúdo das variáveis membros
Nota: lembre-se que as variáveis membros são privadas e os procedimentos Get e Let são públicos.
Podemos implementar os métodos como funções ou Subrotinas(Subs) , e , você já deve estar cansado de saber que uma função poderá retornar um valor. Por exemplo o método OpenDataBase da DAO abre um banco de dados e retorna um objeto DataBase. Assim para criar os métodos você deve pensar em quais ações sua classe vai precisar executar . Vamos começar pela classe Clientes. Quais as ações que esta classe precisa executar para se tornar funcional ? Para não complicar muito vamos nos ater somente a as ações básicas. Veja abaixo se você concorda com as ações que eu enumerei para a classe clientes :
|
E então ? concorda
comigo ? Se você não concordar , eu não vou brigar por
causa disto. Fique a vontade para definir os seus próprios métodos. |
Agora ficou fácil , vamos criar os quatro métodos para a classe clientes: Vamos começar com o método Incluir. O método Incluir será definido como uma função que irá retornar um valor boleano : Verdadeiro ou Falso. Vamos abrir o recordset rsClientes e gravar no banco de dados as propriedades definidas para cada campo da tabela clientes.
No menu principal do VB na opção Tools selecione Add Procedure.... A seguir preencha a caixa de diálogo para a função Incluir conforme ao lado: |
Os métodos da classe Clientes
Veja como ficou o código do método Incluir :
Public Function Incluir() As Boolean On Error GoTo trata_erro_incluir Set rsclientes = New ADODB.Recordset rsclientes.Open "Clientes", oConexao, adOpenKeyset, adLockPessimistic ic rsclientes.AddNew rsclientes("NomeCliente") = sNome rsclientes("EnderecoCliente") = sEndereco rsclientes("CidadeCliente") = sCidade rsclientes("EstadoCliente") = sEstado rsclientes("CepCliente") = sCep rsclientes("TelefoneCliente") = sTelefone rsclientes("CGCCliente") = sCgcCic rsclientes("InscricaoCliente") = sInscricao rsclientes("EmailCliente") = sEmail rsclientes("Ativo") = bAtivo rsclientes.Update rsclientes.Close Incluir = True Exit Sub trata_erro_incluir: MsgBox " Ocorreu um erro durante a tentativa de inclusão de cliente " & vbcrlf & _ CrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Incluir = False End Function |
Por questão de
simplicidade eu usei os seguintes métodos do objeto
Recordset:
Poderia ter usado a instrução SQL - Insert Into - cuja sintaxe é : INSERT INTO NomedaTabela(CAMPO1,CAMPO2,...) VALUES(VALOR1,VALOR2,..) Na abertura do recordset Clientes usamos usando os seguintes argumentos:
Para maiores detalhes leia o artigo : Trabalhando com Recordsets - Alterando e Retornando dados. Obs: falaremos sobre a variável oConexao mais a frente. |
Agora o código do método Excluir da classe Clientes :
Public Function Excluir(codigo As Long) As Boolean On Error GoTo trata_erro_excluir Dim strSQL As String Set rsclientes = New ADODB.Recordset strSQL = "SELECT * FROM Clientes WHERE codigoCliente = " & codigo rsclientes.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic rsclientes.Delete rsclientes.Close Excluir = True Exit Sub trata_erro_excluir: MsgBox " Ocorreu um erro durante a tentativa de exclusão de cliente para o codigo : " & codigo & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Excluir = False End Function |
Agora o código do método atualizar :
Public Function Atualizar(codigo As Long) As Boolean On Error GoTo trata_erro_atualizar Dim strSQL As String Set rsclientes = New ADODB.Recordset strSQL = "SELECT * FROM Clientes WHERE codigoCliente = " & codigo rsclientes.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic rsclientes("NomeCliente") = sNome rsclientes("EnderecoCliente") = sEndereco rsclientes("CidadeCliente") = sCidade rsclientes("EstadoCliente") = sEstado rsclientes("CepCliente") = sCep rsclientes("TelefoneCliente") = sTelefone rsclientes("CGCCliente") = sCgcCic rsclientes("InscricaoCliente") = sInscricao rsclientes("EmailCliente") = sEmail rsclientes("Ativo") = bAtivo rsclientes.Update rsclientes.Close Atualizar = True Exit Sub trata_erro_atualizar: MsgBox " Ocorreu um erro durante a tentativa de exclusão de cliente para o codigo : " & codigo & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Atualizar = False End Function |
Finalmente o método localizar da classe cliente :
Public Function Localizar(codigo As Long) As Boolean On Error GoTo trata_erro_localizar Dim strSQL As String Set rsclientes = New ADODB.Recordset strSQL = "SELECT * FROM Clientes WHERE codigoCliente = " & codigo rsclientes.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic sNome = rsclientes("NomeCliente") sEndereco = rsclientes("EnderecoCliente") sCidade = rsclientes("CidadeCliente") sEstado = rsclientes("EstadoCliente") sCep = rsclientes("CepCliente") sTelefone = rsclientes("TelefoneCliente") sCgcCic = rsclientes("CGCCliente") sInscricao = rsclientes("InscricaoCliente") sEmail = rsclientes("EmailCliente") bAtivo = rsclientes("Ativo") rsclientes.Close Localizar = True Exit Sub trata_erro_localizar: MsgBox " Ocorreu um erro durante a tentativa de localizar o cliente para o codigo : " & codigo & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Localizar = False End Function |
Os métodos da Classe Produtos
Vamos adotar os mesmos procedimentos e criar os métodos da classe Produtos. Vamos trabalhar com os métodos :
1- O código do método Incluir da classe Produtos
Public
Function Incluir() As Boolean On Error GoTo trata_erro_incluir Set rsprodutos = New ADODB.Recordset rsprodutos.Open "Produtos", oConexao, adOpenKeyset, adLockPessimistic rsprodutos.AddNew rsprodutos("NomeProduto") = sNomeProduto rsprodutos("QuantidadeProduto") = sgnQuantidadeProduto rsprodutos("AliquotaProduto") = sgnAliquotaProduto rsprodutos("EstoqueMinimo") = sgnEstoqueMinimo rsprodutos("EstoqueMaximo") = sgnEstoqueMaximo rsprodutos("PrecoUnitario") = curPrecoUnitario rsprodutos("Ativo") = bAtivo rsprodutos.Update rsprodutos.Close Incluir = True Exit Sub trata_erro_incluir: MsgBox " Ocorreu um erro durante a tentativa de inclusão do Produto " & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Incluir = False End Function |
2- O método excluir da classe Produtos
Public
Function Excluir(codigo As Long) As Boolean On Error GoTo trata_erro_excluir Dim strSQL As String Set rsprodutos = New ADODB.Recordset strSQL = "SELECT * FROM Produtos WHERE codigoProduto = " & codigo rsprodutos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic rsprodutos.Delete rsprodutos.Close Excluir = True Exit Sub trata_erro_excluir: MsgBox " Ocorreu um erro durante a tentativa de exclusão do produto para o codigo : " & codigo & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Excluir = False End Function |
3- O método Localizar da classe Produtos
Public
Function Localizar(codigo As Long) As Boolean On Error GoTo trata_erro_localizar Dim strSQL As String Set rsprodutos = New ADODB.Recordset strSQL = "SELECT * FROM Produtos WHERE codigoProduto = " & codigo rsprodutos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic sNomeProduto = rsprodutos("NomeProduto") sgnQuantidadeProduto = rsprodutos("QuantidadeProduto") sgnAliquotaProduto = rsprodutos("AliquotaProduto") sgnEstoqueMinimo = rsprodutos("EstoqueMinimo") sgnEstoqueMaximo = rsprodutos("EstoqueMaximo") curPrecoUnitario = rsprodutos("PrecoUnitario") bAtivo = rsprodutos("Ativo") Localizar = True Exit Sub trata_erro_localizar: MsgBox " Ocorreu um erro durante a tentativa de localizar o produto para o codigo : " & codigo & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Localizar = False End Function |
4- O método Atualizar da classe Produtos.
Public
Function Atualizar(codigo As Long) As Boolean On Error GoTo trata_erro_atualizar Dim strSQL As String Set rsprodutos = New ADODB.Recordset strSQL = "SELECT * FROM Produtos WHERE codigoProduto = " & codigo rsprodutos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic rsprodutos("NomeProduto") = sNomeProduto rsprodutos("QuantidadeProduto") = sgnQuantidadeProduto rsprodutos("AliquotaProduto") = sgnAliquotaProduto rsprodutos("EstoqueMinimo") = sgnEstoqueMinimo rsprodutos("EstoqueMaximo") = sgnEstoqueMaximo rsprodutos("PrecoUnitario") = curPrecoUnitario rsprodutos("Ativo") = bAtivo rsprodutos.Update rsprodutos.Close Atualizar = True Exit Sub trata_erro_atualizar: MsgBox " Ocorreu um erro durante a tentativa de atualizar o produto para o codigo : " & codigo & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Atualizar = False End Function |
5- O método AtualizaEstoque da classe Produtos.
Public
Function AtualizarEstoque(codigo as Long, Produto As
String, QuantidadeVendida As Single) As Boolean On Error GoTo trata_erro_atualizarEstoque Dim strSQL As String Set rsprodutos = New ADODB.Recordset strSQL = "SELECT * FROM Produtos WHERE codigoProduto = " & codigo rsprodutos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic rsprodutos("QuantidadeProduto") = rsprodutos("QuantidadeProduto") - QuantidadeVendida rsprodutos.Update rsprodutos.Close AtualizarEstoque = True Exit Sub trata_erro_atualizarEstoque: MsgBox " Ocorreu um erro durante a tentativa de atualizar o estoque para o produto de codigo : " & codigo & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description AtualizarEstoque = False End Function |
Os métodos da Classe Pedidos
Vamos adotar os mesmos procedimentos e criar os métodos da classe Pedidos. Vamos trabalhar com os métodos :
1- O código do método Incluir da classe Pedidos:
Public
Function Incluir() As Boolean On Error GoTo trata_erro_incluir Set rspedidos = New ADODB.Recordset rspedidos.Open "Pedidos", oConexao, adOpenKeyset, adLockPessimistic rspedidos.AddNew rspedidos("DataPedido") = datDataPedido rspedidos("NumeroNotaFiscal") = sgnNumeroNotaFiscal rspedidos("CodigoCliente") = lngCodigoCliente rspedidos("PrecoTotal") = curPrecoTotal rspedidos("Frete") = curFrete rspedidos("Ativo") = bAtivo rspedidos.Update rspedidos.Close Incluir = True Exit Sub trata_erro_incluir: MsgBox " Ocorreu um erro durante a tentativa de inclusão do Pedido " & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Incluir = False End Function |
2- O método Localizar da classe Pedidos:
Public
Function Localizar(codigo As Long) As Boolean On Error GoTo trata_erro_localizar Dim strSQL As String Set rspedidos = New ADODB.Recordset strSQL = "SELECT * FROM pedidos WHERE codigoPedido = " & codigo rspedidos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic datDataPedido = rspedidos("DataPedido") sgnNumeroNotaFiscal = rspedidos("NumeroNotaFiscal") sgnCodigoCliente = rspedidos("CodigoCliente") curPrecoTotal = rspedidos("PrecoTotal") curFrete = rspedidos("Frete") bAtivo = rspedidos("Ativo") Localizar = True Exit Sub trata_erro_localizar: MsgBox " Ocorreu um erro durante a tentativa de localizar o pedido para o codigo : " & codigo & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Localizar = False End Function |
3- Método Excluir da classe Pedidos.
Public
Function Excluir(codigo As Long) As Boolean On Error GoTo trata_erro_excluir Dim strSQL As String Set rspedidos = New ADODB.Recordset strSQL = "SELECT * FROM pedidos WHERE codigoProduto = " & codigo rspedidos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic rspedidos.Delete rspedidos.Close Excluir = True Exit Sub trata_erro_excluir: MsgBox " Ocorreu um erro durante a tentativa de exclusão do pedido para o codigo : " & codigo & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Excluir = False End Function |
Os métodos da Classe ItensPedidos
Vamos adotar os mesmos procedimentos e criar os métodos da classe ItensPedidos. Vamos trabalhar com os métodos :
1- O código do método Incluir da classe Pedidos:
Public
Function Incluir() As Boolean On Error GoTo trata_erro_incluir Set rspedidos = New ADODB.Recordset rspedidos.Open "Pedidos", oConexao, adOpenKeyset, adLockPessimistic rspedidos.AddNew rspedidos("DataPedido") = datDataPedido rspedidos("NumeroNotaFiscal") = sgnNumeroNotaFiscal rspedidos("CodigoCliente") = lngCodigoCliente rspedidos("PrecoTotal") = curPrecoTotal rspedidos("Frete") = curFrete rspedidos("Ativo") = bAtivo rspedidos.Update rspedidos.Close Incluir = True Exit Sub trata_erro_incluir: MsgBox " Ocorreu um erro durante a tentativa de inclusão do Pedido " & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Incluir = False End Function |
2- O método Excluir da classe itensPedidos :
Public
Function Excluir(codigo As Long) As Boolean On Error GoTo trata_erro_excluir Dim strSQL As String Set rsItensPedidos = New ADODB.Recordset strSQL = "SELECT * FROM ItensPedidos WHERE CodigoItemPedido = " & codigo rsItensPedidos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic rsItensPedidos.Delete rsItensPedidos.Close Excluir = True Exit Sub trata_erro_excluir: MsgBox " Ocorreu um erro durante a tentativa de exclusão do item de pedido para o codigo : " & codigo & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Excluir = False End Function |
3 - O método ExibirItens da classe ItensPedidos:
Public
Function ExibirItens(codigo As Long, itens As Collection)
As Boolean On Error GoTo trata_erro_exibiritens Dim strSQL As String Set rsItensPedidos = New ADODB.Recordset strSQL = "SELECT * FROM ItensPedidos WHERE CodigoPedido = " & codigo rsItensPedidos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic If rsItensPedidos.BOF Then ExibirItens = True Else Set itens = New Collection Dim oitemPedido As ItemPedidos Do While Not rsItensPedidos.EOF Set oitemPedido = New ItemPedidos With oitemPedido .codigoPedido = rsItensPedidos("CodigoPedido") .CodigoProduto = rsItensPedidos("CodigoProduto") .PrecoUnitario = rsItensPedidos("PrecoUnitario") .Desconto = rsItensPedidos("Desconto") End With itens.Add oitemVenda rsItensPedidos.movenext Loop End If rsItensPedidos.Close ExibirItens = True Exit Sub trata_erro_exibiritens: MsgBox " Ocorreu um erro durante a tentativa de exibir o item de pedido para o codigo : " & codigo & vbCrLf & _ " Erro número : " & Err.Number & vbCrLf & _ " Detalhes : " & Err.Description Excluir = False End Function |
Ufa !! Até que enfim terminamos esta parte , embora vamos precisar fazer alguns ajustes que eu vou deixar para comentar e mostrar na continuação do artigo , podemos dizer que concluímos a definição dos principais métodos das classes do nosso projeto de Controle de Estoque.
Acompanhe a continuação do artigo em - VB6 - Controle de Estoques com ADO - III...
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 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
https://msdn.microsoft.com/en-us/library/system.management%28v=vs.110%29.aspx