VB.NET 2005 - Criando uma aplicação Windows Completa: Locadora de Filmes - Parte 5
Continuando o desenvolvimento do nosso projeto Locadora de Filmes no Visual Basic 2005 Express Edition este artigo irá continuar a mostrar a implementação da interface do usuário. Se você esta chegando agora recomendo leia os artigos :
VB.NET 2005 - Criando uma aplicação completa : Locadora de Filmes I
VB.NET 2005 - Criando uma aplicação completa : Locadora de Filmes II
VB.NET 2005 - Criando uma aplicação completa : Locadora de Filmes III
VB.NET 2005 - Criando uma aplicação completa : Locadora de Filmes IV
Neste artigo vou mostrar como implementar a classe para efetuar o registra da locação dos filmes da locadora de filmes.Lembrando que já foram implementadas as seguintes funcionalidades:
Cadastrar clientes - Clientes.vb
Cadastrar Filmes - Filmes.vb
Cadastrar Categorias - Categorias.vb
Implementando a classe para registrar a locação efetuada no formulário : Movimento.vb
Apenas para recordar o formulário Movimento.vb possui o seguinte layout:
A estrutura da tabela Movimento é a seguinte:
- O campo CodigoLocacao é um campo
autonumerado (Identity) e por este motivo não iremos gravar nada neste campo
visto que seu valor é incrementado automaticamente Devemos registrar valores nos seguintes campos:
- Os campos Devolucao e Valor serão preenchidos quando da devolução do filme pelo cliente (por este motivo aceitam valores Nulls, pois não iremos gravar nada na locação nestes campos) |
Uma primeira pergunta que talvez possa surgir seria: Porque eu não implemento o código de locação no próprio formulário ?
Bem , primeiro porque a locação refere-se a ao negócio da locadora de filmes e por este motivo é bom separar a regra de negócio da interface do usuário.
Para criar a classe LocaFilmes.vb clique com o botão direito do mouse sobre o nome do projeto e selecione a opção Add e a seguir New Item; informando a seguir o nome do arquivo e clicando no botão Add.
É claro que antes de efetuar a locação eu preciso verificar o estoque de filmes para ver se existe o filme disponível. Se houver terei que diminuir uma unidade , referente a unidade locada e acrescentá-la a tabela de locações efetuadas : Movimento.
Antes de entrar no código teremos que criar uma nova consulta relacionada com a tabela Filmes que nos devolva um determinado filme conforme o seu código.
Na janela Data Source vamos editar o DataSet FilmeDS e vamos incluir uma nova consulta, conforme já vimos nos artigos anteriores, para filtrar os filmes selecionados pelo código do filme. Usando o Query Builder informamos o parâmetro @codigoFilme para montar a instrução SQL conforme abaixo:
Ao salvar a consulta acrescente o sufixo Codigo conforme tela da figura 1.0 abaixo. Na figura 2.0 vemos o DataSet exibindo a nova consulta criada:
|
|
Figura 1.0 - Nomeando a instrução SQL para selecionar dados | Figura 2.0 - O dataset exibindo a consulta criada |
Vamos precisar criar também uma nova consulta de inclusão de dados na tabela Movimento usando a instrução SQL INSERT/INTO. Na janela Data Sources clique com o botão direito do mouse sobre o DataSet MovimentoDS e selecione - Edit DataSet with Designer. A seguir clique no dataset com o botão direito e selecione Add e a seguir Query.
Usando o Query Builder construa a instrução SQL para inserir uma linha na tabela Movimento , conforme figura abaixo:
A janela - TableAdapter Query Configuration Wizard - deverá exibir a instrução INSERT INTO conforme figura abaixo:
Clique em Next> e Informe o nome da consulta - InsertQueryMovimentoLocacao - conforme figura 3.0. Na figura 4.0 temos o resultado final onde o dataset já exibe a instrução SQL criada.
Figura 3.0 - Nomeando a consulta criada | Figura 4.0 - O DataSet exibindo a instrução SQL para incluir dados na tabela |
Podemos então partir para o código da classe LocaFilmes.vb:
Public Class LocaFilmesPublic Sub alugarFilmes(ByVal codfilme As Integer, ByVal codcliente As Integer, ByVal datalocacao As Date) Dim adapterFilmes As New FilmesDSTableAdapters.FilmesTableAdapter
Dim filme
As
New FilmesDS
If filme.Filmes.Count = 0 Then Throw New ArgumentException("Não existe o filme informado no acervo.") End If 'se não tem filme no estoque avisa Throw New ArgumentException("Não existem unidades cadastradas no acervo.") End If 'se houver filme no estoque tenho que diminuir a unidade locada do estoque filme.Filmes(0).Estoque -= 1
'atualiza o banco de dados adapterFilmes.Update(filme) 'registrar a locacao Dim adapterLocacao As New MovimentoDSTableAdapters.MovimentoTableAdapter Dim movimentoLocacao As New MovimentoDS.MovimentoDataTable 'utiliza a instrução SQL criada para incluir dados na tabela Movimento - InsertQueryMovimentoLocacao adapterLocacao.InsertQueryMovimentoLocacao(codcliente, codfilme, datalocacao) adapterLocacao.Update(movimentoLocacao) End Sub End Class |
No código da classe acima exibido estou realizando as seguintes tarefas:
Como o código esta comentado vou apenas executar a aplicação e acompanhar de perto o que implementamos para ver se esta tudo funcionando:
- Esta é a tela do Menu Principal
- Perceba que na opção do Menu Movimento criamos duas opções:
Nota: Você deverá incluir um novo formulário chamado FilmesAlugados.vb da mesma forma que fizemos com os demais formulários e arrastar a tabela Movimento para o formulário. Após fazer isto exclua o BindingNavigator que o assistente incluiu no formulário pois não iremos efetuar manutenção neste formulário.
|
Clicando na opção - Locação de Filmes- temos o formulário onde iremos informar o código do filme e o código do cliente. Lembre que implementamos os formulário SelecionaFilme.vb e SelecionaCliente.vb para podemos selecionar um cliente pelo nome. Abaixo temos a exibição da tela do formulário Movimento.vb e de SelecionaFilme.vb após clicarmos em Procurar:
Após efetuar a seleção do Filme e do Cliente e clicar no botão Registra a locação será efetuada. Podemos ver isto na opção Filmes Alugados:
Se consultarmos o estoque de filmes para o filme de código igual a 1 iremos ver que houve uma diminuição de uma unidade do estoque referente a locação efetuada. Quando da devolução deveremos repor o filme no estoque.
Dica : Sugiro que você implemente uma transação no código para que se algo der errado durante o processo ele não seja concluído.
O código do evento Click do botão Registra é dado a seguir:
Private Sub
btnRegistraLocacao_Click(ByVal
sender As System.Object, ByVal e
As System.EventArgs) Handles
btnRegistraLocacao.Click
Dim
locacao As New LocaFilmes locacao.alugarFilmes(CType(txtCodigoFilme.Text,
Integer),
CType(txtCodigoCliente.Text,
Integer),
DateTime.Now) Catch ex As Exception Throw New ArgumentException("Erro durante a locação do filme: " & ex.Message) End Try End Sub |
O código acima cria uma instância da classe LocaFilmes e utiliza o método alugarFImes passando os parâmetros esperados.
A seguir cenas do próximo artigo: A implementação do formulário de devolução e a cobrança da locação.
Aguarde a continuação no artigo : VB.NET 2005 - Criando uma aplicação Windows Completa: Locadora de Filmes - Parte 6
VB.NET 2005 , é fácil, é simples, é legal. Divirta-se...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: