FoxPro/Visual FoxPro - ABRIR DBF (DBASE V) ERROR MDX VS CDX VFOX

 
Vista:
Imágen de perfil de Jorge
Val: 28
Ha aumentado 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

ABRIR DBF (DBASE V) ERROR MDX VS CDX VFOX

Publicado por Jorge (15 intervenciones) el 15/05/2019 00:17:28
SALUDOS COLEGAS VISUAL FOXPRO

LES TENGO UNA DUDA , ESTOY TRATANDO DE ABRIR POR PROGRAMACIÓN UNA TABLA DBF CON CASI 1,7 MILLONES DE REGISTROS, EN NOVELL :

use &mfileori noupdate alias fileori in select() && abro la tabla fmto lectura
sele fileori
copy file &mfileori to &mfiletemp && temporal en mi c:

pero me da el sgte error :

" NO SE ENCUENTRA ARCHIVO EXTRUCTURAL CDX"

que me recomiendan para abrir tabla sin estructura original que la liga al indice original de DBASE IV O V que es exencion MDX y así no tener que usar CDX en VISUAL FOXPRO , para trabajar con la tabla...
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
Imágen de perfil de Leonardo Daniel A.
Val: 1.115
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

ABRIR DBF (DBASE V) ERROR MDX VS CDX VFOX

Publicado por Leonardo Daniel A. (504 intervenciones) el 15/05/2019 03:42:07
y no has intentado hacer el COPY TO miTabla TYPE FOX2X
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

ABRIR DBF (DBASE V) ERROR MDX VS CDX VFOX

Publicado por Fidel José (657 intervenciones) el 15/05/2019 13:58:10
Puedes probar lo siguiente

use &mfileori noupdate alias fileori in select() && abro la tabla fmto lectura

SELECT * FROM FILEORI WHERE .T. INTO CURSOR curFileOri

SELECT curFileOri
COPY TO &mfiletemp
USE IN curFileOri

* Si esto funciona, puedes trabajar directamente con el cursor CURFILEORI o abrir la tabla temporal de &mFileTemp
* Si no funciona, muy probablemente tengas que eliminar el ìndice de la tabla original, para lo cual no la puedes abrir como NOUPDATE.
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
Imágen de perfil de Jorge
Val: 28
Ha aumentado 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

ABRIR DBF (DBASE V) ERROR MDX VS CDX VFOX

Publicado por Jorge (15 intervenciones) el 15/05/2019 22:41:00
Estimados
GRACIAS...
Al final lo soluicioné: de esta forma : desactive TABLEVALIDATE VALIDADOR DE TABLAS...!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
SET TABLEVALIDATE TO 0
 
 *   ....Proceso....
 * Elimino algun Archivo Indice Temporal CDX de Visual Foxpro, si se hubiese creado en NOVEL
 *
 * Extencion CDX si existiese EN NOVELL\SYS\..\*.CDX
 *
 * YA QUE CON EL SOLO HECHO DE ABRIR LA TABLA COMO LECTURA EN RED
 *          ....Y REVISANDO LOS APUNTES DE VFOX 9.0 en la Web , Vfox Crea el Cdx para poder abrir el archivo DBF CON
 *          SU FORMA EXTRUCTURAL ORIGINAL DE DVASE-V O DVASE-IV
 *
 * REVISA LAS PROPIEDADES DE LA TABLA Y CREA SU FORMA EXTRUCTURAL INDICES COMPUESTOS
 *  ...Y VALIDA QUE ESTE EL MDX SINO LO CREA...
 *
 * ASI QUE POR SEGURIDAD ELIMINO
 IF File(mfileCDX)
    DELETE FILE &mfileCDX
 ENDIF
 
 * ..LUEGO
 * COPIO DE LA RED (DBF/MDX ORIGINAL) A MI C:\CARGASQLFOX...\DATOS_DBASE
 *
 * Archivo Original Extencion DBF desde   ----> \novell..\*.dbf  - --->   c:\cargasqlfox\dbase_datos\*.dbf
 * me aseguro de borrar el anterior antes de crear
 *
 *
 IF File(mfiletemp)
    DELETE FILE &mfiletemp
 ENDIF
 WAIT WINDOW " Copiando DBF Original "+ALLTRIM(mfileori)+' a Pc Local en '+ALLTRIM(mfiletemp) NOWAIT 
 copy file &mfileori to &mfiletemp  && DBF
 
 *
 * Crea Tabla Para formato dbase de la red   ----------> \sys\cargasqlfox\datos_dbase\*.dbf
  IF File(mfilProticDat)
     DELETE FILE &mfilProticDat
  Endif
  copy file &mfileori to &mfilProticDat  &&
 * NO VA A IR EN PRODUCCION SOLO MIENTRAS TANTO...PARA VALIDAR COPIA
 *
 *
 *
 *Archivo Original Extencion DBF desde   ----> \SYS..\*.MDX  - --->   c:\cargasqlfox\dbase_datos\*.mdx
 *
 WAIT WINDOW " Copiando MDX Original "+ALLTRIM(mfileMDX)+' a Pc Local en '+ALLTRIM(mfileMDXcp) NOWAIT 
 IF File(mfileMDX)
    IF File(mfileMDXcp)
       DELETE FILE &mfileMDXcp
    ENDIF
    copy file &mfileMDX to &mfileMDXcp
 ENDIF
 *
 *
 *
 * ABRO TABLA COPIADA EN C: COMO TABLA ORIGINAL ( MAS SEGURO....Para trabajar con ella  ...)
 * CON EL FORMATO DBASE Y SU EXTRUCTURA EXCLUSIVA
 * Y VFOX AUTOMATICAMENTE ME REGENERA EL CDX CON LAS MISMA ETIQUETA DEL MDX QUE ME TRAJE,,,
 *
 *
 use &mfiletemp excl alias fileori in select()
 * use &mfileori noup alias fileori in select()
 sele fileori
 
 
 *
 * LUEGO CREO MI ARCH SALIDA PLANO.. EN MI C: Y
 * POSTERIORMENTE
 *
 * LO PUBLICO EN LA RED...
 *
 * set safe on
 use &mfiletemp alias filetemp EXCLUSIVE   && in select()
 sele filetemp
 set safe off
 WAIT WINDOW " Generando archivo txt en  "+ALLTRIM(mftemptxt) NOWAIT
 copy to &mftemptxt SDF
 
 WAIT WINDOW " Copiando txt a Destino en  "+ALLTRIM(mfiledest) NOWAIT
 copy file &mftemptxt to &mfiledest
 
SET TABLEVALIDATE TO 1
 ***
 * Y POR ULTIMO MI ARCHIVO TXT CON LA ESTRUCTURA DBF A SQLCHAR PARA SUBIRLO A SQL
 *
 do CreaestrucSqlServer
CLOSE ALL



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Procedure CreaestrucSqlServer
LOCAL ArchSalida,ARCH_FMT,NtotalReg
STORE 0 TO MtotalReg
STORE space(0) TO ArchSalida, ARCH_FMT
mftempstr = discoc()+'\cargasqlfox\'+alltrim(cargasqlfoxchile->archivo)+'.stt'
use &mftempstr alias filetemp in select()
Arch_fmt=CargaSqlFoxChile.aFmtProtic
ArchSalida=FCREATE(Arch_Fmt)
WAIT WINDOW 'Generando archivo FMT-SQL en   '+ALLTRIM(CargaSqlFoxChile.aFmtProtic) NOWAIT 
FPUTS(ArchSalida,'8.0')
sele filetemp
MtotalReg=RECCOUNT()
FPUTS(ArchSalida,ALLTRIM(STR(RECCOUNT())))
GO TOP
MYFINAL=SPACE(0)
DO WHILE !EOF()
   IF RECNO()=MtotalReg
      MYFINAL='\r\n'
   ENDIF
   FPUTS(ArchSalida,ALLTRIM(STR(RECNO(),3))+' SQLCHAR 0 '+ALLTRIM(STR(FIELD_LEN))+' "'+MYFINAL+'" '+ALLTRIM(STR(RECNO(),3))+' ['+ALLTRIM(FIELD_NAME)+'] ""')
   SKIP
ENDDO
FFLUSH(ArchSalida)
FCLOSE(ArchSalida)
use in filetemp && cierro alias
sele cargasqlfoxchile
WAIT WINDOW ALLTRIM(CargaSqlFoxChile.aFmtProtic)+'  OK GENERADO....' NOWAIT
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