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 :

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 :

  1. Property Let - que permitem aos usuários das classes atribuir e alterar as variáveis membros

  2. 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 :

  1. Incluir - incluir um cliente no banco de dados

  2. Excluir - excluir um cliente do banco de dados

  3. Atualizar - atualizar os dados de um cliente

  4. Localizar - localizar um determinado cliente

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:
  1. Open - abrir o recordset
  2. Addnew - incluir um novo registro
  3. Update - atualizar a inclusão
  4. Close - fechar o recorset

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:

  • adOpenKeySet - cursor
  • adLockPessimistic- modo de bloqeio

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. Incluir
  2. Excluir
  3. Atualizar
  4. Localizar
  5. atualizarEstoque

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. Incluir
  2. Excluir
  3. Localizar

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. Incluir
  2. Excluir
  3. ExibirItens

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:


José Carlos Macoratti