Upload
weslley-larentes
View
48
Download
1
Embed Size (px)
Citation preview
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()
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
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
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 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
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