>Define Class bIRexGenerador As Session OlePublic > >DataSession = 2 && Private Session <pre> >PROCEDURE Generar > >PARAMETERS formatfile, outputfile,lclosefile,lsaveConfig,lAllowUserInteraction > SET DELETED ON > *!* CLEAR ALL > *!* RELEASE ALL > SET safety off > *SET EXCLUSIVE ON > SET EXCLUSIVE OFF > CLOSE ALL > > lcOldError = ON("ERROR") > runId=SYS(2015) > logId=0 > ON ERROR this.catchError() > #include EXCEL.H > [code] > >ENDPROC > >FUNCTION logs > LPARAMETERS x > IF ! ISNULL(oErr) AND TYPE("oErr") = "O" > IF !hayError > ErrorEncontrado = "Error"+STR(oErr.ErrorNo)+[ LineNo: ] + STR(oErr.LineNo) + [ Message: ] + oErr.Message +[ Procedure: ] + oErr.Procedure +[ Details: ] + oErr.Details + [ StackLevel: ] + STR(oErr.StackLevel) +[ LineContents: ] + oErr.LineContents +[ UserValue: ] + oErr.UserValue > ENDIF > ELSE > IF !hayError > ErrorEncontrado ="" > ENDIF > > ENDIF > > **INSERT INTO log VALUES (x, DATETIME(), linea,user, formatfile, outputfile, ErrorEncontrado) > INSERT INTO log VALUES (x, DATETIME(), fcRow,"Demo", formatfile, outputfile, ErrorEncontrado,RunId,LogId) > logId=LogId+1 > hayError=.F. > **? x > RETURN .t. > >ENDfunc > > >FUNCTION GetSheet > LPARAMETERS wbName,oXcel > Encontrado=.f. > FOR i=1 TO oXCEL.worksheets.Count > IF UPPER(oXcel.worksheets(i).Name) = UPPER(wbName) > Encontrado=.T. > RETURN oXcel.worksheets(i) > ENDIF > ENDFOR > oXcel.worksheets.ADD > xlSheet = oXcel.activesheet > xlSheet.NAME = wbName > > RETURN xlSheet >ENDfunc > >FUNCTION valor > LPARAMETERS x > retval="" > IF !ISNULL(x) > DO case > CASE TYPE("x")="C" > retval=x > CASE TYPE("x")="N" > retval=STR(x) > ENDCASE > ENDIF > RETURN retval >ENDfunc > >PROCEDURE CatchError > hayError=.t. > ErrorEncontrado = 'error #' + transform( error() ) + ': "' + message() + '"' + 'program: ' + Program( Program(-1)-1) + 'line #' + transform( lineno() ) + ": " + message(1) > =this.logs(errorencontrado) > RETURN >ENDPROC > >ENDDEFINE>