FoxPro/Visual FoxPro - Copiando tabla a CSV, perfecto, ...pero..

   
Vista:

Copiando tabla a CSV, perfecto, ...pero..

Publicado por DEVILSITO (311 intervenciones) el 17/07/2013 03:39:27
La instruccion: COPY TO archicsv TYPE CSV me genera un CSV cuyos campos estan encerrados por " (comilla doble) y a su vez estan separados por , (coma simple). Ademas como primera linea copia los nombres de los campos de la tabla.
Mis preguntas son:
-como cambiar la separacion de campos a punto y coma (;)
-como evitar que la primera linea no sea la de los nombres de los campos.

Desde ya, gracias
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

Copiando tabla a CSV, perfecto, ...pero..

Publicado por Mario marioea_pe@yahoo.com (4 intervenciones) el 12/08/2013 05:56:13
No se si te servira esto:
Es una rutina que la tengo en un commandbutton llamado "Importar Datos".....
---------------------------------------------------------------------------------------------------------

resp = Messagebox("Está seguro que el archivo a importar es tipo CSV y que los encabezados son dni y nombre, EN ESE ORDEN?", 4+32+0, "ATENCION !!!")
IF resp = 7 && No
WAIT WINDOW "No se realizó ningún proceso !!!" NOWAIT
RETURN
ENDIF
*
xfile = GETFILE("csv")
IF EMPTY(xfile)
WAIT WINDOW "No se realizó ningún proceso !!!" NOWAIT
RETURN
ENDIF
resp = Messagebox('Está seguro de importar el archivo ' + xfile + ' ?', 4+32+0, 'ATENCION !!!')
IF resp = 6 && Si
WAIT WINDOW "PROCESANDO....Un momento por favor...." NOWAIT
CREATE CURSOR cClientes (dni c(20), nombre c(45), cod_socio c(10), codigo c(9))
*
CREATE CURSOR cDesc (desc1 c(100), desc2 c(100), desc3 c(100)) && desc3 por si acaso hubieran 2 comas en el nombre....normalmente es 1 solo coma
APPEND FROM &xfile TYPE CSV
SELECT cDesc
GO TOP
DO whil !EOF()
xdni = LEFT(desc1,AT(";",desc1)-1)
xnombre = SUBSTR(desc1,AT(";",desc1)+1,LEN(ALLTRIM(desc1))-AT(";",desc1))
xnombre = xnombre + ", " + ALLTRIM(desc2) + ALLTRIM(desc3)
INSERT INTO cClientes (dni,nombre) VALUES (xdni,xnombre)
SKIP
endd
*
SELECT cClientes
REPLACE ALL dni WITH ALLTRIM(PADL(ALLTRIM(dni),8,"0")) && asegura los 8 digitos del dni rellenndo los ceros a la iq
GO TOP
DO whil !EOF()
*IF SEEK(cod_socio,"clientes","cod_socio") && Existe el socio. Solo se actualiza nombre y dni
IF SEEK(dni,"clientes","dni") && Existe el socio. Solo se actualiza nombre y dni
REPLACE clientes.nombre WITH nombre, clientes.cod_socio WITH dni && El COD_SOCIO sera a partir de ahora el DNI
ELSE && No existe el socio. Es nuevo. Hay que crear tambien su CODIGO de sistema
SELECT clientes
SET ORDER TO codigo
GO BOTTOM
IF val(codigo) = 999999999
USE IN cClientes
WAIT WINDOW 'Se ha superado el número máximo de Clientes permitido !!!' nowait
RETURN
ENDIF
FOR i = 1 to val(codigo)
IF !seek(padl(allt(str(i,10)),9,'0'), "clientes", "codigo")
EXIT
ENDIF
NEXT
APPEND BLANK
REPLACE codigo WITH padl(allt(str(i,10)),9,'0'), cod_socio WITH cClientes.dni, ;
nombre WITH cClientes.nombre, dni WITH cClientes.dni, tipo_socio WITH "01", ;
sexo with 'M', EstCiv with 'S'
SELECT cClientes
ENDIF
SKIP
endd
=TableUpdate(.f.,.t.,'clientes') && 3
IF USED("cDesc")
USE IN cDesc
ENDIF
IF USED("cClientes")
USE IN cClientes
ENDIF
SELECT clientes
SET ORDER TO nombre
GO TOP
thisform.Refresh
WAIT WINDOW " " NOWAIT
resp = Messagebox("Los Socios se actualizaron correctamente.", 0+64+0, "ATENCION")
ELSE
resp = Messagebox("No se realizó ningún proceso !!!", 0+64+0, "ATENCION")
ENDIF
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