Subir excel a cursor - campo fecha

233 views
Skip to first unread message

Samuel San Miguel

unread,
Mar 1, 2012, 9:56:15 AM3/1/12
to publice...@googlegroups.com
Hola Foro,
estoy subiendo información desde un excel que tiene fecha a un cursor de esta forma:

1. Grabo el excel como archivo CSV
2. Seteos :
    SET TALK ON
    SET EXACT ON
    SET CENTURY ON
    SET DATE TO BRITISH DMY
    Set Century to 19 Rollover 50

2. Cre mi cursor con los campos que necesito (aqui coloco el campo fecha d(8))
3. APPEND FROM 'cdlmaxi3.CSV' TYPE CSV
4. Browse

y noto que otros tipos de datos sube correctamente menos la fecha, por decir tengo:
01/02/2009
15/02/2009
17/02/2009
20/02/2009

y me suben asi:
01/02/2009
15/02/2009
17/02/2020
20/02/2020

y asi sucesivamente.

Alguna idea del error o que me falta setear?????

Saludos.



Douglas Sánchez Guillén

unread,
Mar 1, 2012, 10:00:46 AM3/1/12
to publice...@googlegroups.com
Hola cambia el formato de la columna personalizalo y aumentale un el año completo en excel antes de pasarlo a la tabla, ya me ha pasado esto tiene razon.

saludes

Samuel San Miguel

unread,
Mar 1, 2012, 10:06:00 AM3/1/12
to publice...@googlegroups.com
Hola Daniel,
en mi excel esta como FORMATO FECHA con 4 digitos del año (01/02/2009)
además cuando lo paso a CSV (porque no encuentro otra manera de pasarlo) para subirlo a cursor, el CSV esta guardando la fecha con 4 dígitos del año.
No veo la diferencia..

que seteos utilizas???

Samuel San Miguel

unread,
Mar 1, 2012, 10:10:55 AM3/1/12
to publice...@googlegroups.com
Daniel,
hice lo que mencionas y no funciona, le cambie el formato a Personalizado ddmmyyyy  y continua el error al subirlo a cursor.

Saludos.

Samuel San Miguel

unread,
Mar 1, 2012, 3:12:37 PM3/1/12
to publice...@googlegroups.com
y??? nada.

Carlos Boemo

unread,
Mar 1, 2012, 3:19:41 PM3/1/12
to publice...@googlegroups.com
Buenas Tardes...

Intenta con append from archivo.xls type xl5 . No lo conviertas a csv.

Samuel San Miguel

unread,
Mar 1, 2012, 4:49:56 PM3/1/12
to publice...@googlegroups.com
Hola
aquí el código para subir el excel, es mas cuando el type es xl5 se cuelga el vfox: copiarlo en un prg


SET TALK ON
SET EXACT ON
SET CENTURY ON
SET DATE TO BRITISH DMY
Set Century to 19 Rollover 50

*================================
* Importando información de excel
*================================
CREATE CURSOR INFOPREVIO ;
(DESCRIP C(100),ARTICULO C(8),CANTIREC N(15,2),SUCURSAL C(2),TIENDA C(2),ALMACEN C(2),NMOVIMI C(15),FECHA D(8),TIPOMOVI C(2),;
TDOCSOLI C(2),NDOCSOLI C(15),TIPOIS C(2),IMPTOTMN N(15,5),IMPTOTMO N(15,5),OBSERVA C(150),MONEDA C(2),CODSUCUR C(2),CODTIEN C(2),ESTADO C(2))
APPEND FROM 'cdlmaxi2009.xls' TYPE xl5

para probar con el archivo CSV
rremplazar por esta línea:  APPEND FROM 'cdlmaxi3.CSV' TYPE CSV
y notaran que sube mal las fechas ,, saludos

Gracias.
--
Samuel San Miguel Hernández
Analista Programador de Sistemas
Base Datos Oracle / SQL SERVER
Cel. 99125-4096 
ssan_m...@hotmail.com
sasa...@gmail.com

cdlmaxi2009.xls
cdlmaxi3.csv

Víctor Hugo Espínola Domínguez

unread,
Mar 1, 2012, 7:57:44 PM3/1/12
to publice...@googlegroups.com
Hola Samuel

Utiliza el siguiente truco: Defines en el cursor 3 columnas nuevas AAAA N(4), MM N(2), DD N(2) a continuación de FECHA. En tu planilla Excel también agregas las 3 columnas correspondientes con formato GENERAL y escribes las fórmulas AÑO(H2), MES(H2) y DIA(H2). Por supuesto debes copiar estas fórmulas en todas las filas.

El programa corregido quedaría así:
SET TALK ON
SET EXACT ON
*SET CENTURY ON
*SET DATE TO BRITISH DMY
*Set Century to 19 Rollover 50

*================================
* Importando información de excel
*================================
CREATE CURSOR INFOPREVIO ;
(DESCRIP C(100),ARTICULO C(8),CANTIREC N(15,2),SUCURSAL C(2),TIENDA C(2),ALMACEN C(2),NMOVIMI C(15),FECHA D(8), aaaa n(4), mm n(2), dd n(2),TIPOMOVI C(2),;
TDOCSOLI C(2),NDOCSOLI C(15),TIPOIS C(2),IMPTOTMN N(15,5),IMPTOTMO N(15,5),OBSERVA C(150),MONEDA C(2),CODSUCUR C(2),CODTIEN C(2),ESTADO C(2))
APPEND FROM 'cdlmax_5.xls' TYPE xl5
*APPEND FROM 'cdlmaxi2009vhe.CSV' TYPE CSV
BROWSE

Para reconstruir la fecha: REPLACE ALL Fecha WITH DATE( aaaa, mm, dd )

Adjunto la planilla cdlmax_5.xls

Saludos, Víctor
cdlmax_5.xls

Gorka

unread,
Mar 2, 2012, 1:39:07 AM3/2/12
to Comunidad de Visual Foxpro en Español
Hola Samuel
No se si te vale, pero prueba esto...


SET TALK ON
SET EXACT ON
SET POINT TO "."
SET CENTURY ON
SET DATE TO BRITISH DMY
Set Century to 19 Rollover 50
*================================
* Importando información de excel
*================================
CREATE CURSOR INFOPREVIO (DESCRIP C(100),ARTICULO C(8),CANTIREC
N(15,2),SUCURSAL C(2),TIENDA C(2),ALMACEN C(2),NMOVIMI C(15),FECHAC
c(12),TIPOMOVI C(2),TDOCSOLI C(2),NDOCSOLI C(15),TIPOIS C(2),IMPTOTMN
N(15,5),IMPTOTMO N(15,5),OBSERVA C(150),MONEDA C(2),CODSUCUR
C(2),CODTIEN C(2),ESTADO C(2),fecha d)
APPEND FROM ('cdlmaxi3.CSV') TYPE CSV
replace ALL fecha WITH CTOD(fechac)

Como puedes ver he cambiado el campo fecha por fechac como Char(12) y
he añadido el campo fecha al final como Date.
Finalmente después del APPEND hago un replace all y tengo el campo
fecha correcto
No se si en tu caso ya te pasaba pero con mi configuración de SET
POINT no me cargaba los decimales de los campos IMP_TOT_MN y
IMP_TOT_MO por eso he añadido el SET POINT.
Espero que te sirva
Saludos
Gorka





On 1 mar, 22:49, Samuel San Miguel <sasam...@gmail.com> wrote:
> Hola
> aquí el código para subir el excel, es mas cuando el type es xl5 se cuelga
> el vfox: copiarlo en un prg
>
> SET TALK ON
> SET EXACT ON
> SET CENTURY ON
> SET DATE TO BRITISH DMY
> Set Century to 19 Rollover 50
>
> *================================
> * Importando información de excel
> *================================
> CREATE CURSOR INFOPREVIO ;
> (DESCRIP C(100),ARTICULO C(8),CANTIREC N(15,2),SUCURSAL C(2),TIENDA
> C(2),ALMACEN C(2),NMOVIMI C(15),FECHA D(8),TIPOMOVI C(2),;
> TDOCSOLI C(2),NDOCSOLI C(15),TIPOIS C(2),IMPTOTMN N(15,5),IMPTOTMO
> N(15,5),OBSERVA C(150),MONEDA C(2),CODSUCUR C(2),CODTIEN C(2),ESTADO C(2))
> APPEND FROM 'cdlmaxi2009.xls' TYPE xl5
>
> para probar con el archivo CSV
> rremplazar por esta línea:  APPEND FROM 'cdlmaxi3.CSV' TYPE CSV
> y notaran que sube mal las fechas ,, saludos
>
> Gracias.
>
> El 1 de marzo de 2012 15:12, Samuel San Miguel <sasam...@gmail.com>escribió:
>
>
>
>
>
>
>
>
>
> > y??? nada.
>
> > El jueves 1 de marzo de 2012 10:10:55 UTC-5, Samuel San Miguel escribió:
>
> >> Daniel,
> >> hice lo que mencionas y no funciona, le cambie el formato a Personalizado
> >> ddmmyyyy  y continua el error al subirlo a cursor.
>
> >> Saludos.
>
> >> El jueves 1 de marzo de 2012 10:06:00 UTC-5, Samuel San Miguel escribió:
>
> >>> Hola Daniel,
> >>> en mi excel esta como FORMATO FECHA con 4 digitos del año (01/02/2009)
> >>> además cuando lo paso a CSV (porque no encuentro otra manera de pasarlo)
> >>> para subirlo a cursor, el CSV esta guardando la fecha con 4 dígitos del año.
> >>> No veo la diferencia..
>
> >>> que seteos utilizas???
>
> >>> El jueves 1 de marzo de 2012 10:00:46 UTC-5, DSANCHEZ escribió:
>
> >>>> Hola cambia el formato de la columna personalizalo y aumentale un el
> >>>> año completo en excel antes de pasarlo a la tabla, ya me ha pasado esto
> >>>> tiene razon.
>
> >>>> saludes
>
> --
> *Samuel San Miguel Hernández*
> Analista Programador de Sistemas
> Base Datos Oracle / SQL SERVER
> Cel. 99125-4096  *
> *ssan_migu...@hotmail.com
> sasam...@gmail.com
>
>  cdlmaxi2009.xls
> 763 KVerDescargar
>
>  cdlmaxi3.csv
> 457 KVerDescargar

Samuel San Miguel

unread,
Mar 2, 2012, 9:27:16 AM3/2/12
to publice...@googlegroups.com
Gracias Gorka, funcionó pero ya veo que no existe forma de pasar una fecha directamente desde excel o csv.
Me quedan dudas aún.
Igual todo ok.

Saludos.

Julio Cesar Vente Ruiz

unread,
Mar 17, 2012, 7:57:15 AM3/17/12
to publice...@googlegroups.com
Hola en tu cursor, el campo donde guardas la fecha no lo pongas de tipo date, ponlo caracter de 10, si en definitiva necesitas este campo de tipo date lo que puedes hacer es crear otra columna de tipo date y copiar alli los valores de la columna inicial que esta con formato caracter.

Y pase por lo mismo hace unos meses y la unica solucion efectiva que encontre fue esta.

Saludos..
--


Julio Cesar Vente Ruiz
Reply all
Reply to author
Forward
0 new messages