Coleta de dados com formulário criado no VsScripter

Objetivo

O objetivo deste documento é mostrar ao usuário como criar um formulário, por meio do VsScripter, para coleta de dados após a inclusão de um registro no banco de dados.

Como será feito

Neste exemplo, o formulário será executado após a inclusão de um registro na tabela Tomadores, no menu “Cadastros Gerais” -> “Tomadores”. 

Os dados serão gravados em uma tabela criada pelo usuário, por meio do Person, e deverá possuir a estrutura abaixo:

Campos:

  • INSCRICAO - campo texto com 14 posições;

  • PERGUNTA1 - campo texto com 70 posições;

  • PERGUNTA3 - campo Lista de Opções, com opções: (1a Opção, 2a Opção, 3a Opção, 4a Opção);

  • PERGUNTA4 - campo Sim/Não; e

  • PERGUNTA5 - campo data/hora;

Caso o leitor ache necessário, poderá acessar a documentação do Person para dirimir dúvidas na criação da tabela de exemplo.

Baseado na documentação do Person acima e para finalizar o exemplo aqui proposto, é solicitado do usuário que crie a tabela U_COLETADADOS conforme estrutura apresentada.

Para iniciar o desenvolvimento do exemplo, o usuário deve abrir o “Cadastro de Tomadores”. Nesse cadastro, acessar o menu “Evento via Script” e em seguida o submenu “Antes de Salvar”, conforme figura abaixo:

O evento escolhido para o desenvolvimento do exemplo é o “Antes de Salvar”, pois este permitirá diferenciar se o registro está sendo inserido ou atualizado. A ação tomada ocorrerá apenas se for um evento de inclusão de dados. Caso seja atualização, o VsScripter não atuará. O editor do VsScripter será mostrado, confirme figura abaixo:

A “unit” principal do VsScripter é o uPrinc. Esta unidade não suporta componentes visuais. Assim, será necessário criar um formulário, onde os campos serão colocados. Para criar um novo formulário, escolher o menu “File” e, em seguida, escolher o menu “New Form”.

O novo formulário será criado e ficará na próxima aba, a direita da “unit” uPrinc, com o nome Unit1, conforme abaixo:

A esquerda do formulário está o “Object Inspector” que possui as propriedades do objeto em foco. A propriedade “Name” deve ter seu valor alterado para “frmColetaDados”.

Clicar no botão que possui um ícone que representa um disquete para salvar o formulário, ou executar o atalho “CTRL+S”. O nome da “unit” deve ser uColetaDados.

A direita do formulário frmColetaDados, estão todos os componentes visuais “Tool Palette” que podem ser colocados no formulário e usados no VsScripters.

Para este exemplo, serão utilizados os componentes abaixo: 

Componente

Quantidade

TLabel (rótulos com os nomes dos campos)

4

TEdit (entrada de texto, número e símbolos)

1

TComboBox (escolha de opções pré-definidas)

2

TVsDateTime (informar data e hora, atuais ou não)

1

TButton (botão programável)

1

O formulário pode ter esses itens na posição que o usuário desejar. Para este exercício didático, a disposição dos componentes visuais no formulário ficaram conforme figura abaixo:

Na sequência respectiva, os campos TEdit1, TComboBox1, TComboBox2 e VsDateTime1, TButton1 devem ser renomeados para: campo1; campo2; campo3; campo4; btnGravar.

Para tanto, bastará mudar a propriedade “Name” de cada componente visual para os valores respectivos sugeridos. A propriedade “Name” pode ser localizada colocando o componente visual em foco. A mesma será mostrada na aba do “Object Inspector”, conforme foi mostrado no exemplo acima para mudança do nome do formulário.

Da mesma forma, respectivamente, os rótulos (TLabel1 a TLabel4) devem ter sua propriedade “Caption” alterada para: Campo 1 - Texto(70); Campo 2 - Opções; Campo 3 - Sim/Não; Campo 4 - Data/Hora.

A propriedade “caption” do btnGravar também deve ser mudada para “&Gravar”, a fim de facilitar o entendimento do operador, sobre o que será executado no momento do acionamento do botão. O evento ainda será programado. Por enquanto, apenas o rótulo(título) do botão será mudado.

Com a tecla F12, é possível mudar entre Formulário (componentes visuais) e código do script na “unit”.

Ao mudar para o código do script, deve ser mostrado algo próximo ou idêntico ao código abaixo:

{$FORM TfrmColetaDados, uColetaDados.sfm} uses   Classes, Graphics, Controls, Forms, Dialogs, VsEditAl, VsEdRigh, VsDate, VsDateTime, StdCtrls, VsCombo;

Para a manipulação dos dados, será criada uma variável que será do tipo TClientDataSet.

O código abaixo deve ser inserido logo após as “units” declaradas em “uses”.

var    Cds : TClientDataSet;

 

Alterar para a aba uPrinc, onde será criado o formulário “form”, o qual receberá todos os elementos de “frmColetaDados”.

Abaixo das declarações das “units” em uso, no “uses”, digitar o código abaixo:

var                          form : frmColetaDados;

Assim, o objeto “form” será declarado e o mesmo será do tipo “frmColetaDados”, recebendo todos os elementos definidos nele.

O nome do formulário padrão onde o “Cadastro de Tomador” ocorre é “FFormPadraoRHTOMADOR”. Para saber como descobrir o nome dos formulários utilizados pelos sistemas, utilizar a documentação  

Existe uma forma de verificar se o formulário está em modo de inclusão de registro (registro novo). Para tanto, é utilizada a variável “incluindo”, que possuirá um valor do tipo “True” ou “False”.

Caso o valor seja “True”, o formulário estará em modo de inclusão de novo registro. A seguir, será utilizada a condicional “if” para testar se o formulário está em modo de inclusão de dados ou não, conforme código abaixo:

No “script” acima, se o “Cadastro de Tomadores” estiver em modo de inclusão de dados, ou seja, se um novo tomador estiver sendo incluído, um formulário contendo os campos personalizados será mostrado para que o operador do sistema informe esses dados e, logo em seguida, os grave na tabela personalizada “U_COLETADADOS”.

O próximo passo é a criação do “script” do botão de gravação de dados na aba “frmColetaDados”.

Para tanto, será necessário mudar para a aba em questão e colocar o botão “Gravar” em foco, clicando no mesmo. A esquerda, na área do “Object Inspector”, escolher a aba “Events” e clicar duas vezes no evento chamado “onClick”.

Será criada a “procedure” abaixo:

Entre as instruções “begin” e “end;”, será necessário digitar/colar o “script” abaixo:

Clicar no ícone que representa dois disquetes pretos para salvar todas as alterações, ou utilizar o atalho “CTRL+SHIFT+S”.

Para identificar nomes de campos e estrutura das tabelas dos sistemas, siga os passos na documentação  

Testando a inclusão de dados por meio do VsScripter

Fechar o editor do “VsScripter”. Caso seja solicitado a salvar alguma alteração, o usuário deverá proceder com o salvamento.

No “Cadastro de Tomadores”, adicionar um tomador fictício para execução dos testes. Quando o botão de Salvar for clicado ou o atalho “CTRL+S” for acionado, será aberto o formulário “frmColetaDados” contendo os campos relativos a tabela “U_COLETADADOS” do presente exemplo.

Preencher os dados e clicar em Gravar. O formulário automaticamente será fechado após a gravação dos dados e a mensagem abaixo será mostrada:

 

Vale ressaltar que o exemplo aqui mostrado serve para qualquer outro cadastro dos sistemas.

Para verificar o que foi gravado, o usuário poderá fazer uso normal do Folha e acessar a tabela “U_COLETADADOS”, por meio do menu “Tabelas Personalizadas” -> “Tabela para coleta de dados Antes de Salvar”, conforme abaixo:

Será aberto o formulário de consulta a seguir:

Para facilitar ainda mais o entendimento, foi produzido um vídeo sobre este conteúdo. Para acessá-lo, utilize o link abaixo:

https://vimeo.com/636458547/adba41272e