FoxPro/Visual FoxPro - Importacion, "Respete el formato de datos"

 
Vista:

Importacion, "Respete el formato de datos"

Publicado por Bekyna (294 intervenciones) el 09/09/2009 20:26:37
Utilizo esta función para importar un archivo de Excel a fox:

IMPORT FROM datos_verif_CS.xls TYPE XL5 SHEET ""

Y todo va bien, pero cuando empecé a trabajar con los datos me di cuenta que el formato de la fecha lo pone mm/dd/aa, ni utilizando esta instrucción me respeto el formato: SET DATE TO BRITISH, pero ese no es el mayor problema, tengo 2 campos de hora, en el momento que los importa los cambia a formato de fecha así 12/30/99 10, eso si es un gran problema, así que necesito saber como puedo hacer para que no se modifiquen el formato de los datos cuando los importo por este medio.
Gracias por las sugerencias.

Saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Importacion,

Publicado por Pablo (Argentina) (433 intervenciones) el 09/09/2009 23:00:26
Hola Bekyna, a ver si te puedo ayudar, aca abajo te paso un codigo que lo saque de portalfox.com que te puede servir, por ahi le tenes que agregar para leer los campos hora pero viendo como se hace con la fecha lo sabras hacer para la hora.
Igualmente al final del codigo te paso el link para que lo veas todo.

Anteriormente baje una rutina para mostrar el contenido de las celdas en excel. Modifique un poco el codigo de tal forma que teniendo una Hoja Excel donde la primera linea contiene los nombre de los campos de una tabla VFP y las siguientes los datos a importar.

La rutina modificada, lee el nombre de campo en la primera fila Y lo compara con la de la tabla existente PARA poder saber que tipo de datos es el esperado realizando las transformaciones requeridas.

(No recuerdo que publico el codigo original, asi es que disculpas al autor original)

**** Importar Masivo desde Excel
* Poner en Primera Fila los Nombres de Campo, los que se
* chequearan que coincidan en la tabla
* Modificado por Ludwig Corales M.
* 28/08/2009
CLEAR
xArchivo="C: empsanta_maría.xls"
xTabla="Planos" &&Tabla destino
IF USED("&xTabla") &&Verifica que no este en uso la tabla
SELECT("&xTabla")
USE
ENDIF
USE &xTabla IN 0

*-- Creo el objeto Excel
loExcel = CREATEOBJECT("Excel.Application")
WITH loExcel.APPLICATION
.VISIBLE = .F.
*-- Abro la planilla con datos
.Workbooks.OPEN("&xArchivo")
*-- Cantidad de columnas
lnCol = .ActiveSheet.UsedRange.COLUMNS.COUNT
*-- Cantidad de filas
* Se resta la Fila 1 donde estan los campos
lnFil = .ActiveSheet.UsedRange.ROWS.COUNT-1
*-- Recorro todas las celdas
** el Recorrido es columnas y luego filas
FOR lnJ = 2 TO lnFil
SELECT("&xTabla")
APPEND BLANK && se inserta el nuevo registro
FOR lnI = 1 TO lnCol
xCampo=.activesheet.cells(1,lnI).VALUE && Nombre del campo destino
xTipoCampo=TYPE(xCampo) && se obtiene de la tabla el tipo de campo
xValor=.activesheet.cells(lnJ,lnI).VALUE && Recupera el valor de la Celda en Excel
*? xcampo+": " && Muestra el nombre de campo
*?? xValor && Muestra el valor
DO CASE
CASE xTipoCampo="D" && si el campo es de fecha
IF ISNULL(xValor) &&Es fecha en blanco o nulo
REPLACE &xCampo WITH CTOD(" / / ") IN &xTabla
ELSE
REPLACE &xCampo WITH TTOD(xValor) IN &xTabla
ENDIF
CASE xTipoCampo="C"
IF VARTYPE(xValor)="N" && por si en excel el valor no es TEXT
REPLACE &xCampo WITH ALLTRIM(UPPER(STR(xValor))) IN &xTabla
ELSE
REPLACE &xCampo WITH xValor IN &xTabla
ENDIF
CASE xTipoCampo="N"
IF ISNULL(xValor)
REPLACE &xCampo WITH 0 IN &xTabla
ELSE
REPLACE &xCampo WITH xValor IN &xTabla
ENDIF

ENDCASE
ENDFOR
ENDFOR
*-- Cierro la planilla
.Workbooks.CLOSE
*-- Salgo de Excel
.QUIT
ENDWITH
RELEASE loExcel
SELECT("&xTabla")
BROWSE
**** Fin del Codigo

Este es el link:

http://www.portalfox.com/index.php?name=News&file=article&sid=2696

Suerte y avisame!!!!!!!!!!

Pablo ´- Argentina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar