× Linguagem de Programação ADVPL

Perguntas LAYOUT TREPORT

Mais
10 anos 3 meses atrás #24067 por manoelcarlosjunior
Boa tarde Galera !!!
Como vocês já viram em outros posts peguei um modelo treport e fui embora com a ajuda de mitos gostaria citar o Kanaãm dentre outros. Até que nesse relatório abaixo queria alterar o nome das colunas tamanho mais só na impressão sem mexer nas colunas em si no configurador . Acho que deve ser algo bobo mais em fim, Em terra de cego quem tem olho é rei. Quem puder me ajude segue o código abaixo.


/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±º Programa º TABELAP º Autor ºManoel Carlos Juniorº Data ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescricao ³ Imprime Tabela de preço. º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºModulo | SIGAFAT | USO | Especifico do SIGAFAT º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/


#Include "PROTHEUS.CH"
#Include "REPORT.CH"

User Function TABELAP()

Local oReport
Local oSection1
Local oSection2
Local oBreak
Local cPerg := "TABELAP"

CriaSX1(cPerg)
Pergunte(cPerg, .F.)

DEFINE REPORT oReport NAME "TABELAP" TITLE "Tabela de Preços" PARAMETER cPerg ACTION {|oReport| PrintReport(oReport, cPerg)}

DEFINE SECTION oSection1 OF oReport TITLE "Cabeçalho" TABLES "DA0"

DEFINE CELL NAME "DA0_CODTAB" OF oSection1 ALIAS "DA0"
DEFINE CELL NAME "DA0_DESCRI" OF oSection1 ALIAS "DA0"
DEFINE CELL NAME "DA0_DATDE" OF oSection1 ALIAS "DA0"
DEFINE CELL NAME "DA0_ATIVO" OF oSection1 ALIAS "DA0"
DEFINE CELL NAME "DA0_XCLI" OF oSection1 ALIAS "DA0"
DEFINE CELL NAME "DA0_XLOJA" OF oSection1 ALIAS "DA0"
DEFINE CELL NAME "A1_NREDUZ" OF oSection1 ALIAS "SA1"
DEFINE CELL NAME "A1_XCODEX" OF oSection1 ALIAS "SA1"
DEFINE CELL NAME "A1_MUN" OF oSection1 ALIAS "SA1"
DEFINE CELL NAME "A1_EST" OF oSection1 ALIAS "SA1"
DEFINE CELL NAME "A1_VEND" OF oSection1 ALIAS "SA1"
DEFINE CELL NAME "A3_NREDUZ" OF oSection1 ALIAS "SA3"

//DEFINE FUNCTION FROM oSection1:Cell("A1_NOME") OF oSection1 FUNCTION COUNT TITLE "Total de Clientes: " NO END SECTION

DEFINE SECTION oSection2 OF oSection1 TITLE "Ítens" TABLE "DA1"

DEFINE CELL NAME "DA1_CODPRO" OF oSection2 ALIAS "DA1"
DEFINE CELL NAME "B1_DESC" OF oSection2 ALIAS "SB1"
DEFINE CELL NAME "B1_XCODEX" OF oSection2 ALIAS "SB1"
DEFINE CELL NAME "DA1_PRCVEN" OF oSection2 ALIAS "DA1"


/*DEFINE SECTION oSection3 OF oSection1 TITLE "Observação" TABLE "SC5"

DEFINE CELL NAME "C5_XSEP" OF oSection3 ALIAS "SC5"*/


//DEFINE BREAK oBreak OF oSection1 WHEN oSection1:Cell("C5_NUM")

//DEFINE FUNCTION FROM oSection2:Cell("C6_ITEM") OF oSection2 FUNCTION COUNT TITLE "Total de Ítens"
//DEFINE FUNCTION FROM oSection2:Cell("C6_VALOR")OF oSection2 FUNCTION SUM TITLE "Valor Total"

oReport:PrintDialog()

Return Nil

//
//
Static Function PrintReport(oReport, cPerg)

#IFDEF TOP

Local cAlias := GetNextAlias()
Local cSQL := ""

MakeSqlExp(cPerg)

If !Empty(mv_Par01)
cSQL += "AND DA0_CODTAB >= '" + mv_Par01 + "' "
EndIf
If !Empty(mv_Par02)
cSQL += "AND DA0_CODTAB <= '" + mv_Par02 + "' "
EndIf /*

If !Empty(mv_Par03)
cSQL += "AND C9_CLIENTE >= '" + mv_Par03 + "' "
EndIf
If !Empty(mv_Par04)
cSQL += "AND C9_CLIENTE <= '" + mv_Par04 + "' "
EndIf

If !Empty(mv_Par05)
cSQL += "AND DC_PRODUTO >= '" + mv_Par05 + "' "
EndIf
If !Empty(mv_Par06)
cSQL += "AND DC_PRODUTO <= '" + mv_Par06 + "' "
EndIf

If !Empty(mv_Par07)
cSQL += "AND DA0_DATDE = '" + DtoS(mv_Par07) + "' "
EndIf
/*If !Empty(mv_Par08)
cSQL += "AND C9_DATALIB <= '" + DtoS(mv_Par08) + "' "
EndIf */

cSQL := "%"+cSQL+"%"

BEGIN REPORT QUERY oReport:Section(1)

BeginSQL Alias cAlias

SELECT DA0_CODTAB, DA0_DESCRI, DA0_DATDE, DA0_ATIVO, DA0_XCLI, DA0_XLOJA, A1_NREDUZ,
A1_XCODEX, A1_MUN, A1_EST, A1_VEND, A3_NREDUZ,
DA1_CODPRO, B1_DESC, B1_XCODEX, DA1_PRCVEN

FROM %Table:DA0% DA0, %Table:SA1% SA1, %Table:SA3% SA3, %Table:DA1% DA1, %Table:SB1% SB1

WHERE DA0_FILIAL = %xFilial:DA0% AND DA0.%NotDel% AND
A1_FILIAL = %xFilial:SA1% AND SA1.%NotDel% AND
A3_FILIAL = %xFilial:SA3% AND SA3.%NotDel% AND
DA1_FILIAL = %xFilial:DA1% AND DA1.%NotDel% AND
B1_FILIAL = %xFilial:SB1% AND SB1.%NotDel% AND
DA0_FILIAL = DA1_FILIAL AND
DA1_CODTAB = DA0_CODTAB AND
DA0_XCLI = A1_COD AND
A3_FILIAL = A1_FILIAL AND
A3_COD = A1_VEND AND
B1_FILIAL = DA0_FILIAL AND
B1_COD = DA1_CODPRO



%Exp:cSQL%

ORDER BY DA0_CODTAB, DA0_DESCRI

EndSQL

END REPORT QUERY oReport:Section(1)



oReport:Section(1):Section(1):SetParentQuery()
oReport:Section(1):Section(1):SetParentFilter({|cNum| (cAlias)->DA0_CODTAB == cNum}, {|| (cAlias)->DA0_CODTAB})
//oReport:Section(1):Section(1):SetParentFilter({|cNome| (cAlias)->Z2_NOME == cNome}, {|| (cAlias)->Z1_NOME})

oReport:Section(1):Print()

#ELSE

MakeAdvplExpr(cPerg)

dbSelectAreaSZ1")
dbSetOrder(1)

If !Empty(mv_Par01)
oReport:Section(1):SetFilter(mv_Par01) // mv_Par01 contém a range de Contas.
EndIf

//oReport:Section(1):Section(1):SetRelation({|| xFilial("SZ2")+SZ1->Z1_NOME}, "SZ2", 2, .T.)
//oReport:Section(1):Section(1):SetRelation({|| xFilial("SZ2")+SZ1->Z1_CODIGO}, "SZ2", 2, .T.)
//oReport:Section(1):Section(1):SetParentFilter({|cNome| SZ2->Z2_NOME == cNome}, {|| SZ1->Z1_NOME})
oReport:Section(1):Section(1):SetParentFilter({|cCodigo| SZ2->Z2_CODCOR == cCodigo}, {|| SZ1->Z1_CODIGO})
oReport:Section(1):Section(1):SetLineCondition({|| SZ2->Z2_Data >= mv_Par02 .And. SZ2->Z2_Data <= mv_Par03 .And. Z2_Tipo $ IIf(mv_Par04==1,"12",If(mv_Par04==2,"1","2"))})

oReport:Section(1):Print()

#ENDIF

Return Nil

//
//
// Parametros que devem ser passados para a função de criação das perguntas no arquivo SX1.
//
//
// 1o. Parametro -> Nome do grupo
// 2o. Parametro -> Numero da ordem
// 3o. Parametro -> Texto da pergunta em portugues
// 4o. Parametro -> Texto da pergunta em espanhol
// 5o. Parametro -> Texto da pergunta em ingles
// 6o. Parametro -> Nome da variavel
// 7o. Parametro -> Tipo do dado C=caractere, D=Data, N=Numerico
// 8o. Parametro -> Tamanho do dado
// 9o. Parametro -> Quantidade de casas decimais para o dado
// 10o. Parametro -> Numero da pre-selecao
// 11o. Parametro -> O tipo do dado sera G=get, S=scroll, C=choice, R=Range
// 12o. Parametro -> Sintaxe em advpl, ou funcao para validacao
// 13o. Parametro -> Consistencia com alguma tabela do sistema via <F3>
// 14o. Parametro -> Nome do grupo para SXG
// 15o. Parametro -> Pyme
// 16o. Parametro -> Nome da variavel que será utilizada no programa
// 17o. Parametro -> Primeira definicao do texto em portugues se caso o tipo do dado for choice, exemplo: SIM ou Nao
// 18o. Parametro -> Primeira definicao do texto em espanhol se caso o tipo do dado for choice, exemplo: Si o No
// 19o. Parametro -> Primeira definicao do texto em ingles se caso o tipo do dado for choice, exemplo: Yes or No
// 20o. Parametro -> Conteudo da ultima resposta informada no parametro se caso o tipo do dados for get
// 21o. Parametro -> Segunda definicao do texto em portugues se caso o tipo do dado for choice, exemplo: SIM ou Nao
// 22o. Parametro -> Segunda definicao do texto em espanhol se caso o tipo do dado for choice, exemplo: Si o No
// 23o. Parametro -> Segunda definicao do texto em ingles se caso o tipo do dado for choice, exemplo: Yes or No
// 24o. Parametro -> Terceira definicao do texto em portugues se caso o tipo do dado for choice, exemplo: SIM ou Nao
// 25o. Parametro -> Terceira definicao do texto em espanhol se caso o tipo do dado for choice, exemplo: Si o No
// 26o. Parametro -> Terceira definicao do texto em ingles se caso o tipo do dado for choice, exemplo: Yes or No
// 27o. Parametro -> Quarta definicao do texto em portugues se caso o tipo do dado for choice, exemplo: SIM ou Nao
// 28o. Parametro -> Quarta definicao do texto em espanhol se caso o tipo do dado for choice, exemplo: Si o No
// 29o. Parametro -> Quarta definicao do texto em ingles se caso o tipo do dado for choice, exemplo: Yes or No
// 30o. Parametro -> Quinta definicao do texto em portugues se caso o tipo do dado for choice, exemplo: SIM ou Nao
// 31o. Parametro -> Quinta definicao do texto em espanhol se caso o tipo do dado for choice, exemplo: Si o No
// 32o. Parametro -> Quinta definicao do texto em ingles se caso o tipo do dado for choice, exemplo: Yes or No
// 33o. Parametro -> Vetor com o texto do help em portugues
// 34o. Parametro -> Vetor com o texto do help em espanhol
// 35o. Parametro -> Vetor com o texto do help em ingles
// 36o. Parametro -> Nome do grupo do help

Static Function CriaSX1(cPerg)

Local aHelp := {}

// Texto do help em português , inglês, espanhol
AAdd(aHelp, {{"Informe o Código da Tabela " }, {""}, {""}})
AAdd(aHelp, {{"Informe o Código da Tabela " }, {""}, {""}})
AAdd(aHelp, {{"Informe a data final" }, {""}, {""}})
AAdd(aHelp, {{"Informe o tipo de transação" }, {""}, {""}})

// 1o 2o 3o 4 5 6o 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
PutSX1(cPerg,"01","De Tabela" ,"","","mv_ch1","C",06,00,00,"G","","DA0","","","mv_Par01","","","","","","","","","","","","","","","","",aHelp[1,1],aHelp[1,2],aHelp[1,3],"")
PutSX1(cPerg,"02","Até Tabela" ,"","","mv_ch2","C",06,00,00,"G","","DA0","","","mv_Par02","","","","","","","","","","","","","","","","",aHelp[2,1],aHelp[2,2],aHelp[2,3],"")
/*PutSX1(cPerg,"03","Cliente de?" ,"","","mv_ch3","C",06,00,00,"G","","SA1","","","mv_Par03","","","","","","","","","","","","","","","","",aHelp[1,1],aHelp[1,2],aHelp[1,3],"")
PutSX1(cPerg,"04","Cliente até" ,"","","mv_ch4","C",06,00,00,"G","","SA1","","","mv_Par04","","","","","","","","","","","","","","","","",aHelp[3,1],aHelp[3,2],aHelp[3,3],"")
PutSX1(cPerg,"05","Produto de?" ,"","","mv_ch5","C",15,00,00,"G","","SB1ATF","","","mv_Par05","","","","","","","","","","","","","","","","",aHelp[1,1],aHelp[1,2],aHelp[1,3],"")
PutSX1(cPerg,"06","Produto até" ,"","","mv_ch6","C",15,00,00,"G","","SB1ATF","","","mv_Par06","","","","","","","","","","","","","","","","",aHelp[3,1],aHelp[3,2],aHelp[3,3],"")*/
//PutSX1(cPerg,"07","Data Inicial" ,"","","mv_ch7","D",08,00,00,"G",""," ","","","mv_Par07","","","","","","","","","","","","","","","","",aHelp[4,1],aHelp[4,2],aHelp[4,3],"")
/*PutSX1(cPerg,"08","Data ate?" ,"","","mv_ch8","D",08,00,00,"G",""," ","","","mv_Par08","","","","","","","","","","","","","","","","",aHelp[4,1],aHelp[4,2],aHelp[4,3],"")*/

TRCell():New(oSection,"ADA_CONTR2","ADA","Contrato",,,,,,,,,,,,,,.f.)

Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24069 por admin
Respondido por admin no tópico LAYOUT TREPORT
Veja se estas apostilas te ajudam.



Arquivo Anexo:

Nome do Arquivo: Treport_-_oficial.rar
Tamanho do Arquivo:219 KB


Arquivo Anexo:

Nome do Arquivo: TREPORT_Gu..._old.rar
Tamanho do Arquivo:57 KB
Anexos:

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24073 por manoelcarlosjunior
Respondido por manoelcarlosjunior no tópico LAYOUT TREPORT
Caro Adm até tenho essas apostilas só precisava de um exemplo como aplicar. Vou ser mais claro:

DEFINE CELL NAME "DA0_DATDE" OF oSection1 ALIAS "DA0"

Me mostra a data que foi criada a tabela mas na impressão esta cortando um digito e a legenda é data In. Queria que ficasse só data. Como é só na impressão queria fazer essa alteração sem mecher nos campos no configurador.

Não sei onde aplicar o código na verdade....


Abraço

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24076 por admin
Respondido por admin no tópico LAYOUT TREPORT
Brother tem um comando que fala que determinada celular não será cortada pelo tamanho do titulo,

Tenta isso aqui:

oReport:Cell("DA0_DATDE"):lAutoSize := .f.
oReport:Cell("DA0_DATDE"):lHeaderSize := .f.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24080 por renan.santos
Respondido por renan.santos no tópico LAYOUT TREPORT
Boa Tarde,

Outra solução seria mudar a forma que você está definindo as colunas.

Você está fazendo desta forma:
DEFINE CELL NAME "DA0_DATDE" OF oSection1 ALIAS "DA0"
Assim ele ira buscar tudo do sx3.

Tenta desta forma:
TRCell():New(oSection,"DA0_DATDE","DA0","Digite o nome da coluna aqui",,,,,,,,,,,,,,.F.)

Parâmetros do Método construtor NEW()
New(oParent,cName,cAlias,cTitle,cPicture,nSize,lPixel,bBlock,cAlign,lLineBreak,cHeaderAlign,lCellBreak,nColSpace,lAutoSize,nClrBack,nClrFore,lBold)

Abraços,

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24083 por AndersonBR
Respondido por AndersonBR no tópico LAYOUT TREPORT
Segue trecho do código e comentários:

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Criacao da celulas da secao do relatorio ³
//³ ³
//³TRCell():New ³
//³ExpO1 : Objeto TSection que a secao pertence ³
//³ExpC2 : Nome da celula do relatório. O SX3 será consultado ³
//³ExpC3 : Nome da tabela de referencia da celula ³
//³ExpC4 : Titulo da celula ³
//³ Default : X3Titulo() ³
//³ExpC5 : Picture ³
//³ Default : X3_PICTURE ³
//³ExpC6 : Tamanho ³
//³ Default : X3_TAMANHO ³
//³ExpL7 : Informe se o tamanho esta em pixel ³
//³ Default : False ³
//³ExpB8 : Bloco de código para impressao. ³
//³ Default : ExpC2 ³
//³ ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
oTabPrc := TRSection():New(oReport,STR0026,{"DA0"},{STR0027,STR0028,STR0029,STR0030},.F.,.F.) // "Tabela de Preço"###"Tipo"###"Grupo"###"Descrição de produto"###"Código de produto"
TRCell():New(oTabPrc,"DA0_CODTAB","DA0",/*Titulo*/,/*Picture*/,/*Tamanho*/,/*lPixel*/,{|| (cAliasDA0)->DA0_CODTAB})
TRCell():New(oTabPrc,"DA0_DESCRI","DA0",/*Titulo*/,/*Picture*/,/*Tamanho*/,/*lPixel*/,{|| (cAliasDA0)->DA0_DESCRI})

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.100 segundos
Joomla templates by a4joomla