Controle de Estoque Parte 2

12
 VB6 - 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 :  y  Definição dos objetos e linguagem a ser utilizada y Definição do Banco de dados , tabelas e estruturas específicas y Definição das classes : Clientes , Produtos , Pedidos e ItensPedidos y Definição das propriedades básicas de cada classe Nesta segunda parte vamos continuar definindo as fu ncionalidades 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 qu e as variáveis membros são privadas e os procedimentos Get e Let são públicos.   Podemos implementa r os métodos como funções ou Subrotinas(S ubs) , 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 : V erdadeiro ou Falso . Vamos abrir o recordset rsClientes e gravar no  banco de dados as propriedades definidas para cada campo da tabela clientes.

Transcript of Controle de Estoque Parte 2

Page 1: Controle de Estoque Parte 2

5/9/2018 Controle de Estoque Parte 2 - slidepdf.com

http://slidepdf.com/reader/full/controle-de-estoque-parte-2 1/12

 

VB6 - 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 utilizaday  Definição do Banco de dados , tabelas e estruturas específicasy  Definição das classes : Clientes , Produtos , Pedidos e ItensPedidosy  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 classesexecutem ações. Os métodos fazem a sua classe funcionar. . Até agora definimos apenasas variáveis membros que tem a função de armazenar os dados através dosprocedimentos : 

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 dasvariáveis membros 

Nota: lembre-se que as variáveis membros são privadas e os procedimentos Get eLet são públicos. 

 

Podemos implementar os métodos como funções ou Subrotinas(Subs) , e , você já deveestar cansado de saber que uma função poderá retornar um valor. Por exemplo omé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 precisarexecutar . Vamos começar pela classe Clientes. Quais as ações que esta classe precisaexecutar para se tornar funcional ? Para não complicar muito vamos nos ater somente aas ações básicas. Veja abaixo se você concorda com as ações que eu enumerei para aclasse clientes : 

1.  Incluir - incluir um cliente nobanco de dados 

2.  Excluir - excluir um cliente dobanco de dados 

3.  Atualizar - atualizar os dadosde um cliente 

4.  Localizar - localizar umdeterminado cliente 

E então ? concorda comigo ? Se você nãoconcordar , 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çarcom o método Incluir. O método Incluir será definido como uma função que irá retornarum valor boleano : V erdadeiro ou Falso. Vamos abrir o recordset rsClientes e gravar no

 

banco de dados as propriedades definidas para cada campo da tabela clientes.

Page 2: Controle de Estoque Parte 2

5/9/2018 Controle de Estoque Parte 2 - slidepdf.com

http://slidepdf.com/reader/full/controle-de-estoque-parte-2 2/12

 

No m  

¡ ¢   principal do VBnaopç

£  

o Tools s  

lecione A

dd¤  

rocedure.... Aseguir preenc ¥   a a caixade diálogo para a funç

£  

oIncluir conforme ao lado: 

Os métodos da classe Clientes 

Veja como ficou o c ¦   digo do método Incluir : 

Public Func§ 

ion Incluir() As Boolean On Error GoTo trata_erro_incluir

Set rsclientes = New ADODB.Recordsetrsclientes.Open "Clientes", oConexao,adOpenKeyset, adLockPessimistic ic 

rsclientes.AddNewrsclientes("NomeCliente") = sNomersclientes("EnderecoCliente") = sEnderecorsclientes("CidadeCliente") = sCidadersclientes("EstadoCliente") = sEstador

 

sclientes("CepCliente") = sCeprsclientes("TelefoneCliente") = sTelefonersclientes("CGCCliente") = sCgcCic rsclientes("InscricaoCliente") = sInscricaorsclientes("EmailCliente") = sEmailrsclientes("Ativo") = bAtivorsclientes.Updatersclientes.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 - InsertInto - cuja sintaxe é : 

INSERT INTO NomedaTabela(CAMPO1,CAMPO2,...) VALUES(VALOR1,VALOR2,..) 

Na abertura do recordset Clientes usamos usando os seguintes argumentos: 

y  adO    enKeySet - cursor y  adLock    essimistic- modo de

bloqeio 

Para maiores detalhes leia o artigo : 

Trabalhando com Recordsets - Alterando eRetornando dados. 

Obs: falaremos sobre avariáveloConexao mais a frente. 

Page 3: Controle de Estoque Parte 2

5/9/2018 Controle de Estoque Parte 2 - slidepdf.com

http://slidepdf.com/reader/full/controle-de-estoque-parte-2 3/12

 

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 StringSet rsclientes = New ADODB.RecordsetstrSQL = "SELECT * FROM Clientes WHERE codigoCliente = " & codigo

rsclientes.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic 

rsclientes.Deletersclientes.Close

Excluir = TrueExit 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 StringSet rsclientes = New ADODB.RecordsetstrSQL = "SELECT * FROM Clientes WHERE codigoCliente = " & codigo

rsclientes.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic 

rsclientes("NomeCliente") = sNomersclientes("EnderecoCliente") = sEnderecorsclientes("CidadeCliente") = sCidadersclientes("EstadoCliente") = sEstadorsclientes("CepCliente") = sCep

rsclientes("TelefoneCliente") = sTelefonersclientes("CGCCliente") = sCgcCic rsclientes("InscricaoCliente") = sInscricaorsclientes("EmailCliente") = sEmailrsclientes("Ativo") = bAtivorsclientes.Updatersclientes.Close

Atualizar = TrueExit Sub

Page 4: Controle de Estoque Parte 2

5/9/2018 Controle de Estoque Parte 2 - slidepdf.com

http://slidepdf.com/reader/full/controle-de-estoque-parte-2 4/12

 

 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.RecordsetstrSQL = "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 = TrueExit 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     rodutos 

Vamos adotar os mesmos procedimentos e criar os métodos da classe Produtos. Vamos 

 

trabalhar com os métodos : 

Page 5: Controle de Estoque Parte 2

5/9/2018 Controle de Estoque Parte 2 - slidepdf.com

http://slidepdf.com/reader/full/controle-de-estoque-parte-2 5/12

 

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.AddNewrsprodutos("NomeProduto") = sNomeProdutorsprodutos("QuantidadeProduto") = sgnQuantidadeProdutorsprodutos("AliquotaProduto") = sgnAliquotaProdutorsprodutos("EstoqueMinimo") = sgnEstoqueMinimorsprodutos("EstoqueMaximo") = sgnEstoqueMaximorsprodutos("PrecoUnitario") = curPrecoUnitariorsprodutos("Ativo") = bAtivorsprodutos.Updatersprodutos.Close

Incluir = TrueExit 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.RecordsetstrSQL = "SELECT * FROM Produtos WHERE codigoProduto = " & codigo

rsprodutos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic 

rsprodutos.Deletersprodutos.Close

Excluir = True

Page 6: Controle de Estoque Parte 2

5/9/2018 Controle de Estoque Parte 2 - slidepdf.com

http://slidepdf.com/reader/full/controle-de-estoque-parte-2 6/12

 

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 StringSet rsprodutos = New ADODB.RecordsetstrSQL = "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 = TrueExit 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 StringSet rsprodutos = New ADODB.Recordset

Page 7: Controle de Estoque Parte 2

5/9/2018 Controle de Estoque Parte 2 - slidepdf.com

http://slidepdf.com/reader/full/controle-de-estoque-parte-2 7/12

 

strSQL = "SELECT * FROM Produtos WHERE codigoProduto = " & codigo

rsprodutos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic 

rsprodutos("NomeProduto") = sNomeProdutorsprodutos("QuantidadeProduto") = sgnQuantidadeProdutorsprodutos("AliquotaProduto") = sgnAliquotaProdutorsprodutos("EstoqueMinimo") = sgnEstoqueMinimorsprodutos("EstoqueMaximo") = sgnEstoqueMaximorsprodutos("PrecoUnitario") = curPrecoUnitariorsprodutos("Ativo") = bAtivorsprodutos.Updatersprodutos.Close

Atualizar = TrueExit 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 S tring, QuantidadeVendidaAs Single) As Boolean

On Error GoTo trata_erro_atualizarEstoque

Dim strSQL As StringSet rsprodutos = New ADODB.RecordsetstrSQL = "SELECT * FROM Produtos WHERE codigoProduto = " & codigo

rsprodutos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic 

rsprodutos("QuantidadeProduto") = rsprodutos("QuantidadeProduto")  - QuantidadeVendidarsprodutos.Update

rsprodutos.Close

AtualizarEstoque = True

Exit Sub

trata_erro_atualizarEstoque: 

MsgBox " Ocorreu um erro durante a tentativa de atualizar o estoque para o produto decodigo : " & codigo & vbCrLf & _" Erro número : " & Err.Number & vbCrLf & _" Detalhes : " & Err.Description

Page 8: Controle de Estoque Parte 2

5/9/2018 Controle de Estoque Parte 2 - slidepdf.com

http://slidepdf.com/reader/full/controle-de-estoque-parte-2 8/12

 

 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.Recordsetrspedidos.Open "Pedidos", oConexao, adOpenKeyset, adLockPessimistic  

rspedidos.AddNewrspedidos("DataPedido") = datDataPedidorspedidos("NumeroNotaFiscal") = sgnNumeroNotaFiscalrspedidos("CodigoCliente") = lngCodigoClienterspedidos("PrecoTotal") = curPrecoTotalrspedidos("Frete") = curFreterspedidos("Ativo") = bAtivo

 

rspedidos.Update

rspedidos.Close

Incluir = TrueExit 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 StringSet rspedidos = New ADODB.Recordset

Page 9: Controle de Estoque Parte 2

5/9/2018 Controle de Estoque Parte 2 - slidepdf.com

http://slidepdf.com/reader/full/controle-de-estoque-parte-2 9/12

 

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 = TrueExit 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 StringSet rspedidos = New ADODB.RecordsetstrSQL = "SELECT * FROM pedidos WHERE codigoProduto = " & codigo

rspedidos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic 

rspedidos.Deleterspedidos.Close

Excluir = TrueExit 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 

Page 10: Controle de Estoque Parte 2

5/9/2018 Controle de Estoque Parte 2 - slidepdf.com

http://slidepdf.com/reader/full/controle-de-estoque-parte-2 10/12

 

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.Recordsetrspedidos.Open "Pedidos", oConexao, adOpenKeyset, adLockPessimistic  

rspedidos.AddNew

 

rspedidos("DataPedido") = datDataPedidorspedidos("NumeroNotaFiscal") = sgnNumeroNotaFiscal

rspedidos("CodigoCliente") = lngCodigoClienterspedidos("PrecoTotal") = curPrecoTotalrspedidos("Frete") = curFreterspedidos("Ativo") = bAtivorspedidos.Updaterspedidos.Close

Incluir = TrueExit 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 StringSet rsItensPedidos = New ADODB.RecordsetstrSQL = "SELECT * FROM ItensPedidos WHERE CodigoItemPedido = " & codigo

rsItensPedidos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic 

rsItensPedidos.DeletersItensPedidos.Close

Excluir = True

Page 11: Controle de Estoque Parte 2

5/9/2018 Controle de Estoque Parte 2 - slidepdf.com

http://slidepdf.com/reader/full/controle-de-estoque-parte-2 11/12

 

Exit Sub

trata_erro_excluir: 

MsgBox " Ocorreu um erro durante a tentativa de exclusão do item de pedido para ocodigo : " & 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 StringSet rsItensPedidos = New ADODB.RecordsetstrSQL = "SELECT * FROM ItensPedidos WHERE CodigoPedido = " & codigo

rsItensPedidos.Open strSQL, oConexao, adOpenKeyset, adLockPessimistic 

If rsItensPedidos.BOF ThenExibirItens = TrueElseSet itens = New CollectionDim 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 Withitens.Add oitemVendarsItensPedidos.movenextLoopEnd If 

rsItensPedidos.Close

ExibirItens = TrueExit 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

Page 12: Controle de Estoque Parte 2

5/9/2018 Controle de Estoque Parte 2 - slidepdf.com

http://slidepdf.com/reader/full/controle-de-estoque-parte-2 12/12

 

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 , podemo

dizer que concluí mos a definição dos principais métodos das classes do nosso projeto deControle de Estoque. 

Acompanhe a continuaçao do artigo em - VB6 - Controle de Estoques com ADO -

III.

 

..

José