FoxPro/Visual FoxPro - Pagina de código Foxpro

   
Vista:

Pagina de código Foxpro

Publicado por Pedro (3 intervenciones) el 07/09/2012 14:55:17
Hola, tengo un problemilla y os solicito vuestra ayuda. Desde hace años un conocido ha tenido una aplicacion que trabaja con archivos .dbf y la ha tenido conectada a visual 5 sin problemas hasta la fecha. La aplicación se ha actualizado a una nueva versión y los .dbf ya no son accesibles desde visual 5 como antes, dice que no se puede abrir la tabla, conocemos que el .dbf es de Foxpro pero no conseguimos dar con la pagina de código para abrirlo y poder así generar de nuevo la conexión con Visual 5 correctamente. Me podéis recomendar que hacer?. Lo estoy intentando con Foxpro 9. Un 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

Pagina de código Foxpro

Publicado por Fidel (319 intervenciones) el 08/09/2012 00:37:10
Me parece un problema que no se pueda abrir la tabla.
Las tablas de Visual Fox están en la página 1252.
Si son tablas generadas con sistemas en DOS, seguramente estarán en 437.

Hay un programa de conversión llamado Cpzero.prg.

* Remove the code page from MYFILE.DBF and specify 437
* as the new code page.
*
DO Cpzero WITH 'MYFILE.DBF',437

Este programa está en la carpeta Visual FoxPro... Tools\Cpzero.
La tabla debe estar cerrada (y no usada por nadie) para correr este programa.

Ahora bien, si se intenta abrir una dbf generada con un DOS (fox ó clipper) desde Visual Fox, generalmente presenta un cuadro de diálogo para determinar en qué página de códigos está la tabla. En ningún momento dice que no puede abrirse.

En Visual Fox, la función CPDBF([nWorkArea | cTableAlias]) te dice en qué página de códigos está la tabla.

Para el caso en que el mensaje de Visual Fox sea "El archivo no es una tabla", se ha escrito la siguiente rutina (Portal Fox) que utiliza bajo nivel para reparar el encabezado de la tabla.
:
El error que Visual Foxpro regresa cuando se corrompe el
encabezado de una tabla y no podemos abrirla.

La siguiente rutina calcula el número de registros
que contiene la tabla y los compara con el contenido
del encabezado de la misma y de ser necesario, lo repara.

*-----------------
*- Reparar tabla -
*-----------------
FUNCTION _ReparaEncabezado(cTabla)

LOCAL nArea,nTamañoTabla,nRegistros,nTamañoencabezado,;
nTamañoRegistro,nRegistrosCalculados

nArea=FOPEN(cTabla,12)
nTamañoTabla=FSEEK(nArea,0,2)

nRegistros=_Lee(nArea, 4,4)
nTamañoEncabezado=_Lee(nArea, 8,2)
nTamañoRegistro=_Lee(nArea,10,2)

nRegistrosCalculados=FLOOR((nTamañoTabla-nTamañoEncabezado)/;
nTamañoRegistro)
IF nRegistrosCalculados#nRegistros
_Escribe(nArea,4,4,nRegistrosCalculados)
ENDIF

=FCLOSE(nArea)

ENDFUNC

*------------------
*- Lee encabezado -
*------------------
FUNCTION _Lee(nArea,nPosicion,nTamaño)

LOCAL cCadena,nValor,nSubInd

=FSEEK(nArea,nPosicion,0)
cCadena=FREAD(nArea, nTamaño)
nValor = 0
FOR nSubInd=0 TO nTamaño-1
nValor=nValor+ASC(SUBSTR(cCadena,nSubInd+1))*256^nSubInd
ENDFOR

RETURN INT(nValor)

ENDFUNC

*------------------------
*- Reescribe encabezado -
*------------------------
FUNCTION _Escribe(nArea,nPosicion,nTamaño,nNumero)

LOCAL cCadena,nSubInd

cCadena=''
FOR nSubInd=0 TO nTamaño-1
cCadena=cCadena+CHR(nNumero/256^nSubInd%256)
ENDFOR

=FSEEK(nArea, nPosicion,0)

RETURN FWRITE(nArea,cCadena)

ENDFUNC

Es recomendable que en las rutinas de mantenimiento de archivos
se elimine primero el indice (CDX),
se revise el encabezado con la rutina anterior y
posteriormente se generen los indices de nuevo.

Saludos.
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

Pagina de código Foxpro

Publicado por Pedro (3 intervenciones) el 10/09/2012 08:59:15
Holas Fidel,

muchas gracias por tu ayuda, me pongo manos a la obra.......

Un saludo!
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

Pagina de código Foxpro

Publicado por Francisco Gerardo (2 intervenciones) el 07/07/2015 19:13:16
hola buenas tardes una pregunta manejo vfp 9.0 pero tengo un problema y quiero ayuda pliss las tablas que ocupo las manejo tambien para foxpro 2.0 y cada vez que las abro en vfp 9.0 me aparece el mensaje de pagina de codigos quiero que siempre sepa que son msdos 850.
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

Pagina de código Foxpro

Publicado por Ricardo (1 intervención) el 12/11/2015 17:28:58
Hola Francisco, Te paso algunos parametros que podes utilizar en el <<config.fpw>> ubicado en la carpeta de Visual Foxpro.

KEYCOMP = WINDOWS
CODEPAGE = 1252 (aca podes cambiar el codigo de pagina que queres por defecto cuando abris el Visual Foxpro)
COLLATE = AUTO
DATE = FRENCH
CATMAN=OFF
MEMLIMIT=80,1024,20000
MVCOUNT=65000
TITLE = ** << AREA DE DESARROLLO >> **
RESOURCE=ON
_SCREEN.viSible = .F.

Investiga los diferentes parametros de estas variables de entorno en el Help del Visual Fox o FoxPro for Windows, ahí te pueden aparecer algunas otras.


Espero te sirva.!!!
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

Pagina de código Foxpro

Publicado por Juan Vidal-Abarca juan.vidal.abarca@gmail.com (1 intervención) el 13/07/2016 11:17:10
Hola amigos, tengo problemas con la pagina de codigos. Al pasar de VFP 2.6 al 6, me pedia la pagina de codigos y le puse lo primero que me salió, porque no tenia ni idea de cual fue con la que los cree.
Ahora me salen las ñ y las acentuadas con caracteres rearos, y no puede ser y tengo que cambiarlo. He visto el manual y he visto los consejos que se dan en el foro con Cpzero y copy to.. as (codigo de pagina) pero ninguno me funciona y no cambia nada
Tengo puesto en la configuracion "pedir pagina de codigos" pero tampoco me lo hace
Algun consejillo?
Gracias
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