no existe la variable de instancia NAME
Posted: Tue Sep 29, 2020 11:47 pm
Saludos amigos,
Como siempre, esperando se encuentren todos bien de salud.
Tengo este error que me sale a veces cuando mis clientes quieren sacar un reporte en excel, no logo identificar bajo que circunstancias específicas se genera, pero lo encuentro cuando reviso la carpeta de trabajo y lo encuentro en el errorlog.
Si alguien tiene una idea de como evitarlo le agradeceré su ayuda.
Reciban un cordial saludo.
Como siempre, esperando se encuentren todos bien de salud.
Tengo este error que me sale a veces cuando mis clientes quieren sacar un reporte en excel, no logo identificar bajo que circunstancias específicas se genera, pero lo encuentro cuando reviso la carpeta de trabajo y lo encuentro en el errorlog.
Y esta es mi rutina, es un código sencillo que uso para pasar una .DBF a .EXCEL pero no logro entender cual es la razón por la que en ocasiones me genera el error mencionado:Date:29/09/20 Time: 12:22:47
Error BASE/1005 No existe la variable de instancia: NAME
Called from _NAME(0)
Called from DBF_A_XLS(53)
Called from REPODINAMIKACEPTAR(249)
Called from (b)REPOVENTADINAMICA(76)
Called from _DOCONTROLEVENTPROCEDURE(6056)
Called from EVENTS(1801)
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(5717)
Called from REPOVENTADINAMICA(86)
Called from REPOALLEJECUTAR(174)
Called from (b)REPORTES(75)
Called from EVENTS(3244)
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(5717)
Called from REPORTES(80)
Called from ABREMODULO(460)
Called from EJECUTAOPCION(342)
Called from (b)MAIN(162)
Called from _DOCONTROLEVENTPROCEDURE(6056)
Called from EVENTS(1816)
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(5717)
Called from MAIN(212)
Code: Select all
FUNC Dbf_A_Xls( cLaDbf , cTitulo , aTitulos , aCamposBase , aFormatos , aAlineacion , aColores , aTotaliza , nQueHoja )
LOCAL aTotal
IF ! SYS_OFFICE
MsgInfo('Usted no tiene instalado Microsoft Excel en esta computadora.')
RETURN
ENDIF
***Solo en MS office XP
IF nQueHoja = NIL
oExcel := CreateObject( "Excel.Application" ) // HMG 3
if Ole2TxtError() != "S_OK"
MsgStop("Excel no esta disponible en esta computadora - Error "+Ole2TxtError(), "ATENCION")
return nil
endif
oExcel:DisplayAlerts := 0
oWorkBook := oExcel:WorkBooks:Add()
oHoja := oExcel:ActiveSheet
ELSE
IF nQueHoja = 1
oExcel := CreateObject( "Excel.Application" ) // HMG 3
if Ole2TxtError() != "S_OK"
MsgStop("Excel no esta disponible en esta computadora - Error "+Ole2TxtError(), "ATENCION")
return nil
endif
oExcel:DisplayAlerts := 0
oWorkBook := oExcel:WorkBooks:Add()
oHoja := oExcel:ActiveSheet
ELSE
oExcel:Sheets(nQueHoja):Select()
oHoja := oExcel:ActiveSheet
ENDIF
ENDIF
// Prepara el array para las columnas totalizadas.
aTotal := ARRAY( LEN(aCamposBase) )
AFILL( aTotal , 0 )
// Se setea el tipo y el tamaño de letra de las hojas
oHoja:Cells:Font:Name := "Arial" //<- EL ERROR SE GENERA AQUI ESTA ES LA LINEA 53
oHoja:Cells:Font:Size := 9
// Formatear las columnas
IF ! aFormatos = NIL
FOR nCol = 1 TO LEN( aFormatos )
oHoja:Columns( nCol ):NumberFormat := aFormatos[nCol]
NEXT
ENDIF
// Colorear las columnas
IF ! aColores = NIL
FOR nCol = 1 TO LEN( aColores )
IF VALTYPE(aColores[nCol]) = 'A'
oHoja:Columns( nCol ):Font:Color := RGB(aColores[nCol,1],aColores[nCol,2],aColores[nCol,3])
ENDIF
NEXT
ENDIF
// Alinear las columnas
IF ! aAlineacion = NIL
FOR nCol = 1 TO LEN( aAlineacion )
DO CASE
CASE aAlineacion[nCol] = 'I'
oHoja:Columns( nCol ):HorizontalAlignment := -4131
CASE aAlineacion[nCol] = 'C'
oHoja:Columns( nCol ):HorizontalAlignment := -4108
CASE aAlineacion[nCol] = 'D'
oHoja:Columns( nCol ):HorizontalAlignment := -4152
ENDCASE
NEXT
ENDIF
// ........................................................
// Carga de los titulos de los campos
nLin := 2
FOR nCol := 1 to Len( aTitulos )
oHoja:Cells( nLin, nCol ):VALUE := aTitulos[ nCol ]
NEXT
// ........................................................
// Carga Valores de la Base en la Planilla
SELE &cLaDbf
GOTO TOP
nRow := 3
DO WHILE ! EOF()
FOR nCol = 1 to Len( aCamposBase )
cCampo := aCamposBase[ nCol ]
vCampo := &cCampo
IF VALTYPE( vCampo ) = 'C'
vCampo := RTRIM(vCampo)
ENDIF
oHoja:Cells( nRow, nCol ):Value := vCampo
IF ! aTotaliza = NIL
IF aTotaliza[nCol] = .T.
aTotal[nCol] := aTotal[nCol] + vCampo
ENDIF
ENDIF
NEXT
nRow++
SKIP
ENDDO
cRango := "A3:"+XlsColName( LEN(aTitulos) , nRow )
oHoja:Range( cRango ):Borders:LineStyle := 1
// Totaliza las columnas
IF ! aTotaliza = NIL
FOR nCol = 1 to LEN( aCamposBase )
IF aTotaliza[nCol] = .T.
oHoja:Cells( nRow, nCol ):Value := aTotal[nCol]
oHoja:Cells( nRow, nCol ):Font:Bold := .T.
oHoja:Cells( nRow, nCol ):Interior:Color := RGB( 255 , 215 , 0 )
oHoja:Cells( nRow, nCol ):Borders(7):LineStyle := 1 // Left
oHoja:Cells( nRow, nCol ):Borders(8):LineStyle := 1 // Top
oHoja:Cells( nRow, nCol ):Borders(9):LineStyle := 1 // Bottom
oHoja:Cells( nRow, nCol ):Borders(10):LineStyle := 1 // Right
ENDIF
NEXT
ENDIF
// ........................................................
// Ajusta Anchos de Columnas
FOR nCol:=1 TO Len( aCamposBase )
oHoja:Columns( nCol ):AutoFit()
NEXT
// ........................................................
// Formatea las titulos de los campos - se pone al final pq estan afectados
// por la alineacion de columnas hecha arriba y los titulos siempre serán centrados.
cRango := CHR(64+1)+LTRIM(STR(nLIN))+":"+XlsColName(LEN(aTitulos),nLIN)
oHoja:Range( cRango ):Font:Bold := .T.
oHoja:Range( cRango ):Interior:ColorIndex := 36 //sombrear celdas
oHoja:Range( cRango ):Borders:LineStyle := 1 // grillado
oHoja:Range( cRango ):HorizontalAlignment := -4108 // centrado
// ........................................................
// Escribe el encabezado del reporte en la primera fila
// Se coloca aca al final para que el AUTOFIT no se ajuste al ancho del titulo del reporte.
oHoja:Cells( 1 , 2 ):VALUE := cTitulo
oHoja:Cells( 1 , 2 ):HorizontalAlignment := -4131 // izquierda
// Congela las 2 primeras filas
oHoja:Cells( 3 , 1 ):Select()
oExcel:Application:ActiveWindow:FreezePanes := .T.
IF nQueHoja = NIL
oExcel:Visible := .T.
ENDIF
RETURN NIL
Reciban un cordial saludo.