Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!

REPORT

Propósito

Formatar e exibir relatórios no dispositivo corrente.

Sintaxe

REPORT [NOME=<nome>]

[ <relatorio>

ENDREPORT ]

Argumentos

NOME = <nome>     determina que a definição do relatório encontra-se em um arquivo em disco de nome igual a <nome>.

<relatorio>         representa um bloco de instruções de definição de relatório.

ENDREPORT         determina o fim da definição de um relatório.

Utilização

Para formatar e imprimir relatórios utilizando uma meta-linguagem de definição de relatórios. Esta linguagem é composta de diversos elementos que serão explicados a seguir:

Instrução de cabeçalho: Utilizada para imprimir o cabeçalho no topo de cada página. Podem ser utilizadas até 9 níveis de cabeçalho. Tem a seguinte Sintaxe

C[<nivel>],<mens>,<col>[,ESPACO A|D [<num1>]]

Instrução de detalhe: Utilizada para imprimir mensagens no relatório. Podem ser utilizadas até 19 níveis de detalhe. Tem a seguinte Sintaxe

D[<nivel>],<mens>,<col>[,ESPACO A|D [<num1>]]

[,PULO A|D[,E Z|<num2>]

Instrução de grupo: Utilizada para imprimir mensagens sempre que ocorrer uma quebra de grupo. Podem ser definidos até 19 níveis de quebra de grupo. Tem a seguinte Sintaxe

G[<nivel>],<mens>,<col>[,ESPACO A|D [<num1>]]

[,PULO A|D[,E Z|<num2>]

Instrução de totalização: Utilizada para imprimir mensagens após as quebras de grupo. Podem ser utilizadas até 9 níveis de totalização.

Para cada nível, pode ser associada uma instrução de totalização, bastando para isso utilizar o mesmo número de nível. Este tipo de instrução também é utilizada para exibir estatísticas das quebras ou de todo o relatório. Tem a seguinte Sintaxe

T[F|<nivel>],<mens>,<col>[,ESPACO A|D [<col>]]]

[,PULO A|D[,E Z|<num2>]

[,SOMA|MEDIA|FREQUENCIA]

Instrução de edição: Utilizada para mascarar a saída das mensagens impressas nas instruções de detalhe, grupo ou totalização. Podem ser usadas até de 0 a 9 instruções de edição. Tem a seguinte Sintaxe

E[<nivel>],<mascara>

Instrução de ordenação: Utilizada para ordenar a exibição do relatório. Podem ser definidos de 0 a 9 níveis de ordenação. A ordenação da exibição é feita segundo o seguinte critério: o nível de maior valor e o item majoritário para ordenação, por isso é a chave principal da ordenação, os itens de níveis menores são itens de quebra da ordenação. Tem a seguinte Sintaxe

O[<nivel>,<item>[,A|D]

Instrução de função : Utilizada para invocar funções do usuário em um relatório. Podem ser definidos 10 níveis de funções que devem retornar valor numérico ou caractere. Argumentos passados para funções em um procedimento REPORT, devem, obrigatoriamente, ser itens de arquivos. Caso contrário ocorrerá erro de execução.

Para executar a função declarada basta se referir ao seu identificador em uma das instruções de impressão descritas anteriormente. Funções numéricas retornam um número de 21 algarismos, preenchido de zeros a direita, bastando que seja usada uma instrução de edição.

15!<nivel>,<nome>(<argumentos>),[C|N]

Onde :

<nivel>        Representa o nível da instrução, e utilizado para relacionar as instruções.

<mens>     Representa a informação que será exibida.

Pode ser:

Uma cadeia de caracteres.

Uma das palavras chaves PAGINA, DATA ou HORA, indicando respectivamente: contador automático de páginas, a data e a hora do sistema.

Um item do banco de dados.

<col>             Representa o número da coluna para impressão da mensagem. Superposições de colunas, podem causar resultados não esperados.

<nome>             Representa o nome da função do usuário.

<argumentos>         Representa a lista de argumentos passados para a função.

C | N             Representa o tipo da função do usuário. Caso se omita será assumido o tipo C (caractere).

ESPACO A|D         Determina o número de linhas que serão saltadas antes ou depois da impressão. As cláusulas A e D, indicam, respectivamente, antes e depois. <num1> determina o número de linhas saltadas. Caso se omita, somente uma linha é saltada.

PULO A|D         Determina um salto para a próxima página antes ou depois da impressão da mensagem. As cláusulas A e D indicam respectivamente antes e depois.

E Z<num2>         Determina a máscara de edição para a mensagem. A cláusula Z determina que serão suprimidos os zeros a esquerda de valores numéricos. <num2> corresponde ao nível da instrução de edição. Somente uma instrução de edição pode ser usada para cada instrução detalhe.

SOMA             Determina que será impresso o somatório dos valores do item de quebra.

MEDIA             Determina que será impressa a média aritmética do item de quebra.

FREQUENCIA        Determina que será impressa a quantidade de valores dos itens impressos a cada quebra.

Para as opções SOMA,MEDIA e FREQUENCIA, o valor acumulado é zerado após a impressão. Se uma instrução de totalização for especificada com a opção F, esta será impressa após a última linha detalhe do relatório.

O comando REPORT só imprime registros previamente selecionados pelo comando QUERY.

As inconsistências deste comando só são verificadas em tempo de execução, por isso recomenda-se utilizar um arquivo contendo o procedimento REPORT, para que não seja necessário recompilar o programa a cada alteração do relatório.

Exemplos

O exemplo a seguir mostra-nos como utilizar este comando para imprimir um relatório na impressora padrão.

PROG

DATABASE  bdemp  33 a 2

USE tab_nfis

INPUT "Codigo do cliente " TO cod_cli

SET PRINT ON

QUERY cli_nfis = cod_cli

REPORT

C1,"Relatorio de notas fiscais",1

C2,"PAGINA =",1

C2,PAGINA,10

O1,tot_nfis

D1,"Cod. Nota =",1

D1,id0_nfis,13

D2,"Cliente =",1

D2,nom_clie,11

D3,"Total da nota =",1

D3,tot_nfis,17

TF,"QUANTIDADE DE NOTAS =",1,PULO A

TF,tot_nfis,23,SOMA

T1,HORA,50

ENDREPORT

SET PRINT OFF

O exemplo a seguir mostra-nos a impressão do mesmo relatório do exemplo anterior, a única diferença é que neste exemplo a definição do relatório encontra-se no arquivo relator.r.

PROG

DATABASE bdemp1 33 a 2

USE tab_nfis

INPUT "Codigo do cliente " TO cod_cli

SET PRINT ON

QUERY cli_nfis = cod_cli

REPORT NOME = "relator.r"

SET PRINT OFF

O exemplo a seguir mostra-nos como utilizar funções do usuário em um procedimento

PROG

func destaca(c),tamnom(n)

DATABASE exemplo 1 A 2

USE DEPE

QUERY mat_fun > 100 .and. nom_depe $= "JOAO"

REPORT

C1,"RELATORIO 01"

!1,destaca(nom_depe),C

!2,tamnom(nom_depe),N

D1,!1

D2,"Tamanho do nome = ",02

D2,!2,20

ENDREPORT

QUIT

FUNC destaca

* Coloca nome em reverso no vídeo

parameters nom(c)

return(rev() + nom + normal())

FUNC tamnom

* Retorna o tamanho do nome

parameters nom(c)

return(len(nom))

Consulte

QUERY.

Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!