quarta-feira, 18 de janeiro de 2017

Controle de estoque com o LibreOffice Base - parte 8: Caixas de textos em formulários

Para visualizar os pedidos de maneira mais organizada, vamos criar um formulário um pouco mais elaborado. Mas antes vamos precisar criar duas novas consultas, uma para exibir o nome do cliente que fez o pedido e outra para somar o total do pedido.

Nesta parte, como na anterior, continuaremos com a transcrição dos textos escritos pelo autor original pois acreditamos que o texto esteja suficientemente completo e tudo o que poderíamos fazer seria encher linguiça, o que não queremos fazer aqui mostraremos a criação dos formulários dos objetos criados. Aqui concluiremos os formulários acrescentando mais funções para o auxílio no preenchimento de dados.
Começaremos então com a consulta que retornará o nome do cliente.
Na tela principal clique em Consultas > Criar consulta no editor....
Adicione a tabela Cliente.
Na terceira linha da primeira coluna na opção Tabela selecione a tabela Cliente.
Na primeira linha na opção Campo selecione o campo codigo_cliente.
Na segunda coluna selecione também a tabela Cliente e o campo nome.
Salve a consulta com o nome NomeCliente.
Volte para a tela inicial e clique novamente em Criar consulta no editor...
Até agora nossas consultas utilizaram apenas tabelas para retornar as informações que precisávamos, mas nesta nova consulta vamos utilizar os dados da consulta ConsultaPedidos.
Logo que clicamos em Criar consulta no editor... abre-se a caixa de dialogo Adicionar tabela ou consulta.
O assistente exibe opção para adicionar Tabelas ou Consultas.
Selecione Consultas,
Selecione ConsultaPedidos > Adicionar.

É basicamente o mesmo processo para a criação de uma consulta com tabelas. O que muda
é que selecionamos uma consulta.
Na primeira coluna adicione o campo codigo_pedido,
Na segunda coluna o campo Total.
Na sexta linha - opção Função, adicione a função Grupo para o campo codigo_pedido na primeira coluna, para que a consulta agrupe os pedidos que possuem o mesmo código.
No campo Total utilize a função Soma.

Para recordar, na coluna Total da consulta ConsultaPedidos multiplicamos o valor do produto pela quantidade no pedido. Então a função Soma vai somar todos os totais de cada produto em um pedido.
Salve esta consulta com o nome TotalPedido.
Agora vamos testar nossas consultas.
Lembre-se que cadastramos apenas um pedido em nosso banco e seu código é 0 (zero).
Volte a tela inicial clique em Consultas > NomeCliente.
Se você cadastrou o cliente como sugerido, o seu resultado deve ficar como a imagem ao lado.

Feche a janela e volte a tela inicial
Clique em Consultas > TotalPedido e veja o resultado.

Se resolvermos somar os pedidos de cada um dos dois clientes isoladamente teremos os valores expressos acima, na consulta.
Agora temos tudo que precisamos para nosso último formulário. Sua base será construída utilizando o assistente de formulários. Mas depois vamos alterar sua estrutura para:
Adicionar dois campos novos,
Uma caixa de texto que vai conter o nome do cliente que está fazendo o
pedido e
Uma caixa de texto que vai conter o total geral do pedido.
Na tela inicial, clique em Formulários > Assistente de formulário.... Vamos as Etapas
1 – Seleção de campos
Selecione os campos do seu formulário
Selecione a tabela Pedidos e clique no botão >> para que todos os campos passem da lista
Campos disponíveis para a lista Campos no formulário. Clique em Avançar >.
2 – Configurar um subformulário Decida se deseja configurar um subformulário Agora sim vamos adicionar um subformulário, ou seja, um formulário dentro de outro formulário principal.
Marque a opção Adicionar sub-formulário e também a opção Sub-formulário baseado em seleção manual de campos.

A intenção é utilizar a consulta ConsultaPedidos para mostrar os detalhes de cada pedido.
Clique em Avançar >.
A opção Sub-formulário baseado em relação existente só serve para criar um subformulário a partir de uma tabela relacionada com a tabela principal.
Adicionar campos de sub-formulário Selecione os campos do sub-formulário
Selecione a consulta ConsultaPedidos.
Clique no botão >> para passar todos os campos da lista Campos disponíveis para a Campos lista no formulário.
Clique em Avançar >.
4 – Obter campos associados Selecione as associações entre os formulários Esta etapa é parecida com o relacionamento entre tabelas, pois vamos dizer ao subformulário que o campo codigo_pedido tem que ser igual ao campo codigo_pedido do formulário principal, ou seja, quando o formulário principal estiver exibindo o pedido 0 o subformulário também vai mostrar os dados do produto 0.
Selecione o campo codigo_pedido nos dois formulários.

Clique em Avançar >.
Dispor controles
Disponha os controles no seu formulário
Para o formulário principal escolha Em blocos – Rótulos em cima.
Para o subformulário escolha Como planilha de dados.

Clique em Avançar >.
6 – Definir entrada de dados Selecione o modo de entrada de dados
Marque a opção O formulário deve exibir todos os dados.
Clique em Avançar >.
7 – Aplicar estilos
Aplique o estilo do seu formulário Você pode escolher o estilo que mais lhe agradar.
Em Aplicar estilos escolhemos o estilo escuro, como havíamos feito com o primeiro formulário e em Borda do campo escolhemos Visual 3D.
Clique em Avançar >.
Definir nome Defina o nome do formulário
Defina o nome como PedidoComItens.
Marque a Trabalhar opção com formulário.
Finalize clicando em Concluir.
Seu formulário deve estar como na figura abaixo.

O formulário principal exibe os dados da tabela Pedidos e o subformulário exibe os dados da consulta ConsultaPedidos. Como configuramos o subformulário para exibir seus dados de acordo com o código do pedido, todos os produtos contidos ali pertencem ao pedido 0 (zero) que é o pedido exibido no formulário principal.
Cada formulário e subformulário é responsável por uma tabela ou consulta. O que vamos fazer agora é adicionar manualmente mais dois subformulários:
Um que será responsável por armazenar os dados da consulta que retorna o nome dos clientes.
E outro para armazenar os dados da consulta que retorna o total do pedido em destaque.
Feche o formulário e volte para a tela inicial do LibreOffice Base.
Clique em Formulários
Com o botão direito clique no formulário PedidoComItens > Editar.
A tela de edição é semelhante a tela do formulário.
Mas adicionar um novo subformulário para vinculá-lo a consulta NomeCliente.
Clique no botão Navegador de formulários, localizado na parte de baixo ao formulário em edição. A janela do navegador é bem simples de entender. Ela exibe é uma lista de formulários e os componentes que pertencem a cada um. Repare que há:
Um formulário chamado MainForm que é o formulário principal e que contém os dados da tabelaPedidos.

Abaixo dele estão todos os componentes (botões, caixas de texto, etc) que pertencem a este formulário, inclusive o subformulário SubForm com os dados da tabela ConsultaPedidos.
Se clicar duas vezes sobre o ícone do SubForm verá um chamado SubForm_Grid que é a tabela que exibe os produtos que foram adicionados ao pedido.
Vamos adicionar um formulário e vinculá-lo com a consulta NomeCliente.
Clique com o botão direito em MainForm > Novo > Formulário.
Veja que um novo subformulário foi adicionado com o nome Formulário no Navegador de formulários.
Se ainda não clicou em nada digite o novo nome do subformulário como NomeCliente e clique na tecla Enter.
Mas se já clicou em outro lugar da tela e o nome não está selecionado para edição, basta clicar com o botão direito em cima do novo subformulário e clique em Renomear para alterar o nome.
Agora vamos vincular a consulta com o subformulário.
Clique com o botão direito sobre o subformulário NomeCliente > Propriedades.
Abre-se a caixa de dialogo Propriedades do formulário.
Clique na aba Dados
Na lista Tipo conteúdo de selecione Consulta.
Na lista selecione Conteúdo a consulta NomeCliente.

Feche a caixa de dialogo Propriedades do formulário.
Agora vamos adicionar uma caixa de texto para exibir o nome do cliente.
Clique no botão Caixa de texto da barra de ferramenta Controle de formulário e vá para a área de edição do formulário.
Clique com o botão esquerdo e o mantenha pressionado, arrastando para criar um retângulo como o da figura abaixo.
Verifique o navegador de formulários e veja se o novo controle Caixa de texto 1 esta sob o subformulário NomeCliente. Se não estiver, basta clicar, com o mouse, mantendo segurado e arrastar até o formulário NomeCliente, que criamos manualmente.

Continuando:
Clique com o botão direito em Caixa de texto 1 > Propriedades.
Selecione a aba Dados.
Na lista Campo de dados selecione a opção nome.


Adicione outro subformulário:
Clique com o botão direito em MainForm > Novo > Formulário.
Digite o nome TotalPedido.
Clique com o botão direito no subformulário TotalPedido > Propriedades.
Na aba Dados em Tipo de conteúdo selecione Consulta.
O Na lista Conteúdo selecione TotalPedido. Mesmo processo subformulário é
utilizado NomeCliente, para porém, o nesse momento selecionamos uma consulta diferente.
Adicione uma nova caixa de texto e certifique-se que ela está sob o novo subformulário no Navegador de formulários.
Vamos vincular a caixa de texto com o campo da consulta que desejamos.
No navegador de formulários, clique com o botão direito no controle Caixa de texto 1, abaixo do subformulário Total Pedido.
Em seguida clique em Propriedades.
Na aba Dados em Campo de dados selecione a opção SUM(SYSTEM_SUBQUERY.”Total”.


Esse é o campo que soma o total geral do pedido.
Feche o Navegador de formulários.
Salve a edição que acabamos de realizar.
Feche o editor.
Para ver o resultado volte a tela inicial do LibreOffice Base.
Clique em Formulários.
Clique duplo no formulário PedidoComItens. O resultado deve ser semelhante ao da imagem a seguir.

Pronto. Seu controle de estoque está completo. Navegue entre os formulários, tabelas e consultas e verifique se existem mais ferramentas que você pode criar e que sejam úteis para seu banco.