apresentacao treport
TRANSCRIPT
-
7/28/2019 Apresentacao tReport
1/11
1
1
TReport
2
ndice
Seo 1 Estrutura do TReport 3
Seo 2 Consideraes 4
Seo 3 Componentes 7
Seo 4 Embedded Sql 17
-
7/28/2019 Apresentacao tReport
2/11
2
3
Estrutura do TReport
4
Consideraes
Antes de desenvolver Imprima o relatrio do R3 e analise o resultado para definir as sees que sero
utilizadas no novo relatrio.
No utilizar as propriedades Utilizar os mtodos documentados para acessar as propriedades, j que
algumas precisam ser processadas antes de retornar seu contedo (como o
mtodo GetValue() do TRFunction, que precisa calcular o contedo dapropriedade uValue para retornar valor mdio).
Relatrios para o Top Tentar utilizar uma nica query para a seo pai e todas suas filhas (utilizando
o mtodo SetParentQuery() do TRSection). Evitar as querys dinmicas (%report_param: % no Embedded Sql). Utilizar GetNextAlias() para retornar o alias temporrio da query. Querys criadas utilizando o comando Begin Report Query ou o mtodo
BeginQuery() do TRSection sero fechadas pelo TReport no final da impresso.
-
7/28/2019 Apresentacao tReport
3/11
3
5
Consideraes
Report.ch Disponvel no projeto mp8\include do Protheus Versions. Facilita a criao dos objetos. Exemplo:
DEFINE REPORT oReportNAME "MYREPORT" TITLE "Pedidos de Venda" PARAMETER"REPORT"ACTION {|oReport| PrintReport(oReport)} DESCRIPTION Teste
TOTAL TEXT Total
Begin Report Query e End Report Query Pode ser utilizado mesmo em querys que no utilizam
%report_param: %, no lugar dos mtodo BeginQuery() eEndQuery() do TRSection.
No precisa de include no fonte, j esta no sigawin.ch. Qualquer otimizao do comando no ser refletida se estiver
utilizando os mtodos mencionados acima.
6
Consideraes
Exemplos: Os exemplos foram criados com a seguinte
estrutura:
1) SA1 - Cadastro de Clientes1.2) SC5 - Pedidos de Venda
1.2.1) SC6 - Itens do Pedido
-
7/28/2019 Apresentacao tReport
4/11
4
7
Componentes
TReport
PageBreak(): indica se houve quebra de pgina.
PageHeight(): altura da pgina configurada pelo usurio.
PageWidth(): largura da pgina configurada pelo usurio.
SetTitle(): troca o ttulo do relatrio.
SetTotalText(): troca o texto impresso antes dos totalizadores gerais do relatrio.
SetTotalInLine(.F.) : troca impresso dos totalizadores gerais em linha para coluna.
SkipLine(): pula linha na impresso.
ThinLine(): imprime linha fina.
FatLine(): imprime linha grossa.
PrintText(,,): imprime texto nas coordenadas informadas. Caso a linha no seja informada, ser utilizada a linha atual, incrementando uma linha aps a
impresso do texto. Caso a coluna no seja informada, ser utilizada a coluna atual, incrementado a coluna de
impresso utilizando o tamanho do texto informado.
8
Componentes
TRSection
SetTitle(): troca o ttulo da seo.
Hide(): inibe a impresso do cabealho (PrintHeader()) e das linhas (PrintLine()) da seo,porm imprime os totalizadores.
Show(): retorna a impresso do cabealho e das linhas da seo.
Disable(): desabilita o processamento e impresso da seo, inclusive dos totalizadores.
Enable(): habilita a impresso da seo.
SetTotalText(): troca o texto impresso antes dos totalizadores da seo.
SetTotalInLine(.F.) : troca impresso dos totalizadores da seo em linha para coluna.
SetHeaderPage(): indica que o cabealho da seo ser impresso no topo da pgina.
SetHeaderSection(): indica se cabealho da seo ser impresso (padro).
SetHeaderBreak(): indica se cabealho da seo ser impresso em cada quebra (padro).
SetPageBreak(): indica quebra de pgina no final da seo.
GetOrder(): retorna ordem selecionada pelo usurio.
-
7/28/2019 Apresentacao tReport
5/11
5
9
Componentes
TRSection
PrintLine(): imprime uma linha no relatrio baseado na configurao das clulas da seo. Antes de imprimir, o mtodo PrintLine() executa as clulas de posicionamento (TRPosition), calcula
os contedos das clulas, avalia as quebras (TRBreak) e incrementa os totalizadores (TRFunction).
PrintHeader(): imprime o cabealho da seo baseado na configurao das clulas.
Cell(): retorna o objeto TRCell referente ao nome informado.
SetReadOnly(): desabilita a edio da seo pelo usurio.
SetLineCondition(): utilizado para informar bloco de cdigo com condiopara impresso da linha pelo mtodo Print(), tanto para query como para tabela.
SetFilter(,): cria filtro ou IndRegua para a tabela quando noutilizar query.
SetParentQuery() : indica utilizao da query da seo pai para impresso pelo mtodoPrint().
Exemplo: Embedded Sql - Utilizando SetParentQuery() e Print() do TRSection.
10
Componentes
TRSection
SetRelation(,, , A1_COD},"SC5",3,.T.)
oReport:Section(1):Section(1): SetParentFilter({|cParam| SC5->C5_CLIENTE ==cParam},{|| SA1->A1_COD})
-
7/28/2019 Apresentacao tReport
6/11
6
11
Componentes
TRSection
SetParentFilter(,): indica condio de relacionamento da seo filhaem relao a sua seo pai.
Pode ser utilizada com query ou com uma tabela (filtrada ou comIndRegua).
: condio derelacionamento da seo filha em relao sua seo pai, utilizadona impresso pelo mtodo Print().
:bloco de cdigo que retorna o valor da chave estrangeira paravalidar o relacionamento entre a seo filha e sua seo pai.
Exemplo: Embedded Sql - Utilizando SetParentQuery() e Print() doTRSection.
12
Componentes
TRSection
Print(): imprime a query ou a tabela principal da seo. Antes de imprimir a query/tabela, o mtodo Print() executa o 2
parmetro informado no mtodo SetParentFilter(), guardando ocontedo para utilizar no 1 parmetro do mesmo mtodo, paracontrole do relacionamento entre a seo pai e suas filhas.
Se no utilizar query e for utilizado o mtodo SetRelation(), avaliacondio de relacionamento inicial.
Se a seo utiliza query dinminica, o mtodo Print()avalia a querye cria o alias temporrio a ser utilizado.
Para cada linha: Executa o 1 parmetro do mtodo SetParentFilter(), validando o
relacionamento das sees. Se foi utilizado o mtodo SetLineCondition(), executa as clulas de
posicionamento (TRPosition) e na seqncia avalia a condioinformada.
Imprime a linha (PrintLine()) e imprime as sees se filhas (se houver).
-
7/28/2019 Apresentacao tReport
7/11
7
13
Componentes
TRCell GetFieldInfo(): carrega informaes do campo do SX3
na clula, quando o nome no for de um campo padro.
Disable(): desabilita a impresso da clula. O contedo da clula continua sendo avaliado, inclusive
atualizando os totalizadores. O posicionamento da coluna no considerado.
Enable(): habilita a impresso da clula.
Hide(): inibe a impresso da clula.
O contedo da clula continua sendo avaliado, inclusiveatualizando os totalizadores. O posicionamento da coluna considerado.
Show(): retorna a impresso da clula.
14
Componentes
TRPosition Posiciona tabelas secundrias da seo. Nos casos de query, tentar fazer o posicionamento no WHERE. Pode ser utilizando sem alias, somente com o bloco de cdigo
no qual possvel fazer qualquer processamento para
posicionar a tabela. Utilizando o mtodo Print(), o TRPosition pode ser usado para
posicionar uma tabela para a avaliao do LineCondition. Exemplo (exemplo7.prw):
TRPosition():New(oReport:Section(1):Section(1):Section(1): ,"SB1",1,{||xFilial("SB1")+SC6->C6_PRODUTO} )
oReport:Section(1):Section(1):Section(1): SetLineCondition({|| SB1->B1_GRUPO >=
MV_PAR02 .and. SB1->B1_GRUPO
-
7/28/2019 Apresentacao tReport
8/11
8
15
Componentes
TRBreak A quebra avaliada pelo mtodo PrintLine() do TRSection. A regra pode ser uma clula de qualquer seo ou um bloco de
cdigo, no qual pode ser efetuado qualquer processamentopara validar a quebra.
Imprime os totalizadores vinculados a quebra. Os totalizadores so impressos em coluna na posio da clula
que a que se referem. SetTotalInLine(): troca impresso dos totalizadores da quebra
em linha. Exemplo (exemplo6.prw):DEFINE BREAK oBreak OF oSA1WHEN oSA1:Cell("A1_VEND")
DEFINE FUNCTION FROMoSA1:Cell("A1_COD") FUNCTION COUNT BREAK oBreak
DEFINE FUNCTION FROMoSA1:Cell("A1_MCOMPRA") FUNCTION SUM BREAK oBreak
16
Componentes
TRFunction executado pelo mtodo PrintLine() do TRSection. Uma clula pode ter mais de um totalizador. Acumula valores para a quebra, seo, pgina e relatrio, baseado no
tipo de totalizador (COUNT, SUM, MAX, MIN, AVERAGE). Totaliza a clula informada como referncia, que tambm utilizada
para posicionamento no caso de impresso colunada. possivel utilizar um bloco de cdigo para totalizar, porm ainda necessrio informar uma clula como referncia.
possivel fazer refrencia a clula de uma seo e imprimir seutotalizador em outra seo.
Pode ser utilizado como contedo de uma clula de uma seo,inibindo sua impresso no final da seo a que pertence e no final dorelatrio, utilizando os mtodos GetValue(), SectionValue() ouReportValue().
Exemplo (exemplo1.prw):
DEFINE FUNCTION FROMoSC5:Cell("C5_NUM") OF oSA1 FUNCTION COUNT TITLE "Pedidos"
-
7/28/2019 Apresentacao tReport
9/11
9
17
Embedded Sql
Utilizando SetParentQuery() e Print() do TRSection A seo filha utiliza a query do pai. Para cada seo filha, utilizar o mtodo SetParentFilter() para
efetuar o relacionamento com a seo pai:
SetParentFilter(,
)
Exemplo (exemplo1.prw):oReport:Section(1):Section(1): SetParentQuery()
oReport:Section(1):SetParentFilter({|cParam| (cAlias)->C5_CLIENTE == cParam},{|| (cAlias)-> A1_COD})
oReport:Section(1):Section(1):Section(1): SetParentQuery()
oReport:Section(1):Section(1):Section(1): SetParentFilter({|cParam| (cAlias)->C6_NUM == cParam}, {|| (cAlias)->C5_NUM})
18
Embedded Sql
Utilizando query dinmica (%report_param:%) No necessrio utilizar o mtodo SetParentFilter. Para cada linha da query da seo pai, executada
a query dinmica da seo filha. Exemplo (exemplo2.prw):
BEGIN REPORT QUERY oReport:Section(1):Section(1)
BeginSql alias cAlias2
SELECT C5_NUM NUM,C5_NUM,C5_TIPO,C5_VEND1
FROM%table:SC5% SC5
WHERE C5_FILIAL = %xfilial:SC5% AND SC5.%notDel% AND
C5_CLIENTE = %report_param: (cAlias1)->A1_COD%
ORDERBY C5_FILIAL,C5_NUM
EndSql
END REPORT QUERY oReport:Section(1):Section(1)
-
7/28/2019 Apresentacao tReport
10/11
10
19
Embedded Sql
Utilizando contedos variveis na query Sempre utilizar % no comeo e no fim do contedo. Exemplo (exemplo3.prw):
If !Empty(mv_par03)
cSql += "AND B1_GRUPO
-
7/28/2019 Apresentacao tReport
11/11
11
21