×
Linguagem de Programação ADVPL
Perguntas RELATORIO TRIPORT
- manoelcarlosjunior
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 116
- Obrigados Recebidos: 0
10 anos 6 meses atrás #22621
por manoelcarlosjunior
RELATORIO TRIPORT foi criado por manoelcarlosjunior
Bom dia galera sou novo na área e to tentando compilar um relatório TReporte e ele me da um erro
Alias does note existe SX1.
me passaram uma static function de validação coloquei ela junto com o código antes de compilar e ainda permanece o mesmo erro. em anexo o print do erro e o modelo de relatório que estou usando peguei de um outro forum.
este é o modelo
±±ºUso ³ AcademiaERP º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function RCOMR01()
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Declaracao de variaveis ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Local aPerg := {}
Local aHelp := {}
Private oReport := Nil
Private oSecCab := Nil
Private cPerg := PadR ("RCOMR01", Len (SX1->X1_GRUPO))
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³VALIDA SX1 ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Static Function ValidPerg( cPerg, cBase )
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Array com os help das perguntas (aHelp) ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
// aHelp [1] = Ordem da pergunta
// aHelp [2] = Help a ser exibido
AADD( aHelp,{'01',{" Base anomes? "} })
AADD( aHelp,{'02',{" Codigo produtor inicial? "} })
AADD( aHelp,{'03',{" Codigo produtor Final? "} })
//AADD( aHelp,{'04',{" Loja do produtor? "} })
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Array com as perguntas (aPerg) ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
AADD( aPerg, {'01','Base AnoMês ?' ,'' ,'','mv_ch1','C',06,0, ,'S','','MV_PAR01','','','','','',cBase,'' ,'','S','',''})
AADD( aPerg, {'02','Produtor de ?' ,'' ,'','mv_ch2','C',06,0, ,'G','','MV_PAR02','','','','','','','SA2' ,'','S','',''})
AADD( aPerg, {'03','Produtor até ?' ,'' ,'','mv_ch3','C',06,0, ,'G','','MV_PAR03','','','','','','','SA2' ,'','S','',''})
AADD( aPerg, {'04','Loja Produtor de ?' ,'' ,'','mv_ch4','C',02,0, ,'G','','MV_PAR04','','','','','','','' ,'','S','',''})
AjustaSX1( cPerg, aPerg, aHelp )
Return NIL
Static Function AjustaSX1( cPerg, aPerg, aHelp )
Local aArea := GetArea()
Local aCpoPerg := {}
Local nX := 0
Local nY := 0
// DEFINE ESTRUTUA DO ARRAY DAS PERGUNTAS COM AS PRINCIPAIS INFORMACOES
AADD( aCpoPerg, 'X1_ORDEM' ) // 01 = Ordem da Pergunta
AADD( aCpoPerg, 'X1_PERGUNT' ) // 02 = Descricao Portugues
AADD( aCpoPerg, 'X1_PERSPA' ) // 03 = Descrucai Espanhol
AADD( aCpoPerg, 'X1_PERENG' ) // 04 = Descricao Ingles
AADD( aCpoPerg, 'X1_VARIAVL' ) // 05 = Variavel do item "mv_ch"
AADD( aCpoPerg, 'X1_TIPO' ) // 06 = Tipo do conteudo de resposta da pergunta
AADD( aCpoPerg, 'X1_TAMANHO' ) // 07 = Tamanho do campo para a resposta da pergunta
AADD( aCpoPerg, 'X1_DECIMAL' ) // 08 = Numero de casas decimais da resposta, se houver
AADD( aCpoPerg, 'X1_PRESEL' ) // 09 = Item do cambo selecionado. Parametro cGSC = "C"
AADD( aCpoPerg, 'X1_GSC' ) // 10 = Tipo pergunta "G" = Permite editar, "S" - Texto sem alteração e "C" = Selecao de Dados
AADD( aCpoPerg, 'X1_VALID' ) // 11 = Validação do item
AADD( aCpoPerg, 'X1_VAR01' ) // 12 = Nome do MV_PAR para a utilização nos programas
AADD( aCpoPerg, 'X1_DEF01' ) // 13 = Conteudo Portugues primeiro combo
AADD( aCpoPerg, 'X1_DEF02' ) // 14 = Conteudo Portugues segundo combo
AADD( aCpoPerg, 'X1_DEF03' ) // 15 = Conteudo Portugues terceiro combo
AADD( aCpoPerg, 'X1_DEF04' ) // 16 = Conteudo Portugues quarto combo
AADD( aCpoPerg, 'X1_DEF05' ) // 17 = Conteudo Portugues quinto combo
AADD( aCpoPerg, 'X1_CNT01' ) // 18 = Conteudo padrao da pergunta
AADD( aCpoPerg, 'X1_F3' ) // 19 = Nome da consulta F3
AADD( aCpoPerg, 'X1_PYME' ) // 20 = Se a pergunta estara disponivel no ambiente Pyme
AADD( aCpoPerg, 'X1_GRPSXG' ) // 21 = Código do grupo de campos SXG para atualizacao automatica
AADD( aCpoPerg, 'X1_HELP' ) // 22 = Conteudo do campo X1_HELP
AADD( aCpoPerg, 'X1_PICTURE' ) // 23 = Picture de formatação do conteudo
DBSelectArea( "SX1" )
DBSetOrder( 1 )
For nX := 1 To Len( aPerg )
IF !DBSeek( PADR(cPerg,10) + aPerg[nX][1] )
RecLock( "SX1", .T. ) // Inclui
Else
RecLock( "SX1", .F. ) // Altera
Endif
// Grava informacoes dos campos da SX1
For nY := 1 To Len( aPerg[nX] )
If aPerg[nX][nY] <> NIL
SX1->( &( aCpoPerg[nY] ) ) := aPerg[nX][nY]
EndIf
Next
SX1->X1_GRUPO := PADR(cPerg,10)
MsUnlock() // Libera Registro
// Verifica se campo possui Help
_nPosHelp := aScan(aHelp,{|x| x[1] == aPerg[nX][1]})
IF (_nPosHelp > 0)
cNome := "P."+TRIM(cPerg)+ aHelp[_nPosHelp][1]+"."
PutSX1Help(cNome,aHelp[_nPosHelp][2],{},{},.T.)
Else
// Apaga help ja existente.
cNome := "P."+TRIM(cPerg)+ aPerg[nX][1]+"."
PutSX1Help(cNome,{" "},{},{},.T.)
Endif
Next
// Apaga perguntas nao definidas no array
DBSEEK(cPerg,.T.)
DO WHILE SX1->(!Eof()) .And. SX1->X1_GRUPO == cPerg
IF ASCAN(aPerg,{|Y| Y[1] == SX1->X1_ORDEM}) == 0
Reclock("SX1", .F.)
SX1->(DBDELETE())
Msunlock()
ENDIF
SX1->(DBSKIP())
ENDDO
RestArea( aArea )
Return
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Criacao e apresentacao das perguntas ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
PutSx1(cPerg,"01","Código de?" ,'','',"mv_ch1","C",TamSx3 ("B1_COD")[1] ,0,,"G","","SB1","","","mv_par01","","","","","","","","","","","","","","","","")
PutSx1(cPerg,"02","Código ate?" ,'','',"mv_ch2","C",TamSx3 ("B1_COD")[1] ,0,,"G","","SB1","","","mv_par02","","","","","","","","","","","","","","","","")
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Definicoes/preparacao para impressao ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ReportDef()
oReport:PrintDialog()
Return Nil
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ReportDef ºAutor ³ Vinícius Moreira º Data ³ 12/11/2013 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Definição da estrutura do relatório. º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function ReportDef()
oReport := TReport():New("RCOMR01","Cadastro de Produtos",cPerg,{|oReport| PrintReport(oReport)},"Impressão de cadastro de produtos em TReport simples.")
oReport:SetLandscape(.T.)
oSecCab := TRSection():New( oReport , "Produtos", {"QRY"} )
TRCell():New( oSecCab, "B1_COD" , "QRY")
TRCell():New( oSecCab, "B1_DESC" , "QRY")
TRCell():New( oSecCab, "B1_TIPO" , "QRY")
TRCell():New( oSecCab, "B1_UM" , "QRY")
//TRFunction():New(/*Cell*/ ,/*cId*/,/*Function*/,/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,/*lEndSection*/,/*lEndReport*/,/*lEndPage*/,/*Section*/)
TRFunction():New(oSecCab:Cell("B1_COD"),/*cId*/,"COUNT" ,/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F. ,.T. ,.F. ,oSecCab)
Return Nil
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³RCOMR01 ºAutor ³ Vinícius Moreira º Data ³ 12/11/2013 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function PrintReport(oReport)
Local cQuery := ""
Pergunte(cPerg,.F.)
cQuery += " SELECT " + CRLF
cQuery += " SB1.B1_COD " + CRLF
cQuery += " ,SB1.B1_DESC " + CRLF
cQuery += " ,SB1.B1_TIPO " + CRLF
cQuery += " ,SB1.B1_UM " + CRLF
cQuery += " FROM " + RetSqlName("SB1") + " SB1 " + CRLF
cQuery += " WHERE SB1.B1_FILIAL = '" + xFilial ("SB1") + "' " + CRLF
cQuery += " AND SB1.B1_COD BETWEEN '" + mv_par01 + "' AND '" + mv_par02 + "' " + CRLF
cQuery += " AND SB1.D_E_L_E_T_ = ' ' " + CRLF
cQuery := ChangeQuery(cQuery)
If Select("QRY") > 0
Dbselectarea("QRY")
QRY->(DbClosearea())
EndIf
TcQuery cQuery New Alias "QRY"
oSecCab:BeginQuery()
oSecCab:EndQuery({{"QRY"},cQuery})
oSecCab:Print()
Return Nil
Desde já agradeço !
Alias does note existe SX1.
me passaram uma static function de validação coloquei ela junto com o código antes de compilar e ainda permanece o mesmo erro. em anexo o print do erro e o modelo de relatório que estou usando peguei de um outro forum.
este é o modelo
±±ºUso ³ AcademiaERP º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function RCOMR01()
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Declaracao de variaveis ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Local aPerg := {}
Local aHelp := {}
Private oReport := Nil
Private oSecCab := Nil
Private cPerg := PadR ("RCOMR01", Len (SX1->X1_GRUPO))
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³VALIDA SX1 ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Static Function ValidPerg( cPerg, cBase )
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Array com os help das perguntas (aHelp) ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
// aHelp [1] = Ordem da pergunta
// aHelp [2] = Help a ser exibido
AADD( aHelp,{'01',{" Base anomes? "} })
AADD( aHelp,{'02',{" Codigo produtor inicial? "} })
AADD( aHelp,{'03',{" Codigo produtor Final? "} })
//AADD( aHelp,{'04',{" Loja do produtor? "} })
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Array com as perguntas (aPerg) ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
AADD( aPerg, {'01','Base AnoMês ?' ,'' ,'','mv_ch1','C',06,0, ,'S','','MV_PAR01','','','','','',cBase,'' ,'','S','',''})
AADD( aPerg, {'02','Produtor de ?' ,'' ,'','mv_ch2','C',06,0, ,'G','','MV_PAR02','','','','','','','SA2' ,'','S','',''})
AADD( aPerg, {'03','Produtor até ?' ,'' ,'','mv_ch3','C',06,0, ,'G','','MV_PAR03','','','','','','','SA2' ,'','S','',''})
AADD( aPerg, {'04','Loja Produtor de ?' ,'' ,'','mv_ch4','C',02,0, ,'G','','MV_PAR04','','','','','','','' ,'','S','',''})
AjustaSX1( cPerg, aPerg, aHelp )
Return NIL
Static Function AjustaSX1( cPerg, aPerg, aHelp )
Local aArea := GetArea()
Local aCpoPerg := {}
Local nX := 0
Local nY := 0
// DEFINE ESTRUTUA DO ARRAY DAS PERGUNTAS COM AS PRINCIPAIS INFORMACOES
AADD( aCpoPerg, 'X1_ORDEM' ) // 01 = Ordem da Pergunta
AADD( aCpoPerg, 'X1_PERGUNT' ) // 02 = Descricao Portugues
AADD( aCpoPerg, 'X1_PERSPA' ) // 03 = Descrucai Espanhol
AADD( aCpoPerg, 'X1_PERENG' ) // 04 = Descricao Ingles
AADD( aCpoPerg, 'X1_VARIAVL' ) // 05 = Variavel do item "mv_ch"
AADD( aCpoPerg, 'X1_TIPO' ) // 06 = Tipo do conteudo de resposta da pergunta
AADD( aCpoPerg, 'X1_TAMANHO' ) // 07 = Tamanho do campo para a resposta da pergunta
AADD( aCpoPerg, 'X1_DECIMAL' ) // 08 = Numero de casas decimais da resposta, se houver
AADD( aCpoPerg, 'X1_PRESEL' ) // 09 = Item do cambo selecionado. Parametro cGSC = "C"
AADD( aCpoPerg, 'X1_GSC' ) // 10 = Tipo pergunta "G" = Permite editar, "S" - Texto sem alteração e "C" = Selecao de Dados
AADD( aCpoPerg, 'X1_VALID' ) // 11 = Validação do item
AADD( aCpoPerg, 'X1_VAR01' ) // 12 = Nome do MV_PAR para a utilização nos programas
AADD( aCpoPerg, 'X1_DEF01' ) // 13 = Conteudo Portugues primeiro combo
AADD( aCpoPerg, 'X1_DEF02' ) // 14 = Conteudo Portugues segundo combo
AADD( aCpoPerg, 'X1_DEF03' ) // 15 = Conteudo Portugues terceiro combo
AADD( aCpoPerg, 'X1_DEF04' ) // 16 = Conteudo Portugues quarto combo
AADD( aCpoPerg, 'X1_DEF05' ) // 17 = Conteudo Portugues quinto combo
AADD( aCpoPerg, 'X1_CNT01' ) // 18 = Conteudo padrao da pergunta
AADD( aCpoPerg, 'X1_F3' ) // 19 = Nome da consulta F3
AADD( aCpoPerg, 'X1_PYME' ) // 20 = Se a pergunta estara disponivel no ambiente Pyme
AADD( aCpoPerg, 'X1_GRPSXG' ) // 21 = Código do grupo de campos SXG para atualizacao automatica
AADD( aCpoPerg, 'X1_HELP' ) // 22 = Conteudo do campo X1_HELP
AADD( aCpoPerg, 'X1_PICTURE' ) // 23 = Picture de formatação do conteudo
DBSelectArea( "SX1" )
DBSetOrder( 1 )
For nX := 1 To Len( aPerg )
IF !DBSeek( PADR(cPerg,10) + aPerg[nX][1] )
RecLock( "SX1", .T. ) // Inclui
Else
RecLock( "SX1", .F. ) // Altera
Endif
// Grava informacoes dos campos da SX1
For nY := 1 To Len( aPerg[nX] )
If aPerg[nX][nY] <> NIL
SX1->( &( aCpoPerg[nY] ) ) := aPerg[nX][nY]
EndIf
Next
SX1->X1_GRUPO := PADR(cPerg,10)
MsUnlock() // Libera Registro
// Verifica se campo possui Help
_nPosHelp := aScan(aHelp,{|x| x[1] == aPerg[nX][1]})
IF (_nPosHelp > 0)
cNome := "P."+TRIM(cPerg)+ aHelp[_nPosHelp][1]+"."
PutSX1Help(cNome,aHelp[_nPosHelp][2],{},{},.T.)
Else
// Apaga help ja existente.
cNome := "P."+TRIM(cPerg)+ aPerg[nX][1]+"."
PutSX1Help(cNome,{" "},{},{},.T.)
Endif
Next
// Apaga perguntas nao definidas no array
DBSEEK(cPerg,.T.)
DO WHILE SX1->(!Eof()) .And. SX1->X1_GRUPO == cPerg
IF ASCAN(aPerg,{|Y| Y[1] == SX1->X1_ORDEM}) == 0
Reclock("SX1", .F.)
SX1->(DBDELETE())
Msunlock()
ENDIF
SX1->(DBSKIP())
ENDDO
RestArea( aArea )
Return
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Criacao e apresentacao das perguntas ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
PutSx1(cPerg,"01","Código de?" ,'','',"mv_ch1","C",TamSx3 ("B1_COD")[1] ,0,,"G","","SB1","","","mv_par01","","","","","","","","","","","","","","","","")
PutSx1(cPerg,"02","Código ate?" ,'','',"mv_ch2","C",TamSx3 ("B1_COD")[1] ,0,,"G","","SB1","","","mv_par02","","","","","","","","","","","","","","","","")
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Definicoes/preparacao para impressao ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ReportDef()
oReport:PrintDialog()
Return Nil
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ReportDef ºAutor ³ Vinícius Moreira º Data ³ 12/11/2013 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Definição da estrutura do relatório. º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function ReportDef()
oReport := TReport():New("RCOMR01","Cadastro de Produtos",cPerg,{|oReport| PrintReport(oReport)},"Impressão de cadastro de produtos em TReport simples.")
oReport:SetLandscape(.T.)
oSecCab := TRSection():New( oReport , "Produtos", {"QRY"} )
TRCell():New( oSecCab, "B1_COD" , "QRY")
TRCell():New( oSecCab, "B1_DESC" , "QRY")
TRCell():New( oSecCab, "B1_TIPO" , "QRY")
TRCell():New( oSecCab, "B1_UM" , "QRY")
//TRFunction():New(/*Cell*/ ,/*cId*/,/*Function*/,/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,/*lEndSection*/,/*lEndReport*/,/*lEndPage*/,/*Section*/)
TRFunction():New(oSecCab:Cell("B1_COD"),/*cId*/,"COUNT" ,/*oBreak*/,/*cTitle*/,/*cPicture*/,/*uFormula*/,.F. ,.T. ,.F. ,oSecCab)
Return Nil
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³RCOMR01 ºAutor ³ Vinícius Moreira º Data ³ 12/11/2013 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function PrintReport(oReport)
Local cQuery := ""
Pergunte(cPerg,.F.)
cQuery += " SELECT " + CRLF
cQuery += " SB1.B1_COD " + CRLF
cQuery += " ,SB1.B1_DESC " + CRLF
cQuery += " ,SB1.B1_TIPO " + CRLF
cQuery += " ,SB1.B1_UM " + CRLF
cQuery += " FROM " + RetSqlName("SB1") + " SB1 " + CRLF
cQuery += " WHERE SB1.B1_FILIAL = '" + xFilial ("SB1") + "' " + CRLF
cQuery += " AND SB1.B1_COD BETWEEN '" + mv_par01 + "' AND '" + mv_par02 + "' " + CRLF
cQuery += " AND SB1.D_E_L_E_T_ = ' ' " + CRLF
cQuery := ChangeQuery(cQuery)
If Select("QRY") > 0
Dbselectarea("QRY")
QRY->(DbClosearea())
EndIf
TcQuery cQuery New Alias "QRY"
oSecCab:BeginQuery()
oSecCab:EndQuery({{"QRY"},cQuery})
oSecCab:Print()
Return Nil
Desde já agradeço !
Por favor Acessar ou Registrar para participar da conversa.
- manoelcarlosjunior
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 116
- Obrigados Recebidos: 0
10 anos 6 meses atrás #22656
por manoelcarlosjunior
Respondido por manoelcarlosjunior no tópico RELATORIO TRIPORT
Resolvidom, Galera simplesmente não poderia ter rodado o relatório direto do dev e sim só compilar. Chamei a função no protheus meu ou no cadastro de formulas e executou normalmente. Como disse estou começando !!Logo logo chegarei lá !!!
Por favor Acessar ou Registrar para participar da conversa.
Tempo para a criação da página:0.119 segundos