apresentacao treport

Upload: edson-borges

Post on 03-Apr-2018

234 views

Category:

Documents


1 download

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