Se alguma pergunta ou resposta lhe foi útil, não deixe de dar seu voto positivo!

Relatório em TReport não mostra os dados ADVPL

Olá pessoal, estou tentando montar Relatório que mostra as compras efetuadas pelos clientes.

Porém ele não está mostrando nada no relatório, já testei a consulta SQL e funciona, porém na execução do fonte não.

Na SX1 fiz uma pergunta (Filial?) Grupo-> "TRPT002"

Abaixo o fonte:

User Function Trpt002()

    Local oReport := Nil
    Local cPerg := Padr("TRPT002",10)

    Pergunte(cPerg,.T.) //SX1

    oReport := RptStruc(cPerg)
    oReport:PrintDialog()
Return

Static Function RPTPrint(oReport)
    Local oSection1 := oReport:Section(1)
    Local oSection2 := oReport:Section(2)
    Local cQuery := ""
    Local cNumCod := ""

    cQuery := " SELECT A1_COD,A1_NOME,C5_NUM,C6_QTDVEN,C6_PRCVEN,B1_DESC "
    cQuery += " FROM SA1990 SA1, SC5990 SC5, SC6990 SC6, SB1990 SB1 "
    cQuery += " WHERE SA1.D_E_L_E_T_ = '' AND "
    cQuery += " C5_FILIAL = '"+MV_PAR01+"' AND SC5.D_E_L_E_T_ = '' AND C5_CLIENTE = A1_COD AND "
    cQuery += " C6_FILIAL = '"+MV_PAR01+"' AND SC6.D_E_L_E_T_ = '' AND C6_NUM = C5_NUM AND "
    cQuery += " B1_FILIAL = '"+MV_PAR01+"' AND SB1.D_E_L_E_T_ = '' AND B1_COD = C6_PRODUTO "
    cQuery += " ORDER BY A1_FILIAL,A1_COD,C5_FILIAL,C5_NUM,C6_FILIAL,C6_ITEM "

    //Verifica se a tabela ja está aberta.
    If Select("TEMP") <> 0
        DbSelectArea("TEMP")
        DbCloseArea()
    EndIf

    TCQUERY cQuery NEW ALIAS "TEMP"

    DbSelectArea("TEMP")
    TEMP->(dbGoTop())

    oReport:SetMeter(TEMP->(LastRec()))

    While !EOF()
        If oReport:Cancel()
            Exit
        EndIf
        //Iniciando a primeira seção
        oSection1:Init()
        oReport:IncMeter()

        cNumCod := TEMP->A1_COD
        IncProc("Imprimindo Cliente "+ Alltrim(TEMP->A1_COD))

        //Imprimindo primeira seção:
        oSection1:Cell("A1_COD"):SetValue(TEMP->A1_COD)
        oSection1:Cell("A1_NOME"):SetValue(TEMP->A1_NOME)
        oSection1:Printline()


        //Iniciar a impressão da seção 2
        oSection2:Init()

        //verifica se o codigo do cliente é o mesmo, se sim, imprime os dados do pedido
        While TEMP->A1_COD == cNumCod
            oReport:IncMeter()

            IncProc("Imprimindo pedidos..."+ Alltrim(TEMP->C5_NUM))
            oSection2:Cell("C5_NUM"):SetValue(TEMP->C5_NUM)
            oSection2:Cell("B1_DESC"):SetValue(TEMP->B1_DESC)
            oSection2:Cell("C6_PRCVEN"):SetValue(TEMP->C6_PRCVEN)
            oSection2:Cell("C6_QTDVEN"):SetValue(TEMP->C6_QTDVEN)
            oSection2:Printline()

            TEMP->(dbSkip())

        EndDo
        oSection2:Finish()
        oReport:ThinLine()

        oSection1:Finish()

    EndDo

Return


Static Function RPTStruc(cNome)
    Local oReport := Nil
    Local oSection1:= Nil
    Local oSection2:= Nil

    oReport := TReport():New(cNome,"Relatório de pedidos por clientes",cNome,{|oRperot| RPTPRINT(oReport)},"Descricao do Help")

    oReport:SetPortrait() //Definindo a orientação como retrato

    oSection1 := TRSection():New(oReport, "Clientes",{"SA1"}, NIL,.F.,.T.)
    TRCell():New(oSection1,"A1_COD"        ,"TEMP","CODIGO"          ,"@!",40)
    TRCell():New(oSection1,"A1_NOME"  ,"TEMP","NOME"    ,"@!",200)

    oSection2 := TRSection():New(oReport, "Produtos",{"SB1"}, NIL,.F.,.T.)
    TRCell():New(oSection2,"C5_NUM"       ,"TEMP","Pedido"    ,"@!",30)
    TRCell():New(oSection2,"B1_DESC"      ,"TEMP","Descrição"    ,"@!",100)
    TRCell():New(oSection2,"C6_PRCVEN"    ,"TEMP","Prec. Vend"    ,"@E 999999.99",20)
    TRCell():New(oSection2,"C6_QTDVEN"    ,"TEMP","Quantidade"    ,"@E 999999.99",30)

    oSection1:SetPageBreak(.F.) //Quebra de seção


Return (oReport)
compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags advpl treport ou faça a sua própria pergunta.