Relatorios-Personalizaveis-funcoes By Larentes

7
Novas Funções, Objetos e Métodos MPReport() Função que substitui a antiga ImpCadast(). Sintaxe: MPReport(p1,p2,p3,p4,p5) p1 => nome do relatório p2 => tabela p3 => titulo p4 => descrição p5 => vetor com ordens que pode ser: {"<texto1>","<texto2>",...} : a ordem do índice será a posição do vetor {{2,"Alfabetica"},{1,"Por codigo"}} := a ordem será a primeira posição do vetor ReportDef() A função estática ReportDef deverá ser criada para todos relatórios que poderão ser agendados pelo usuário. Essa função deve conter somente a definição do componente. Sintaxe: ReportDef() PrintDialog () Apresenta tela de impressão para o usuário. Sintaxe: PrintDialog()

Transcript of Relatorios-Personalizaveis-funcoes By Larentes

Page 1: Relatorios-Personalizaveis-funcoes By Larentes

Novas Funções, Objetos e Métodos

MPReport()

Função que substitui a antiga ImpCadast().

Sintaxe:

MPReport(p1,p2,p3,p4,p5)

p1 => nome do relatório p2 => tabelap3 => titulop4 => descriçãop5 => vetor com ordens que pode ser:

{"<texto1>","<texto2>",...} : a ordem do índice será a posição do vetor{{2,"Alfabetica"},{1,"Por codigo"}} := a ordem será a primeira posição do vetor

ReportDef()

A função estática ReportDef deverá ser criada para todos relatórios que poderão ser agendados pelo usuário.

Essa função deve conter somente a definição do componente.

Sintaxe:

ReportDef()

PrintDialog ()

Apresenta tela de impressão para o usuário.

Sintaxe:

PrintDialog()

Page 2: Relatorios-Personalizaveis-funcoes By Larentes

TReport()

Criação do componente de impressão.

Sintaxe:

TReport():New(p1,p2,p3,p4,p5)

p1 => nome do relatóriop2 => titulop3 => perguntap4 => bloco de código que será executado na confirmação da impressãop5 => descrição

TRSection()

Criação da primeira seção utilizada pelo relatório.

Sintaxe:

TRSection():New(p1,p2,p3,p4,p5)

p1 => objeto TReport que a seção pertencep2 => descriçãop3 => vetor com as tabelas utilizadas pela seção a primeira tabela será considerada como principal para a seção. As outras serão utilizadas como referência de quais tabelas o usuário poderá incluir os camposp4 => carrega campos do SX3 como célulasp5 => carrega ordem do SIX

TRCell()

Criação das células da seção

Sintaxe:

TRCell():New(p1,p2,p3,p4,p5,p6,p7,p8)

p1 => objeto TRSection que a célula pertencep2 => nome da célula (método New verifica no SX3 a existência do campo para carregar as informações)p3 => tabelap4 => titulop5 => picturep6 => tamanhop7 => parâmetro tamanho esta em pixelp8 => bloco de código de impressão se não informado será utilizado o nome da célula junto a tabela como conteúdo para impressão

Page 3: Relatorios-Personalizaveis-funcoes By Larentes

SetQuery() - Método

O método SetQuery (Classe TRSection) irá inserir na query os campos selecionados e o filtro definido pelo usuário para processamento do relatório.

Sintaxe:

:SetQuery(p1,p2)p1 => Alias da queryp2 => Query

TRPosition()

Célula de posicionamento. As células TRPosition serão executadas antes da impressão da linha para posicionamento das tabelas secundárias.

Sintaxe:

TRPosition():New(p1,p2,p3,p4,p5)

p1 => objeto TReport que a seção pertencep2 => Alias para posicionamentop3 => ordem (pode ser passado o nickname)p4 => regra para pesquisa (caracter ou bloco de código)p5 => executa DbSeek

SetFilter() - Método

O método SetFilter (Classe TRSection) irá inserir o filtro definido pelo usuário para processamento do relatório. Se informado o 2 parâmetro será feito IndRegua, senão será feito SET FILTER TO (podendo utilizar filtro @ para SQL)

Sintaxe:

:SetFilter(p1,p2)p1 => Expressão de filtrop2 => chave do índice (opcional)

MakeSqlExpr()

Transforma parâmetros do tipo Range em expressão SQL para ser utilizada na query.

Sintaxe:

MakeSqlExpr(p1)p1 => nome da pergunte

Page 4: Relatorios-Personalizaveis-funcoes By Larentes

BeginQuery () - Método

O método BeginQuery (Classe TRSection) prepara o relatório para utilizar o Embedded SQL.

Sintaxe::BeginQuery()

EndQuery () - Método

O método EndQuery (Classe TRSection) prepara o relatório para executar a query gerada pelo Embedded SQL. Recebe como parâmetro

Sintaxe:

:EndQuery(p1)

p1 => parâmetro ou vetor com parâmetros do tipo Range que foram alterados pela função MakeSqlExpr para serem adicionados a query.

MakeAdvplExpr ()

Transforma parâmetros do tipo Range em expressão ADVPL para ser utilizada no filtro

Sintaxe:

MakeAdvplExpr(p1)

p1 => nome da pergunte

Print() - Método

O método Print (Classe TRSection) processa o relatório baseado na query ou na tabela principal do objeto TRSection.

Sintaxe:

:Print()

Page 5: Relatorios-Personalizaveis-funcoes By Larentes

Exemplos de Programação

Impressão de Cadastro – MATR020

#include "MATR020.CH"#Include "PROTHEUS.CH"

User Function MATR020()

MPReport("MATR020","SA1",STR0001,STR0002+STR0003+STR0004,;{STR0008,STR0009,STR0015+RTrim(RetTitle("A1_CGC"))})

Return

Page 6: Relatorios-Personalizaveis-funcoes By Larentes

Impressão com 1 Seção e Embedded SQL– MATR530

#include "MATR530.CH"#Include "PROTHEUS.CH"

Static Function ReportDef()Local oReportLocal oSection

oReport := TReport():New("MATR530",OemToAnsi(STR0001),"MTR530",;{|oReport| MATR530Imp(oReport)},OemToAnsi(STR0002)+OemToAnsi(STR0003))

oSection := TRSection():New(oReport,OemToAnsi(STR0001),{"SA1","SA3"})

TRCell():New(oSection,"A1_VEND","SA1")TRCell():New(oSection,"A3_NOME","SA3")TRCell():New(oSection,"A1_COD","SA1")TRCell():New(oSection,"A1_LOJA","SA1")TRCell():New(oSection,"A1_NOME","SA1")TRCell():New(oSection,"A1_ULTVIS","SA1")TRCell():New(oSection,"A1_TEMVIS","SA1")TRCell():New(oSection,"A1_CONTATO","SA1")TRCell():New(oSection,"A1_TEL","SA1")

Return oReport

User Function MATR530SQL( )

pergunte("MTR530",.F.)

oReport := ReportDef()

oReport:PrintDialog()

Return

Page 7: Relatorios-Personalizaveis-funcoes By Larentes

Static Function MATR530Imp(lEnd,WnRel,cString)LOCAL cFiltro := ""LOCAL cQuery := ""#IFDEF TOP

MakeSqlExpr("MTR530")

oReport:Section(1):BeginQuery()

If ( mv_par03 == 1 )BeginSql alias "QRYSA1"

SELECT A1_COD,A1_LOJA,A1_NOME,A1_VEND,A1_ULTVIS,A1_TEMVIS,A1_TEL,A1_CONTATO FROM %table:SA1% SA1,%table:SA3% SA3

WHERE A1_VEND = A3_COD AND A1_FILIAL = %xfilial:SA1% AND A1_TEMVIS > 0 AND SA1.%notDel% AND (%exp:dDataBase% -A1_ULTVIS) > A1_TEMVIS

ORDER BY A1_VENDEndSql

ElseBeginSql alias "QRYSA1"

SELECT A1_COD,A1_LOJA,A1_NOME,A1_VEND,A1_ULTVIS,A1_TEMVIS,A1_TEL,A1_CONTATO FROM %table:SA1% SA1,%table:SA3% SA3

WHERE A1_VEND = A3_COD AND A1_FILIAL = %xfilial:SA1% ANDA1_TEMVIS > 0 AND SA1.%notDel%

ORDER BY A1_VENDEndSql

EndIf

oReport:Section(1):EndQuery(mv_par04)

TRPosition():New(oReport:Section(1),"SA3",1,"xFilial() + QRYSA1->A1_VEND")

#ELSEMakeAdvplExpr("MTR530")

cFiltro :='´A1_VEND>="'+ mv_par01 +'".AND. A1_VEND<="' + mv_par02 + '" .AND.; A1_TEMVIS > 0 .AND. '

//Adiciona no filtro o parametro tipo RangeIf !Empty(mv_par04)

cFiltro += mv_par04 + " .AND. "EndIf

cFiltro += " A1_TEMVIS > 0 "

If ( mv_par03 == 1 )cFiltro += ' .AND. ('+DtoC(dDataBase)+'-A1_ULTVIS) > A1_TEMVIS'

EndIf

oReport:Section(1):SetFilter(cFiltro,"A1_VEND")

TRPosition():New(oReport:Section(1),"SA3",1,"xFilial() + SA1->A1_VEND")#ENDIF

oReport:Section(1):Print()Return