; mso-ansi-language: PT-BR">Veja como criar um sistema on-line de controle para uma vídeo-locadora

 

Continuando o desenvolvimento da nossa aplicação ASP.NET com Delphi for .NET, sobre um sistema on-line de vídeo-locadora, veremos agora como confirmar a locação a partir de uma reserva e fazer a locação de vídeos. Mão na massa!

 

Confirmando a locação a partir de uma reserva

Realizada a reserva através da página do usuário, faremos agora uma página destinada à área administrativa do sistema para concretizar uma reserva transformando-a para uma locação, supondo que ocorra a retirada do vídeo. Caso a retirada do vídeo não ocorra no prazo previsto, a mesma será ignorada nas consultas a seguir levando em consideração a data prevista e a data atual. No menu File|New>Other>Delphi for .NET Projects>New ASP.NET Files>ASP.NET Page crie uma nova página com o nome de “a_reservas.aspx” e adicione ao corpo dela uma tabela de 4 linhas e 1 coluna com 700 pixels de largura. Arraste para a primeira linha da tabela o uccontrole.ascx que fará o controle de usuários autenticados nesta página. Na segunda linha escreva o texto de identificação “Manutenção de Reservas” e na linha seguinte adicione um DataGrid(“gridReservas”).

Adicione por final um Button(“btnVoltar”). Selecionando o gridReservas, clique sobre o mesmo com o botão direito do mouse e selecione o item Auto Format aplicando a ele um estilo de cores e fontes. Clicando novamente selecione agora o item Property Builder onde iremos modificar a estrutura da categoria Columns, onde no topo da janela desmarque o item Create columns automatically at run time. Em seguida clique no item Bound Column em Available columns e envie-o para Selected columns. Agora selecione-o e atribua o valor COD_LOCACAO na propriedade Data Field, onde receberemos o valor do campo na tabela Locacao através do result set da Select. Desmarque também a opção Visible da coluna.

Agora insira uma nova coluna, ou seja, clique novamente em Bound Column e envie-o para a área Selected columns. Na propriedade Header text (“Texto de cabeçalho”), digite “Titulo” e em Data Field o valor TITULO também resultante do Select. Arraste uma nova coluna do Bound Column para Selected columns, na propriedade Header text digite “Cliente” e em Data Field o valor “NOME”, resultado do Select. Adicione ainda uma nova coluna e altere sua propriedade Header text para “Data Reserva”. em Data Field digite o valor “DATA” e em Data Formatting Expression o valor “{0:dd/MM/yyyy}”. Por fim inclua uma nova coluna de botões, chamada de Button Column. Expanda o Button Column e selecione a opção Select. Envie-o para a direita e modifique a propriedade Header text e para “Locação” e o Text para “Confirmar” e clique em Ok para confirmar nossas alterações.

Utilizando a tecla de atalho F12, vá até o código da página e declare na seção Private do código a procedure “CriaListaReservas” que irá preencher o gridReservas com os registros válidos encontrados no Select ao banco de dados. Utilize a teclas Ctrl+Shift+C para criar a implementação do procedimento e adicione ao mesmo o código da Listagem 1. O método criado é muito semelhante aos outros já criados, utiliza de componentes criados e instanciados em runtime no objeto SelectCommand do DataAdapter e passamos a instrução de SQL que obedecerá os parâmetros de registros com Status igual a “R” com a data prevista de devolução/vencimento maior ou igual a data atual (“Today”);

 

Listagem 1. Método para carregamento das reservas ativas

 

procedure TWebForm2.CriaListaReservas;

var

  Comand: FbCommand;

  DataAdapter: FbDataAdapter;

  Ds: DataSet;

  Conn: FbConnection;

begin

  { Criação dos objetos de conexão }

  Conn := FbConnection.Create;

  DataAdapter := FbDataAdapter.Create;

  Comand := FbCommand.Create;

  { Atribuição da string de conexão e abertura do BD}

  Conn.ConnectionString := strConexao;

  Conn.Open;

  { Atribuição dos atributos de seleção dos dados }

  DataAdapter.SelectCommand := Comand;

  DataAdapter.SelectCommand.Connection := Conn;

  DataAdapter.SelectCommand.CommandText :=

    'SELECT LOCACAO.COD_LOCACAO, VIDEOS.TITULO,

    'CLIENTES.NOME, ' +

    'LOCACAO.DATA FROM LOCACAO ' +

    '   INNER JOIN VIDEOS ON (LOCACAO.VIDEO =

    'VIDEOS.COD_VIDEO) ' +

    '   INNER JOIN CLIENTES ON (LOCACAO.CLIENTE =

    'CLIENTES.COD_CLIENTE) ' +

    'WHERE ((LOCACAO.STATUS = ''R'') AND (LOCACAO

    '.PREV_DEVOLUCAO >= ''TODAY'')) ORDER BY

    'LOCACAO.DATA';

  { Criação em memória do DataSet auxliar }

  Ds := DataSet.Create;

  DataAdapter.Fill(Ds, 'Titulo');

  try

...

Quer ler esse conteúdo completo? Tenha acesso completo