Static Function PrintReport(oReport,cPerg,cAlias)
Local aTabelas := {}
Local aOrdem := {}
Local cFilter := ""
Local cOrdem := ""
Local cOpIn := ""
Local cAftFilter:= ""
Local nOrder := 0
Local oSection
AAdd( aOrdem, "TMP_DTIME, TMP_FIELD, TMP_USER" )
AAdd( aOrdem, "TMP_FIELD, TMP_USER, TMP_DTIME" )
AAdd( aOrdem, "TMP_FIELD, TMP_DTIME, TMP_USER" )
AAdd( aOrdem, "TMP_DTIME, TMP_USER, TMP_FIELD" )
AAdd( aOrdem, "TMP_USER, TMP_DTIME, TMP_FIELD" )
AAdd( aOrdem, "TMP_USER, TMP_FIELD, TMP_DTIME" )
AAdd( aOrdem, "TMP_PROGRAM, TMP_FIELD, TMP_USER" )
AAdd( aOrdem, "TMP_HOSTNAM, TMP_USER, TMP_DTIME" )
//Para criar a ordem por Operação ou Deleção, deve ser usado os campo OPERATI ou DELETE
//AAdd( aOrdem, "OPERATI, DELETE" )
MakeSqlExp(cPerg)
// Filtro de tabelas
aTabelas := { Upper( MV_PAR01 ), Upper( MV_PAR02 ) }
If !Empty(MV_PAR03)
cFilter += MV_PAR03 // String de filtro em sintaxe SQL
End
If !Empty(MV_PAR04)
if !Empty(cFilter)
cFilter += " AND "
end
cFilter += MV_PAR04 // String de filtro em sintaxe SQL
End
If !Empty(MV_PAR05)
if !Empty(cFilter)
cFilter += " AND "
end
cFilter += Upper( MV_PAR05 ) // String de filtro em sintaxe SQL
End
// Filtro de operação (inclusão, alteração e exclusão)
cOpIn := ""
if !Empty(cFilter)
cFilter += " AND "
end
If MV_PAR08 == 1 .Or. MV_PAR09 == 1 .Or. MV_PAR10 == 1
cOpIn := "( "
Else
cOpIn := "( OPERATI=' ' "
EndIf
If MV_PAR08 == 1
If "OPERATI" $ cOpIn
cOpIn += " OR "
EndIf
cOpIn += " OPERATI='I' "
EndIf
If MV_PAR09 == 1
If "OPERATI" $ cOpIn
cOpIn += " OR "
EndIf
cOpIn += " OPERATI='U' "
EndIf
If MV_PAR10 == 1
If "OPERATI" $ cOpIn
cOpIn += " OR "
EndIf
cOpIn += " OPERATI='X' OR OPERATI='D' "
EndIf
If !Empty( cOpIn )
cOpIn += " ) "
EndIf
cFilter += cOpIn
If !Empty( MV_PAR11 )
if !Empty(cFilter)
cFilter += " AND "
end
cFilter += MV_PAR11
EndIf
If MV_PAR12 == 2
cAftFilter += "TMP_OK<>'2' "
ElseIf MV_PAR12 == 3
cAftFilter += "TMP_OK='2' "
EndIf
oSection := oReport:Section( 1 )
nOrder := oSection:nOrder
// Definição da string de ordem baseado na escolha do usuário
cOrdem := aOrdem[ nOrder ]
oSection:nOrder := 0
// Chamada da API de consulta ao Embedded Audit Trail
FWMsgRun(,{|| cAlias := FwATTViewLog(aTabelas,cFilter,cOrdem,cAftFilter,MV_PAR06,MV_PAR07) } , , STR0035 ) // "Consultando banco de dados..."
oReport:Section(1):cAlias := cAlias
oReport:Section(1):Print()
Return