|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Treport |
|
Versão: |
12.1.25 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
WANDERSONW
em 24/03/2020, 13:42 h
Local: SP Registro: 01/07/2015 Postagens: 166 |
Boa Tarde,
Acabei de fazer um relatório usando o Treport porem, ele só mostra o campo quantidade os demais ele não mostra os dados e a query esta correta.
User function CCFATR40()
private oReport
private oSectCab
private oSectDet
private oBreak
private cNomeRel := FunName()
private cPerg := cNomeRel
private cTitulo := "VSPTMKR0"
private cDescrRel := "ANALISE DE GARANTIA"
// Criacao do objeto TReport
oReport := TReport():new(cNomeRel, cTitulo, cPerg, { || procRel2() }, cDescrRel)
// Define o Layout como Paisagem
oReport:setLandscape()
// Define o Titulo do Relatorio
oReport:setTitle(cTitulo)
// Dialogo do TReport
oReport:printDialog()
// Totalizador de colunas
oReport:SetTotalInLine(.F.)
Return
/**
* Funcao : procRel
* Data :
* Descricao : Processamento da Impressao do Relatorio
*/
Static Function procRel2()
local nRegs := 0
local cAlias := ""
local uCodigo := ""
// Leitura dos Parametros
Pergunte(cPerg, .F.) // Executa a chamada do filtro somente no buttom Parametros
// Seleciona os Registros para Impressao
cAlias := qryRegs()
// Secao ( Cabecalho )
oSectCab := TRSection():new(oReport, cTitulo)
//oBreak := TRBreak():new(oSectCab, {|| (cAlias)->JANEIRO})
// Secao dos dados
oSectDet := TRSection():new(oSectCab, cTitulo)
oSectDet:SetTotalInLine(.F.)
TRCell():new(oSectDet, "FL" , cAlias, "COD_FILIAL" ,, 10,,,"CENTER",,"CENTER")
TRCell():new(oSectDet, "DATA CLI" , cAlias, "DTA_ENTCLIENTE" ,, 10)
TRCell():new(oSectDet, "NF.CLIENTE" , cAlias, "NTF_CLIENTE" ,,30 ,,,"CENTER",,"CENTER")
TRCell():new(oSectDet, "SER" , cAlias, "NRO_SERIE" ,, 10,,,"RIGHT",,"RIGHT")
TRCell():new(oSectDet, "NF.GARANT" , cAlias, "NFS_GARANTIA" ,,30 ,,,"LEFT",,"LEFT")
TRCell():new(oSectDet, "NRO GAR" , cAlias, "NRO_GARANTIA" ,,40 ,,,"CENTER",,"CENTER")
TRCell():new(oSectDet, "PROTOC" , cAlias, "NRO_PROTOCOLO" ,,30 ,,,"LEFT",,"LEFT")
TRCell():new(oSectDet, "COD FOR" , cAlias, "COD_FORNECEDOR" ,,20,,,"RIGHT",,"RIGHT")
TRCell():new(oSectDet, "COD.PROD" , cAlias, "COD_PRODUTO" ,,20 ,,,"CENTER",,"CENTER")
TRCell():new(oSectDet, "PRODUTO" , cAlias, "COD_PRODUTO" ,,20 ,,,"RIGHT",,"RIGHT")
TRCell():new(oSectDet, "QUANTIDADE" , cAlias, "QUANTIDADE" ,"@E 999,999.99",20,,,"CENTER",,"CENTER")
TRCell():new(oSectDet, "COD.CLI" , cAlias, "COD_CLIENTE" ,,20 ,,,"CENTER",,"CENTER")
TRCell():new(oSectDet, "CLIENTE" , cAlias, "NOM_CLIENTE" ,,10 ,,,"CENTER",,"CENTER")
TRCell():new(oSectDet, "NF.SAIDA" , cAlias, "NOTAFISCAL_CLIENTE_SAIDA",,10,,,"CENTER",,"CENTER")
TRCell():new(oSectDet, "DTA.SAIDA" , cAlias, "DTA_SAIDA_CLIENTE",,10 ,,,"CENTER",,"CENTER")
TRCell():new(oSectDet, "ULT.ENTRADA" , cAlias, "ULTIMA_ENTRADA" ,,10 ,,,"CENTER",,"CENTER")
oReport:SetTotalInLine(.F.)
DbSelectArea(cAlias)
Count to nRegs
oReport:setMeter(nRegs)
(cAlias)->(dbGoTop())
oSectCab:init()
While !(cAlias)->(eof())
// Impressao dos dados
oSectCab:printLine()
// Inicia Secao
oSectDet:init()
// Impressao dos Albuns
While !(cAlias)->(eof())
oReport:incMeter()
If oReport:Cancel()
exit
EndIf
oSectDet:printLine()
(cAlias)->(dbSkip())
EndDo
//EndDo
oSectDet:finish()
EndDo
oSectCab:finish()
(cAlias)->(dbCloseArea())
Return
Static Function qryRegs()
local cQuery := ""
local cAlias := GetNextAlias()
local cEol := Chr(10)+Chr(13)
cVSPCONS := " SELECT " + CRLF
cVSPCONS += " SUD.UD_FILORI AS COD_FILIAL " + CRLF
cVSPCONS += " ,SUD.UD_ENTCLI AS DTA_ENTCLIENTE " + CRLF
cVSPCONS += " ,SUD.UD_NFCLI AS NTF_CLIENTE " + CRLF
cVSPCONS += " ,SUD.UD_SERCLI AS NRO_SERIE " + CRLF
cVSPCONS += " ,SUD.UD_NFGAR AS NFS_GARANTIA " + CRLF
cVSPCONS += " ,SUD.UD_NUMGAR AS NRO_GARANTIA " + CRLF
cVSPCONS += " ,SUD.UD_CODIGO AS NRO_PROTOCOLO " + CRLF
cVSPCONS += " ,SUD.UD_FORN AS COD_FORNECEDOR " + CRLF
cVSPCONS += " ,SUD.UD_PRODUTO AS COD_PRODUTO " + CRLF
cVSPCONS += " ,SB1.B1_DESC AS NOM_PRODUTO " + CRLF
cVSPCONS += " ,SUD.UD_QTDE AS QUANTIDADE " + CRLF
cVSPCONS += " ,SUC.UC_CLIENTE AS COD_CLIENTE " + CRLF
cVSPCONS += " ,SA1.A1_NOME AS NOM_CLIENTE " + CRLF
cVSPCONS += " ,SD2.D2_CLIENTE AS COD_CLIENTE_SAIDA " + CRLF
cVSPCONS += " ,SD2.D2_LOJA AS LOJ_CLIENTE_SAIDA " + CRLF
cVSPCONS += " ,SD2.D2_DOC AS NOTAFISCAL_CLIENTE_SAIDA " + CRLF
cVSPCONS += " ,SD2.D2_EMISSAO AS DTA_SAIDA_CLIENTE " + CRLF
cVSPCONS += " ,(SELECT TOP 1 MAX(D1_EMISSAO) " + CRLF
cVSPCONS += " FROM SD1010 WHERE D_E_L_E_T_=‘‘ " + CRLF
cVSPCONS += " AND D1_FORNECE=SUD.UD_FORN " + CRLF
cVSPCONS += " AND D1_FILIAL=SUD.UD_FILORI " + CRLF
cVSPCONS += " AND D1_COD=SUD.UD_PRODUTO) AS ULTIMA_ENTRADA " + CRLF
cVSPCONS += " FROM " + CRLF
cVSPCONS += " SUD010 SUD WITH (NOLOCK) " + CRLF
cVSPCONS += " LEFT OUTER JOIN " + CRLF
cVSPCONS += " SUC010 SUC WITH (NOLOCK) ON " + CRLF
cVSPCONS += " SUC.D_E_L_E_T_ = ‘‘ " + CRLF
cVSPCONS += " AND SUC.UC_CODIGO = SUD.UD_CODIGO " + CRLF
cVSPCONS += " AND SUC.UC_FILORI = SUD.UD_FILORI " + CRLF
cVSPCONS += " AND SUC.UC_DATA = SUD.UD_DATA " + CRLF
cVSPCONS += " LEFT OUTER JOIN " + CRLF
cVSPCONS += " SD2010 SD2 WITH (NOLOCK) ON " + CRLF
cVSPCONS += " SD2.D_E_L_E_T_ = ‘‘ " + CRLF
cVSPCONS += " AND SD2.D2_COD = SUD.UD_PRODUTO " + CRLF
cVSPCONS += " AND SD2.D2_FILIAL = SUD.UD_FILORI " + CRLF
cVSPCONS += " AND SD2.D2_CLIENTE = SUC.UC_CLIENTE " + CRLF
cVSPCONS += " AND SD2.D2_LOJA = SUC.UC_LOJA " + CRLF
cVSPCONS += " AND SD2.D2_DOC = SUD.UD_NFGAR " + CRLF
cVSPCONS += " LEFT OUTER JOIN " + CRLF
cVSPCONS += " SA1010 SA1 WITH (NOLOCK) ON " + CRLF
cVSPCONS += " SA1.D_E_L_E_T_=‘‘ " + CRLF
cVSPCONS += " AND SA1.A1_COD = SUC.UC_CLIENTE " + CRLF
cVSPCONS += " AND SA1.A1_LOJA = SUC.UC_LOJA " + CRLF
cVSPCONS += " LEFT OUTER JOIN " + CRLF
cVSPCONS += " SB1010 SB1 WITH (NOLOCK) ON " + CRLF
cVSPCONS += " SB1.D_E_L_E_T_=‘‘ " + CRLF
cVSPCONS += " AND SB1.B1_COD = SUD.UD_PRODUTO " + CRLF
cVSPCONS += " AND SB1.B1_FILIAL = SUD.UD_FILORI " + CRLF
cVSPCONS += " WHERE " + CRLF
cVSPCONS += " 1=1 " + CRLF
cVSPCONS += " AND SUD.D_E_L_E_T_ =‘‘ " + CRLF
If AllTrim( MV_PAR01 ) != ""
cVSPCONS += " AND SUD.UD_FILORI IN " + FormatIn( AllTrim( MV_PAR01 ), "/" ) + " "
EndIf
cVSPCONS += " AND SUC.UC_DATA BETWEEN ‘"+Dtos(mv_par02)+"‘ AND ‘"+Dtos(mv_par03)+"‘"
cVSPCONS += " AND SUC.UC_CODIGO BETWEEN ‘"+MV_PAR05 +"‘ AND ‘" + MV_PAR06 + "‘"
TCQUERY cVSPCONS NEW ALIAS &cAlias
Return cAlias
|
|
|
Mensagem do
EMERSON.EN
em 24/03/2020, 19:00 h
Local: SP Registro: 20/08/2010 Postagens: 670 |
Limite os nomes dos campos a 10 caracteres |
|
|
Mensagem do
DON.JUNIOR
em 28/03/2020, 19:18 h
Local: RJ Registro: 24/01/2016 Postagens: 152 |
Wanderson seu fonte está confuso, possui 2 WHILE, mas só possui 1 SKIP, impressão do cabeçalho dentro do primeiro loop. Arruma também o alias dos campos na query como o Emerson pontuou. Abaixo detalhes!
1 While !(cAlias)->(eof())
// Impressao dos dados
oSectCab:printLine()
// Inicia Secao
oSectDet:init()
// Impressao dos Albuns
2 While !(cAlias)->(eof())
AS NOTAFISCAL_CLIENTE_SAIDA - pq não coloca somente DOCTO ou NFSAIDA ?
Abraço
Don Junior |
|
|
Mensagem do
LHC
em 31/03/2020, 16:26 h
Local: ES Registro: 11/05/2013 Postagens: 49 |
tá um pouco confuso mais o EMERSON.EN e o DON.JUNIOR tem razão além do campo de retorno estar grande esse while eu faria ele dentro da função qryRegs() e ajustaria a função da montagem do layout procRel2().
Tente fazer no padrão:
https://tdn.totvs.com/display/public/PROT/TReport
Um bom exemplo de 2 seçoes que me parece ser o seu caso:
https://www.blogadvpl.com/exemplo-de-relatorio-treport-com-2-secoes/
Atenciosamente,
Luis Henrique |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|