Giter VIP home page Giter VIP logo

delphi-util-forms's Introduction

Informações sobre o formulário Gerador de Relatório


Compilado e Testado em:

  • Borland Delphi Studio 2006;
  • Embarcadero Delphi XE8.

Conexão de Banco de Dados

O formulário trabalha com conexão MySQL utilizando componentes DBXpress.

Componentes utilizados:

  • TSQLConnection
  • TSQLDataSet
  • TDataSetProvider
  • TClientDataSet

Como incluir o formulário em seu projeto

Adicione o "UfrmGeradorDeRelatorio.pas" em seu projeto e ele acrescentará também o ".dfm".
Na cláusula "uses" da sua unit acrescente a unit "UfrmGeradorDeRelatorio".

Como inicializar o formulário e deixá-lo pronto para uso

Ao menos uma chamada de configuração é indispensável para utilização do form. Esta chamada faz a conexão do formulário com o banco de dados.
É necessário indicar ao formulário como se conectar com o banco de dados, passando o nome do driver, o nome do host, o nome da base de dados, usuário e senha.

frmGeradorDeRelatorios.ConexaoBD('MySQL','dataserver','nome_do_banco_de_dados','usuario','senha');


Modelos de formulários baseados em tags

O gerador de relatórios precisa de um modelo de relatório pronto e salvo em uma pasta para que possa abrí-lo e gerar o relatório final.
O gerador se baseia no modelo de substituição de tags encontradas no documento; realizando assim uma busca de uma tag no documento modelo e substituindo-a pelo conteúdo de um campo desejado.

Formato das TAGs

As tags nos documentos modelos devem estar no formato <tag>

Chamada do procedimento para impressão

A chamada do procedimento para gerar o relatório se dá pelos seguintes procedimentos:

Chamada 1

  • frmGeradorDeRelatorios.Relatorio(modelo,relatorio,titulorelatorio,sql);

Os parâmetros são:

  • modelo: indica a localização e nome do arquivo modelo a ser utilizado. ex.: "c:\modelos\envelope.doc"
  • relatorio: indica a localização e nome do arquivo a ser criado. ex.: "c:\relatorios\envelope.doc"
  • titulorelatorio: indica um nome para o relatório. Somente se o modelo possuir a tag <titulorelatorio> este parâmetro irá substituir a tag, caso contrário este parâmetro será ignorado.
  • sql: este parâmetro deve conter a consulta SQL que retornará os dados desejados para o relatório. ex.: "select nome, tel, endereco from funcionario where aniversariante_do_mes(id_funcionario)"

Obs.: Para esta chamada, o nome dos campos retornados pela consulta SQL devem ser os mesmos das tags do modelo.
Ex.:
tags do documento modelo ( <nome>, <tel>, <endereco> )
campos retornados pela consulta ( nome, tel, endereco )

Chamada 2

  • frmGeradorDeRelatorios.Relatorio(modelo,relatorio,titulorelatorio,sql,tags);

Os parâmetros são:

  • modelo: indica a localização e nome do arquivo modelo a ser utilizado. ex.: "c:\modelos\envelope.doc"
  • relatorio: indica a localização e nome do arquivo a ser criado. ex.: "c:\relatorios\envelope.doc"
  • titulorelatorio: indica um nome para o relatório. Somente se o modelo possuir a tag <titulorelatorio> este parâmetro irá substituir a tag, caso contrário este parâmetro será ignorado.
  • sql: este parâmetro deve conter a consulta SQL que retornará os dados desejados para o relatório. ex.: "select nome, tel, endereco from funcionario where aniversariante_do_mes(id_funcionario)"
  • tags: este parâmetro deve ser um TStringList contendo uma lista das tags que devem ser procuradas no documento modelo. ex.: [<tag1>, <tag2>, <tag3>]

Obs.: Para esta chamada, o nome dos campos retornados pela consulta SQL não precisam ser os mesmos das tags do modelo, porém precisam ser a mesma quantidade. Se a lista de tags contiver 3 tags, a consulta SQL deve retornar 3 campos, sendo que o primeiro campo substituirá a primeira tag e assim sucessivamente.
Ex.:
tags do documento modelo ( <tag1>, <tag2>, <tag3> )
campos retornados pela consulta ( nome, tel, endereco )

Chamada 3

  • frmGeradorDeRelatorios.Relatorio(modelo,relatorio,titulorelatorio,sql,indice_tabela);

Os parâmetros são:

  • modelo: indica a localização e nome do arquivo modelo a ser utilizado. ex.: "c:\modelos\envelope.doc"
  • relatorio: indica a localização e nome do arquivo a ser criado. ex.: "c:\relatorios\envelope.doc"
  • titulorelatorio: indica um nome para o relatório. Somente se o modelo possuir a tag <titulorelatorio> este parâmetro irá substituir a tag, caso contrário este parâmetro será ignorado.
  • sql: este parâmetro deve conter a consulta SQL que retornará os dados desejados para o relatório. ex.: "select nome, tel, endereco from funcionario where aniversariante_do_mes(id_funcionario)"
  • indice_tabela: indica qual tabela do modelo deverá ser usada. ex.: Caso o modelo possua 3 tabelas e a segunda deva ser utilizada, basta passar o número 2 como parâmetro.

Obs.: Esta chamada é utilizada para preencher uma tabela vazia que não contenha tags; basta apenas que a quantidade de campos retornada pela consulta seja igual à quantidade de colunas da tabela indicada.
Ex.:
campos retornados pela consulta ( nome, tel, endereco )
A tabela indicada deve estar vazia, possuir apenas 1 linha e 3 colunas.



Chamada 4

  • frmGeradorDeRelatorios.Relatorio(modelo,relatorio,titulorelatorio,sql,indice_tabela,tags);

Os parâmetros são:

  • modelo: indica a localização e nome do arquivo modelo a ser utilizado. ex.: "c:\modelos\envelope.doc"
  • relatorio: indica a localização e nome do arquivo a ser criado. ex.: "c:\relatorios\envelope.doc"
  • titulorelatorio: indica um nome para o relatório. Somente se o modelo possuir a tag <titulorelatorio> este parâmetro irá substituir a tag, caso contrário este parâmetro será ignorado.
  • sql: este parâmetro deve conter a consulta SQL que retornará os dados desejados para o relatório. ex.: "select nome, tel, endereco from funcionario where aniversariante_do_mes(id_funcionario)"
  • indice_tabela: indica qual tabela do modelo deverá ser usada. ex.: Caso o modelo possua 3 tabelas e a segunda deva ser utilizada, basta passar o número 2 como parâmetro.
  • tags: este parâmetro deve ser um TStringList contendo uma lista das tags que devem ser procuradas no documento modelo. ex.: [<tag1>, <tag2>, <tag3>]

Obs.: Esta chamada é utilizada para preencher uma tabela que contenha tags; a quantidade de campos retornada pela consulta não precisa ser a mesma quantidade de colunas da tabela indicada. Esta chamada é indicada para situações onde uma coluna deva conter mais de uma tag.
Ex.:
tags do documento modelo ( <tag1>, <tag2>, <tag3> )
campos retornados pela consulta ( nome, tel, endereco )
A tabela indicada poderia conter, por exemplo, uma tabela com duas colunas, sendo que na primeira constaria o nome do funcionário e na segunda o telefone e endereço.

<tag1><tag2>
<tag3>


Tipos de relatórios que podem ser gerados

O gerador de relatórios está preparado para gerar 4 tipos de relatórios, ou seja, relatórios com estruturas diferentes... vamos à elas:

Modelo 1 - ver acima *Chamadas 1 e 2

Seria um relatório, de uma ou mais páginas, que contém as tags a serem substituídas pelas informações de um único registro.
Caso tenham mais registros a serem impressos, o gerador adiciona uma quebra de página, e vai "repetindo" o conteúdo do modelo com as informações dos próximos registros.

Ex.: Ficha Cadastral de um ou mais funcionários de uma empresa.

Modelo 2 - ver acima *Chamada 3

Este modelo realiza o preenchimento de uma tabela vazia; bastando que exista uma tabela, de apenas uma linha, e a quantidade de colunas e de campos da consulta sejam a mesma.
O gerador irá preencher a primeira linha da tabela e adicionar linhas à tabela na mesma quantidade de registros retornados pela consulta.

Ex.: Relação de funcionários de uma empresa, contendo nome, telefone e endereço.
Neste exemplo o modelo de relatório precisa ter uma tabela vazia de 1 linha e 3 colunas.



Modelo 3 - ver acima *Chamada 4

Este modelo realiza o preenchimento de uma tabela com tags, onde a tabela deve conter apenas 1 linha com as tags e a quantidade de colunas não precisa corresponder à quantidade de campos retornados pela consulta.
O gerador irá substituir as tags da linha, com os respectivos valores dos campos, e adicionar linhas à tabela na mesma quantidade de registros retornados pela consulta.

Ex.: Relação de funcionários de uma empresa, contendo nome, telefone e endereço.
Neste exemplo o modelo de relatório pode ter, por exemplo, uma tabela de 1 linha e 2 colunas com as tags a serem substituídas.

<tag1><tag2>
<tag3>


FAQ


1. Por que o formulário Gerador de Relatório possui seu próprio componente TSQLConnection?
R. A ideia do formulário possuir sua própria conexão é dar mais liberdade ao form evitando erros de acesso ao banco.
Se o usuário logado no seu sistema não possui permissão de 'select' em uma tabela da qual ele irá imprimir um relatório, o form também não teria permissão de leitura e causaria erro de acesso ao banco.
O ideal é criar um usuário em seu banco, exclusivo para este form e dar permissão de leitura em todas as tabelas do banco; ao inicializar o formulário, passe este usuário e senha como parâmetros.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.