OBS: Este artigo mostra a criação de um recibo de quitação, porém a partir de 21/04/2022 este artigo fica desatualizado devido ao fato de que a query para geração do relatório foi modificada devido a possibilidade de impressão de quitação parcial.
Para visualizar a diferença verifique o curso de criação de relatório utilizando o Task Report no tópico de recibo de quitação.
Neste artigo irei abordar os passos utilizados para realizar a manutenção em um relatório personalizado. alterando a estrutura fixa de tabelas para a utilização de comandos SQL personalizados.
Neste Caso em específico iremos alterar a estrutura do recibo de quitação. para deixa-lo conforme protótipo enviado pelo cliente.
Realizar Backup
Primeiro passo, sempre que for realizar alterações grandes como essa, é fazer a exportação do arquivo, para usar como backup e não alterar o arquivo original em uso pelo cliente, até que os testes tenham sido feitos, e o cliente tenha aprovado. Para realizar Backup, é preciso apenas exporta-lo para arquivo, e importa-lo na base a qual desenvolverá o relatório, ou caso desenvolva na mesma base, basta salvar como um novo relatório, conforme imagem a baixo:
Acione o Gerador de relatório na base que deseja obter o relatório do cliente.
Edite o desenho do relatório desejado
Acione a opção de “salvar como..” e salve no local da árvore de relatórios desejado
Automaticamente ele mudará a edição para o novo arquivo que você salvou e poderá realizar as alterações desejadas sem problemas.
Para salvar no computador e transferir para outra base, selecione a opção “Salvar para Arquivo..“
Para importar na nova base, basta criar um novo relatório em branco, acionando o botão direito e criando um novo relatório.
Após criado o novo relatório, basta carregar o arquivo exportado anteriormente.
Conferir estrutura do relatório
Neste ponto acionando a opção de dados e observando a distribuição dos campos no relatório, e a demanda para adição dos novos campos, já se deve imaginar o que se deseja carregar para o novo relatório, neste caso , desejamos, obter o número do documento referente a quitação realizada, e a hora em que a quitação foi realizada.
Os passos para criar um novo relatório, e realizar essa alteração são basicamente os mesmos, considerando que ao criar um novo relatório importamos o modelo padrão, disponibilizado no repositório, pois nele já contem, cabeçalho, e a estrutura para substituir os comandos. feito isso, seguiremos normalmente para o próximo passo, que é criar o comando, com os campos já existentes e os novos, para auxiliar neste processo, é possível, visualizar o SQL criado pelo gerador de relatório, basta aciona-lo conforme demostrado na imagem:
Criar Tabela personalizada
Precisamos criar um tabela física com todos os dados necessários para distribuir os novos campos. neste caso como não utilizaremos mais essa estrutura , teremos de apaga-la, basta clicar com botão direito dentro da tabela, e apagar:
Feito isso iremos criar a nossa tabela personalizada, e conferir se os valores resultantes são o que esperamos, neste caso obtive os números dos documentos da quitação e a hora que ela foi feita, e mantive os campos que já eram utilizados, conforme mostra resultado abaixo.
Construindo novo relatório.
Criando novo conjunto de dados
Com a tabela criada, podemos obtê-la no conjunto de dados, do relatório. lembrando, que se estiver com gerador aberto, deve fecha-lo e abrir novamente para carregar está nova tabela “QueryRecibQuit“, Obser que só será possível criar o conjunto de dados, se estiver na primeira guia “Dados” nas demais não aparecerá a opção.
Selecionar tabela e campos
Iremos selecionar a tabela que criamos localizando e dando um duplo click nela.
Em seguida vamos selecionar os campos, neste caso como queremos todos, é só marcar a opção todos, mais o método de seleção também é com duplo click.
Para testar se deu certo, basta acionar a lupa para visualizar os dados, se aparecerem podemos prosseguir. se ocorre algum erro é necessário fazer uma revisão, da tabela criada, pode ser que ao ser criado os campos ficaram com uma codificação não aceita, deve-se ter cuidado ao utilizar o comando em exemplo, onde é criado uma tabela direto com a consulta, por segurança crie a tabela, e realize o insert posteriormente, ou trate os campos para serem gravados na codificação latin1, conforme fiz na coluna de número de documento, “AS CHAR CHARACTER SET latin1”, depende de cada caso avaliar qual será a maior complexidade.
Criar a tabela em tempo de execução
Depois de termos criado a tabela física no banco, e obtido sua fonte, vamos colocar o código para que ela seja criada em tempo de execução sempre que o relatório for impresso, pegando como parâmetro o código do registro, que estamos imprimindo, pois até agora estamos trabalhando com um valor fixo. Neste caso vamos utilizar o mesmo comando que criamos a tabela, só vamos adequá-lo a linguem correta, para leitura do relatório.
Para isso vamos na guia de calculo e localizar o evento “onInitializeParameter“, nele vamos fazer as modificações, observe que existe um código, nele, que é referente a estrutura antiga, se for um relatório novo, ele estará branco como os outros, basta clicar com botão direito e clicar em novo, que irá abrir a tela abaixo.
Observamos ainda que neste caso como se trata de um modelo de ficha, nós temos o código direto do registro retornado pela função “PegarInformaçãoAdicional“, ou seja, só vamos imprimir o registro referente a uma quitação, diretamente do formulário , se a impressão fosse uma lista de várias quitações, teríamos de utilizar uma tabela intermediária, “subblocoimpressaotask“ que armazenada o código de todos os registros. cada caso é específico deve-se consultar responsáveis para avaliar qual método utilizado, ou então, realizar um teste básico de impressão do relatório ,se gravar registro nesta tabela poderá ser utilizado, é possível ainda fazer um teste direto no task, colocando uma mensagem para exibir o valor retornado para avaliar se é o código do bloco ou do registro.
Vamos colocar nosso comando, e testa-lo clicando em visualizar a impressão, em ambiente de teste nosso código ficará da seguinte maneira:
Algumas considerações importantes são necessárias por exemplo:
Nunca deixe a tabela como física em produção, após os teste volte a String para “TEMPORARY“ isso evitará erro, ao duas pessoas imprimirem o relatório
Nunca se esqueça de comentar a linha do CodigoBloco que está com valor fixo, pois em teste ele subsistiu o que veio da função, mais em produção não pode substituir
Abaixo o Código que pode ser copiado para testes.
Uma dica para formatar o código SQL no formato assim mais facilmente, pode ser vista no GIF abaixo, utilizando Comando Alt + Tab pressionados juntos, e selecionando a coluna na vertical, e utilizando macro para formatar o final de cada linha, é necessário utilizar o Notepad++ para esse recurso.
Devemos também apagar a tabela após a impressão no seguinte evento:
Ajustando o desenho do relatório para colocar os campos que desejamos. já podemos imprimir e testar
Dados carregados corretamente, podemos seguir para os últimos passos, salvar o relatório e identificar em produção e pedir o cliente para testar
os últimos passos, são os vistos no inicio do artigo,
Remover os dados de teste do relatório, conforme dito anteriormente.
Salvar o relatório (lembre-se de salva-lo com frequência durante o desenvolvimento, pois se houver algum problema como uma oscilação na rede você perderá todo trabalho feito.
Exportar para arquivo.
Importar para arquivo na máquina do cliente.
identifica-lo no gerenciador de consulta. e imprimir uma quitação de teste.
Identificando relatório
Quando relatório é novo ele precisa ser identificado para que possa ser vinculado ao formulário.
Definindo acesso ao relatório
Vinculando o relatório no formulário pelo gerenciamento.
Ultimo teste, imprimindo direto pelo formulário
O resultado é o mesmo que vimos ao visualizar impressão, mais é importante fazer este teste, para não passar questões simples de serem ajustadas. ambiente de teste pode ser diferente.