PROCEDURE excel_tabla( oMeter, oText, oDlg, lEnd, cFileXls )
LOCAL oExcel, oBook, nRows, nCols, nCol, nRow, oError, cSql
oExcel := TOleAuto():New( "Excel.Application" ) // ACTIVANDO EXCEL
oExcel:Workbooks:Open( cFileXls ) // ABRO EL ARCHIVO SELECCIONADO
oBook := oExcel:Get( "ActiveSheet" ) // ACTIVO HOJA EXCEL
nRows := oBook:UsedRange:Rows:Count() // CANTIDAD LINEAS EXCEL INCLUYENDO LA LINEA 1 QUE ES LA CABECERA
nCols := oBook:UsedRange:Columns:Count() // CANTIDAD COLUMNAS EXCEL
oMeter:nTotal = nRows // PASO AL METER TOTAL DE LINEAS
FOR nRow = 2 TO nRows // CARGANDO DE EXCEL TABLA REPORTES
cSql := "INSERT INTO servicios_reportes SET "
cSql += "rep_nombre_cliente=" + ClipValue2SQL( Val2Escape( oBook:Cells( nRow, 1 ):Value ) ) + ","
cSql += "rep_num_reporte=" + ClipValue2SQL( oBook:Cells( nRow, 2 ):Value ) + ","
cSql += "rep_equipo_cliente=" + ClipValue2SQL( Val2Escape( oBook:Cells( nRow, 3 ):Value ) ) + ","
cSql += "rep_num_serial=" + ClipValue2SQL( Val2Escape( SUBST( cValToChar( oBook:Cells( nRow, 4 ):Value ), 1, 10 ) ) ) + ","
cSql += "rep_num_llamada=" + ClipValue2SQL( oBook:Cells( nRow, 5 ):Value ) + ","
cSql += "rep_preventivo=" + ClipValue2SQL( 1 ) + "," // SIEMPRE ES PREVENTIVO
//
cSql += "rep_tiempo_viaje_inicio=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 7 ):Value, 1, 5 ) ) ) + ","
cSql += "rep_tiempo_viaje_fin=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 7 ):Value, 7, 5 ) ) ) + ","
//
cSql += "rep_tiempo_espera_inicio=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 8 ):Value, 1, 5 ) ) ) + ","
cSql += "rep_tiempo_espera_fin=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 8 ):Value, 7, 5 ) ) ) + ","
//
cSql += "rep_tiempo_rep_inicio=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 9 ):Value, 1, 5 ) ) ) + ","
cSql += "rep_tiempo_rep_fin=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 9 ):Value, 7, 5 ) ) ) + ","
//
cSql += "rep_localidad=" + ClipValue2SQL( Val2Escape( AllTrim( oBook:Cells( nRow, 10 ):Value ) +;
", " + AllTrim( oBook:Cells( nRow, 11 ):Value ) ) ) + ","
cSql += "rep_codi_ingeniero=" + ClipValue2SQL( Val2Escape( oBook:Cells( nRow, 12 ):Value ) ) + ","
//
IF LEN( oBook:Cells( nRow, 13 ):Value ) <= 50 // DESDE 1-50
cSql += "rep_observa1=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 13 ):Value, 1, Len( oBook:Cells( nRow, 13 ):Value ) ) ) ) + ","
ELSE
cSql += "rep_observa1=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 13 ):Value, 1, 50 ) ) ) + ","
ENDIF
IF LEN( oBook:Cells( nRow, 13 ):Value ) > 50 .and. LEN( oBook:Cells( nRow, 13 ):Value ) <= 110 // DESDE 51-110
cSql += "rep_observa2=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 13 ):Value, 51, Len( oBook:Cells( nRow, 13 ):Value ) ) ) ) + ","
ELSE // DESDE 111-170
cSql += "rep_observa2=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 13 ):Value, 51, 110 ) ) ) + ","
cSql += "rep_observa3=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 13 ):Value, 111, Len( oBook:Cells( nRow, 13 ):Value ) ) ) ) + ","
ENDIF
//
cSql += "rep_np1=" + ClipValue2SQL( Val2Escape( SUBST( cValToChar( oBook:Cells( nRow, 14 ):Value ), 1, 12 ) ) ) + ","
cSql += "rep_np2=" + ClipValue2SQL( Val2Escape( SUBST( cValToChar( oBook:Cells( nRow, 15 ):Value ), 1, 12 ) ) ) + ","
//
cSql += "rep_fch_emision=" + ClipValue2SQL( Date() ) + ","
// AUDITORIA
cSql += "usuario=" + ClipValue2SQL( Val2Escape( "00" ) ) + ","
cSql += "hora=" + ClipValue2SQL( time() ) + ","
cSql += "fchcrea=" + ClipValue2SQL( date() )
TRY
oDatos:oConex:Execute( cSql )
CATCH oError
MSGALERT( oError:Description + CRLF + ;
"Error Grabando en Tabla servicios_reportes, Sentencia" + CRLF + CRLF + ;
cSql, oDatos:cTitMsg )
END
oMeter:Set( nRow )
NEXT
// CERRANDO EXCEL
oExcel:WorkBooks:Close()
oExcel:Application:Quit()
oExcel:Quit()
oExcel := Nil
MsgInfo( cValToChar( nRows -1 ) + " Reportes Importados Correctamente", oDatos:cTitMsg )
RETURN