//INCLUDES #INCLUDE 'PROTHEUS.CH' //DEFINES #DEFINE ENTER CHR(13)+ CHR(10) //FUNÇÃO PRINCIPAL USER FUNCTION RELSA1() Private cPerg := "RELSA1" Private cNextAlias := GetNextAlias() ValidPerg (cPerg) If Pergunte (cPerg, .T.) oReport := ReportDef() oReport:nDevice := 4 //nDevice --- Tipo de impressão selecionado. Opções: 1-Arquivo,2-Impressora,3-email,4-Planilha e 5-Html. oReport := PrintDialog() Endif RETURN //SEÇÃO DE APRESENTAÇÃO DOS DADOS static function ReportDef() oReport := TReport():New(cPerg,"Relatorio de clientes por estado",cPerg,{|oReport|ReportPrint(oReport)},"impressao de relatorios de cliente por estado ") oReport:SetLandscape(.T.) oReport:HideParamPage() oSection := TRSection():New(oReport,OEMToAnsi("Relatorio de cliente por estado"), {"SA1"}) TRCell():New(oSection,"A1_COD",cNextAlias,"Codigo", , , , ) TRCell():New(oSection,"A1_NOME",cNextAlias,"Nome", , , , ) TRCell():New(oSection,"Pessoa",cNextAlias,"Pessoa", ,10, , ) TRCell():New(oSection,"A1_END",cNextAlias,"Endereço", , , , ) TRCell():New(oSection,"A1_BAIRRO",cNextAlias,"Bairro", , , , ) TRCell():New(oSection,"A1_EST",cNextAlias,"Estado", , , , ) TRCell():New(oSection,"A1_CEP",cNextAlias,"Cep", , , , ) TRCell():New(oSection,"A1_MUN",cNextAlias,"Municipio", , , , ) return oReport //FUNÇÃO DE CONSULTA Static Function ReportPrint(oReport) Local oSection := oReport:Section(1) Local cQuery := "" Local nCount := 0 cQuery += "SELECT " + ENTER cQuery += "A1_COD," + ENTER cQuery += "A1_NOME," + ENTER cQuery += "CASE WHEN A1_PESSOA = 'J' THEN 'Jurídica' Else 'Fisica' END PESSOA," + ENTER cQuery += "A1_END," + ENTER cQuery += "A1_BAIRRO," + ENTER cQuery += "A1_EST," + ENTER cQuery += "A1_CEP," + ENTER cQuery += "A1_MUN" + ENTER cQuery += "FROM " + RETSQLNAME("SA1") + " WHERE D_E_L_E_T_ = '' " + ENTER If !EMPTY(MV_PAR01) cQuery += " AND A1_EST = '"+ MV_PAR01 + "' " + ENTER ENDIF cQuery += "ORDER BY A1_EST, A1_COD " DbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cNextAlias) Count to nCount (cNextAlias)->(dbgotop()) oReport:SetMeter(nCount) oSection:Init() While !(cNextAlias)->(eof()) oReport:IncMeter() oSection:Printline() If oReport:Cancel() Exit EndIf (cNextAlias)->(DbSkip()) Enddo RETURN //FUNÇÃO DE PERGUNTAS Static Function ValidPerg(cPerg) Local aAlias := GetArea() Local aRegs := {} Local i,j cPerg := PadR(cPerg, Len(SX1 ->X1_GRUPO)," ") AADD(aRegs,{cPerg,"01","Estado","","","mv_ch1","C",2,0,0,"G","",MV_PAR01,,"","","","","","","","","","","","","","","","","","","","","","","","","12","","","","",""}) DbSelectArea("SX1") SX1->(DbSetOrder(1)) For i := 1 to LEN(aRegs) If !DbSeek(cPerg+aRegs[i,2])//faz a busca na tabela RecLock("SX1",.T.) For j := 1 to Fcount () FieldPut(j,aRegs[i,j]) Next MsUnlock() Endif Next RestArea(aAlias) Return