Controle de Estoque Parte 2
Transcript of 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 :
y
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.
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.
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
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 :
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
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
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
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
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
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
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
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é