Modelo Gerador - Propriedades e Eventos
O Modelo Gerador contém seções que fornecem uma série de propriedades de dados que serão utilizados no momento da emissão do relatório. É gerado automaticamente ao criar o relatório e representa o corpo do modelo.
Propriedades
Descrição
Indica a descrição que será impressa
na seção modelo gerador.
Comprimento
Permite definir o comprimento do
relatório. Em relatórios gráficos, a medida é em "pixel", nos demais a medida é
em "caractere".
Altura
Permite definir a altura do relatório.
Em relatórios gráficos, a medida é em "pixel", nos demais a medida é em "caractere".
Margem Esquerda
Informa o espaço que se deseja
atribuir à margem esquerda. Caso o relatório seja do tipo "Gráfico", o espaço tem
unidade de medida "pixel", nos demais, a unidade de medida é "caractere".
Qtd. Imagens
Indica a quantidade de impressões
de registros do tipo imagem que serão impressos lado a lado. Exemplo: Formulários
de etiquetas podem conter 1, 2, 3 ou mais etiquetas dispostas lado a lado.
Esp. Entre Imagens
Espaço em branco que será
deixado entre uma imagem e outra. Caso o relatório seja do tipo "Gráfico", o espaço
tem unidade de medida "pixel", nos demais, a unidade de medida é "caractere".
Tela de Ent. para Serviços
Ao executar
um modelo de relatório com serviços habilitados, pode-se configurar na guia
“Saída” a opção de Modo de execução. Para mais informações, acesse: Tela de Ent. para Serviços.
Tamanho Padrão
Permite informar o tipo de papel
que será utilizado. Exemplo: A4, Carta, etc.
Salvar Entrada
Quando está assinalada
como "Verdadeiro", as informações preenchidas na tela de entrada da última geração
deste relatório ficarão gravadas, sugerindo-as automaticamente na próxima impressão.
Orientação
Determina a forma em que o relatório será impresso. Pode ser:
Tipo de Relatório: Este item pode ser assinalada como:
Tít. Antes Cabeçalho
Quando está assinalada como
"Verdadeiro", indica que a seção "Título" será impressa antes da seção "Cabeçalho".
Cor da Fonte
Permite selecionar uma cor
para o texto do controle ativo.
Fonte
Exibe as fontes instaladas no Sistema Operacional
para definir o tipo de letra que será utilizada no relatório.
Tipo do Caractere
Nesta propriedade, é
possível escolher quatro opções para o tipo de caractere que será utilizado no componente
ativo: Herdar: utiliza o mesmo tipo de caractere que foi utilizado no componente
"pai". Normal: a configuração atual não é alterada. Maiúsculo: todos os caracteres
deste componente tornam-se maiúsculos. Minúsculo: todos os caracteres deste componente
tornam-se minúsculos.
Cor
Define a cor de fundo do componente ativo.
Entrada
Abre a tela "Cadastramento de Variáveis
para Entradas do Modelo" em que é possível definir quais os valores serão impressos
no relatório. Para mais informações sobre como cadastrar valores de entrada, acesse
Entrada do Modelo.
Preparar Valores
Faz com que o modelo seja executado
duas vezes, utilizado em casos que existam variáveis para fins de cálculo, que devem
conter alguma totalização do modelo.
Agrupar SQL
Visa tornar mais rápida a execução
de relatórios mestre-detalhe, pois é gerado um código SQL único. Caso estiver marcada
como "Falso", será gerado um código SQL para cada seção detalhe.
Incr. Colunas
Faz com que o controle movimente-se
na coluna. Quanto maior o valor, mais para a direita o controle ficará. A unidade
de medida é em "Caractere".
Incr. Linhas
Faz com que o controle movimente-se
na linha. Quanto maior o valor, mais para baixo o controle ficará. A unidade de
medida é em "Caractere".
Relatório em Branco
Utilizada quando o relatório
não retorna resultados. Se estiver assinalada como "Verdadeiro", o relatório é gerado
em branco. Se assinalada como "Falso", a mensagem "Não Houve Registros a Listar"
é exibida.
Subtítulos nas Páginas
A quantidade de resultados
em uma única seção pode ser maior que uma página. Se estiver assinalada como "Verdadeiro",
o subtítulo é repetido em cada página em que os resultados da seção são exibidos.
Se estiver assinalada como "Falso", o relatório exibirá apenas um subtítulo por
seção, independente da quantidade de páginas geradas.
Salvar Definições
Salva as informações de exportação
no arquivo de extensão ".IMP" gerado, permitindo salvar o relatório em todos os
formatos disponíveis no Gerador
de Relatórios. Se estiver assinalada como "Falso", é possível salvar o relatório
somente no formato com extensão ".IMP".
Inserir Espaço
Faz a inserção de um caractere
"espaço" antes dos valores numéricos alinhados a direita, caso esteja assinalada
como "Verdadeiro".
Parâmetros Exportação
Abre a tela "Parametrização
da Exportação" em que é possível definir a saída dos arquivos texto no momento
de salvar..
Parâmetros WEB
Abre a tela "Parâmetros
WEB" em que é possível fazer o tratamento global da geração de páginas HTML.
Consistir Modelo
Utilizada quando o usuário precisa
salvar um modelo incompleto. Se estiver assinalada como "Falso", o modelo será salvo
sem qualquer tipo de validação de dados e as regras não são compiladas.
Formato de Saída
Abre a tela
"Parametrização de Saída" em que é possível escolher qual o tipo de execução
que será realizado e o tipo de saída do relatório.
Rodapé Tít. Final Página
Se estiver assinalada
como "Verdadeiro", imprime a seção "Rodapé Título" no final da última página do
relatório. Se estiver assinalada como "Falso", esta seção é impressa na última página,
logo após o último registro.
Separadores do idioma
Quando estiver assinalada
como "Verdadeiro", os valores numéricos do modelo utilizam os separadores numéricos
definidos nas
opções do idioma que está ativo no sistema. Se estiver assinalada como "Falso",
os valores numéricos do modelo utilizam os separadores numéricos definidos nas máscaras
dos controles do modelo.
Frente/Verso
Indica que o relatório será
impresso com o recurso "frente-e-verso". É necessário que a impressora tenha este
recurso para que funcione corretamente.
Usar Conf. Regionais
Define se serão
ou não aplicadas as Configurações Regionais na execução do modelo. Por padrão seu
valor é verdadeiro.
Usar valores na forma literal
Ao marcar essa opção como "Verdadeiro", os valores serão passados para o comando SQL na forma literal, ou seja, na forma de texto. Caso se mantenha o valor padrão "Falso" os valores serão passados para o comando SQL na forma de parâmetros. Essa propriedade deverá ser atribuída como "Verdadeiro" sempre que o filtro de entrada do relatório apresentar um grande número de condições.
Eventos
Pré-Seleção
Este evento será chamado
ao iniciar a execução de um modelo (após clicar no botão "OK" na tela de entrada).
Neste evento, os valores informados na tela de entrada podem ser tratados ou alterados.
Este é o único evento em que pode ser alterado o "SELECT" que será montado pelo
gerador de relatórios, pois é executado antes de executar o "SELECT" no banco de
dados e antes de criar as seções que serão executadas. Não é possível listar seções
ou manipular controles do relatório neste ponto, já que estes não foram criados
ainda. Existem algumas funções que podem ser utilizadas para alterar o "SELECT",
entre elas:
- InsClauSqlWhere: insere uma cláusula WHERE no SQL;
- InsClauSQLOrderBy: incluir uma cláusula de ordenação ORDER BY no SQL;
- DeleteFieldSQL: retirar campos do SQL através da cláusula DELETE;
- SubstituiFrom: substitui uma cláusula FROM no SQL).
Definir Alfa AuxSQL;
Definir Alfa AuxRelac;
Definir Alfa AuxSQLHist;
Definir Alfa xDatRef;
Definir Numero EDatRef;
ConverteDataBanco( EDatRef, xDatRef );
AuxRelac = "";
@ -- Relacionamento com o Histórico de Filial ( FIXO ) -- @
@ Não pode ser utilizado o comando MontarSQLHistorico, motivo: transferência de
filial @
AuxSQL = AuxRelac + "(R038HFI.DATALT = (SELECT MAX (DATALT) FROM R038HFI TAB2 WHERE
"
+
"(TAB2.NUMEMP = R038HFI.NUMEMP) AND "
+
"(TAB2.TIPCOL = R038HFI.TIPCOL) AND "
+
"(TAB2.NUMCAD = R038HFI.NUMCAD) AND "
+
"(TAB2.NUMEMP = TAB2.EMPATU) AND "
+
"(TAB2.NUMCAD = TAB2.CADATU) AND "
+
"(TAB2.DATALT <= " + xDatRef + ")))";
InsClauSQLWhere ( "Detalhe_1", AuxSQL );
AuxRelac = " AND ";
@ -- Relacionamento com o Historico de Local ( FIXO )-- @
MontarSqlHistorico( "R038HLO", EDatRef, AuxSQLHist );
AuxSQL = AuxRelac + AuxSQLHist;
InsClauSQLWhere( "Detalhe_1", AuxSQL );
AuxRelac = " AND ";
Seleção
Utilizado para validar a impressão
da seção "Mestre-detalhe". Ele será chamado antes de imprimir a seção detalhe principal.
Será executado para cada registro que retornar da base de dados, consequentemente,
a regra não será executada se não retornar nenhum dado da base.
@ Definir Numero R034FUN.DatAdm Declaracao Criada na Conversao @
Definir Numero xperper; @ Declaracao Criada na Conversao @
Definir Numero xperins; @ Declaracao Criada na Conversao @
Definir Numero EDatRef; @ Declaracao Criada na Conversao @
Definir Cursor Cur_R034CPL;
Definir Data vProExmCpl;
Definir Numero vNumEmp;
Definir Numero vTipCol;
Definir Numero vNumCad;
Se (R034FUN.SitAfa = 7)
Cancel(1);
vNumEmp=R034FUN.NumEmp;
vTipCol=R034FUN.TipCol;
vNumCad=R034FUN.NumCad;
@------------ Busca Dados Complementares ---------@
vProExmCpl=0;
Cur_R034CPL.Sql "SELECT PROEXM FROM R034CPL WHERE NUMEMP=:vNumEmp AND TIPCOL=:vTipCol
AND NumCad=:vNumCad";
Cur_R034CPL.AbrirCursor();
Se (Cur_R034CPL.Achou)
vProExmCpl=Cur_R034CPL.ProExm;
Cur_R034CPL.FecharCursor();
RetornaAnoData(DatHoj,anoatu );
RetornaAnoData(R034FUN.DatNas,anonas);
idade = anoatu - anonas;
RetornaMesData(DatHoj,mesatu);
RetornaMesData(R034FUN.DatNas,mesnas);
Se (mesnas > mesatu)
idade = idade - 1;
xperins = R034FUN.PerIns;
xperper = R034FUN.PerPer;
Se (ETipExa = 6)
Inicio
Se ((xperins = 0) e (xperper = 0))
Cancel(2);
Fim;
Se (ETipExa = 12)
Inicio
Se ((idade >= 18) e (idade <= 45))
Cancel(2);
Fim;
Se ((ETipExa = 12) ou (TipExa = 24))
Inicio
Se ((xperins > 0) e (xperper > 0))
Cancel(2);
Fim;
Inicialização
Será chamado ao iniciar
a execução de um modelo (após clicar no botão OK na tela de entrada) e antes do
evento "Pré-Seleção". Por ser um evento executado uma única vez, é recomendado que
se utilize para inicializar variáveis que serão utilizadas na execução do modelo.
Finalização
É a última regra a ser
executada pelo modelo. Por isso, recomenda-se que seja utilizada para liberar estruturas
alocadas e fechar transações abertas.
Funções Globais
Utilizada para definir
funções globais que poderão ser chamadas a qualquer momento. Nas regras dos relatórios,
todas as funções e variáveis são globais, até mesmo as variáveis que são passadas
em parâmetros em funções que estarão visíveis em qualquer outra regra no modelo.
As funções globais podem ser utilizadas várias vezes, sem a necessidade de redeclará-las
ou refazê-las, diminuindo e melhorando a manutenção do modelo. Ao fazer declarações
de variáveis globais deve-se lembrar de redeclará-las no evento "Inicialização",
para que seja feita a sua definição e atribuição de valor corretamente durante a
execução. O evento "Funções Globais" não é executado, apenas as funções declaradas
são quando chamadas, sendo assim as variáveis globais ali definidas não serão inicializadas
em tempo de execução. Com isso caso a variável seja acessada por outro evento esta
não possuirá valor, ou estará inacessível. O exemplo abaixo se refere a duas funções
globais que foram criadas para retornar o nome de uma
cidade e estado a partir do código e o nome do bairro a partir do código da cidade
e do código do bairro.
/* FUNCAO QUE RETORNA NOME DA CIDADE E ESTADO */
Definir Funcao RetornaNomCid (numero xcodcid);
Funcao RetornaNomCid (numero xcodcid);
{
Definir Cursor CCid;
Definir Alfa xnomcid;
Definir Alfa xestcid;
CCid.Sql "SELECT NOMCID, ESTCID FROM R074CID WHERE CODCID = :xcodcid";
CCid.AbrirCursor();
Se (CCid.Achou)
{
xnomcid = CCid.NomCid;
xestcid = CCid.EstCid;
}
Senao
{
xnomcid = "";
xestcid = "";
}
CCid.FecharCursor();
}
/* FUNCAO QUE RETORNA O NOME DO BAIRRO */
Definir Funcao RetornaNomBai(numero xcodcid, numero xcodbai);
Funcao RetornaNomBai (numero xcodcid, numero xcodbai);
{
Definir Cursor CBai;
Definir Alfa xnombai;
CBai.Sql "SELECT NOMBAI, CEPBAI FROM R074BAI WHERE CODCID = :xcodcid AND \
CODBAI = :xcodbai";
CBai.AbrirCursor();
Se (CBai.Achou)
{
xnombai = CBai.NOMBAI;
xcepbai = CBai.CepBai;
}
Senao
{
xnombai = "";
xcepbai = 0;
}
CBai.FecharCursor();
}
Imprimir Página
É executado antes de iniciar uma nova página, na qual valores
poderão ser atribuídos e serão utilizados durante a impressão desta na impressora.
Exemplo: alterar bandeja de saída. Para alterar a bandeja onde será impressa
determinada página, é necessário definir na regra a variável
vBandeja do tipo "Numero" e atribuir à ela os valores desejados:
1 | Bandeja padrão ou bandeja superior. |
2 | Bandeja Inferior. |
3 | Bandeja de papel intermediária. |
4 | Bandeja manual de papel. |
5 | Bandeja automática de envelope. |
6 | Bandeja manual de envelope. |
7 | Seleciona automaticamente a bandeja. |
8 | Bandeja com trator de papel. |
9 | Bandeja com menor formato de papel. |
10 | Bandeja com maior formato de papel. |
11 | Bandeja com maior capacidade de papel. |
14 | Bandeja cassete. |
15 | Bandeja com formato necessário. |
Esta tabela foi transcrita a partir do conteúdo disponibilizado na Microsoft Developer Network (tabela nº 6). Conforme aMSDN, o valor a ser inserido pode ser um destes na tabela, ou um valor específico da impressora, neste caso um valor maior que 100.
Após executar esta regra, o gerador verifica se existe uma variável com o nome vBandeja e utiliza o valor atribuído à ela para determinar em qual bandeja deve ser impressa a página atual.
Definir Numero vBandeja;
Definir Numero xResto;
RestoDivisao(NumPag, 2, xResto);
Se ( xResto = 1 ) {
vbandeja = 1;
}
Senao {
vbandeja = 2;
}
A regra acima determina que cada página será impressa em uma bandeja diferente.