Você está na página 1de 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()
TReport()

Criação do componente de impressão.

Sintaxe:

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

p1 => nome do relatório


p2 => titulo
p3 => pergunta
p4 => bloco de código que será executado na confirmação da impressão
p5 => 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 pertence


p2 => descrição
p3 => 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 campos
p4 => carrega campos do SX3 como células
p5 => 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 pertence


p2 => nome da célula (método New verifica no SX3 a existência do campo
para carregar as informações)
p3 => tabela
p4 => titulo
p5 => picture
p6 => tamanho
p7 => parâmetro tamanho esta em pixel
p8 => 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
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 query
p2 => 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 pertence


p2 => Alias para posicionamento
p3 => 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 filtro
p2 => 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
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()
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
Impressão com 1 Seção e Embedded SQL– MATR530

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

Static Function ReportDef()


Local oReport
Local 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
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_VEND
EndSql
Else
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%
ORDER BY A1_VEND
EndSql
EndIf

oReport:Section(1):EndQuery(mv_par04)

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

#ELSE
MakeAdvplExpr("MTR530")
cFiltro :='´A1_VEND>="'+ mv_par01 +'".AND. A1_VEND<="' + mv_par02 + '" .AND.;
A1_TEMVIS > 0 .AND. '

//Adiciona no filtro o parametro tipo Range


If !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