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='" + oBook:Cells( nRow, 1 ):Value + "', "
cSql += "rep_num_reporte=" + ClipValue2SQL( oBook:Cells( nRow, 2 ):Value ) + ", "
cSql += "rep_equipo_cliente=" + ClipValue2SQL( oBook:Cells( nRow, 3 ):Value ) + ", "
// ojo - esta columna esta llegando de tipo numerica
cSql += "rep_num_serial=" + ClipValue2SQL( SUBST( cValToChar( oBook:Cells( nRow, 4 ):Value ), 1, 10 ) ) + ", " // 18/12/2014
//
cSql += "rep_num_llamada=" + ClipValue2SQL( oBook:Cells( nRow, 5 ):Value ) + ", "
cSql += "rep_preventivo=" + ClipValue2SQL( 1 ) + ", " // SIEMPRE ES PREVENTIVO - COL.6 DE EXCEL
//
cSql += "rep_tiempo_viaje_inicio=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 7 ):Value, 1, 5 ) ) + ", "
cSql += "rep_tiempo_viaje_fin=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 7 ):Value, 7, 5 ) ) + ", "
//
cSql += "rep_tiempo_espera_inicio=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 8 ):Value, 1, 5 ) ) + ", "
cSql += "rep_tiempo_espera_fin=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 8 ):Value, 7, 5 ) ) + ", "
//
cSql += "rep_tiempo_rep_inicio=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 9 ):Value, 1, 5 ) ) + ", "
cSql += "rep_tiempo_rep_fin=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 9 ):Value, 7, 5 ) ) + ", "
//
cSql += "rep_localidad=" + ClipValue2SQL( AllTrim( oBook:Cells( nRow, 10 ):Value ) +; // COL.10 y 11
", " + AllTrim( oBook:Cells( nRow, 11 ):Value ) ) + ", "
cSql += "rep_estado=" + ClipValue2SQL( AllTrim( oBook:Cells( nRow, 11 ):Value ) ) + ", " // 05/01/2015
cSql += "rep_codi_ingeniero=" + ClipValue2SQL( oBook:Cells( nRow, 12 ):Value ) + ", "
//
IF LEN( oBook:Cells( nRow, 13 ):Value ) <= 50 // DESDE 1-50
cSql += "rep_observa1=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 13 ):Value ,;
1, Len( oBook:Cells( nRow, 13 ):Value ) ) ) + ", "
ELSE
cSql += "rep_observa1=" + ClipValue2SQL( 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( SUBST( oBook:Cells( nRow, 13 ):Value ,;
51, Len( oBook:Cells( nRow, 13 ):Value ) ) ) + ", "
ELSE // DESDE 111-170
cSql += "rep_observa2=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 13 ):Value, 51, 110 ) ) + ", "
cSql += "rep_observa3=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 13 ):Value ,;
111, Len( oBook:Cells( nRow, 13 ):Value ) ) ) + ", "
ENDIF
//
cSql += "rep_np1=" + ClipValue2SQL( IF( Len( cValToChar( oBook:Cells( nRow, 14 ):Value ) ) > 0 ,;
SUBST( cValToChar( oBook:Cells( nRow, 14 ):Value ), 1, 12 ), ) ) + ", "
cSql += "rep_np2=" + ClipValue2SQL( IF( Len( cValToChar( oBook:Cells( nRow, 15 ):Value ) ) > 0 ,;
SUBST( cValToChar( oBook:Cells( nRow, 15 ):Value ), 1, 12 ), ) ) + ", "
//
*** COL 16 - FECHA DE IMPRESION
cSql += "rep_fch_impresion='" + oBook:Cells( nRow, 16 ):Value + "', "
*** COL 17 - TIPO DE ZONA
cSql += "rep_tipo_zona='" + oBook:Cells( nRow, 17 ):Value + "', "
*** COL 18 - SERVICIO
cSql += "rep_servicio='" + oBook:Cells( nRow, 18 ):Value + "', "
*** COL 19 - TARIFA
cSql += "rep_tarifa=" + ClipValue2SQL( oBook:Cells( nRow, 19 ):Value ) + ", "
//
cSql += "rep_fch_emision=" + ClipValue2SQL( Date() ) + ","
// AUDITORIA
cSql += "usuario=" + ClipValue2SQL( "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