Incompatibilidad de tablas entre Foxpro 2.6 y VF9.

655 views
Skip to first unread message

Edgar Acevedo

unread,
Jan 9, 2013, 5:21:19 PM1/9/13
to publice...@googlegroups.com, Edgar Acevedo
Saludos amigos:

Hay un programa "monstruoso y enorme" desarrollado en Foxpro para DOS 2.6  Trabaja a la perfección.  Se me pidió que hiciera "algo extra" para dicho programa y lo desarrollé en VFP9 (ERROR...!  Debí seguir con Foxpro 2.6...) y ahora resulta que cuando el programa de VFP 9 que hice manda a grabar datos en las tablas originalmente creadas con Foxpro 2.6 para DOS., agrega bien los datos en el DBF, pero NO los agrega bien en el indice de dicha tabla (CDX). 
Pasan cosas extrañas:  Si se le da un SEEK  NO encuentra el nuevo registro agregado, pero con un LOCATE si lo encuentra y también lo visualiza con un BROWSE.
El problema se arrega si desde Foxpro para DOS se "reindexa" la tabla.  Luego de la reindexación ya aparece visible el nuevo registro agregado (para el SEEK por ejemplo).
Pregunta:  ¿Hay alguna forma para que VFP9 si sea 100% compatible al insertar registros en una tabla DBF con CDX originalmente creada en Foxpro para DOS 2.6?

Gracias por su atención a mi consulta,


Edgar Acevedo.

Ricardo Pina

unread,
Jan 9, 2013, 5:39:15 PM1/9/13
to Grupo VFP
Hola Edgar
 
No utilicé la versión 2.6, pero sí clipper y supongo debe ser similar, la verdad no recuerdo bien ya que pasaron unos añitos, pero me parece que tenian que estar los indices cdx abiertos para que se actualicen.
Por ahi estoy mandando fruta, pero...
 
Saludos
 


--
 
 



--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

Luis Maria Guayan

unread,
Jan 9, 2013, 5:51:26 PM1/9/13
to publice...@googlegroups.com
No debería existir mayores problemas. Lo único que se me ocurre es que las tablas originales fueron creadas con un Código de Página y VFP9 tiene otro código de página.

Mira que Código de Página tiene la tabla original con CPDBF() y el actual de VFP9 con CPCURRENT(). Cambia el código de página de tu aplicación desde el archivo de configuración Config.fpw incluyerndo la línea CODEPAGE = ValorDelCodePageDeLaTabla Dos

También mira la configuración del SET COLLATE de ambas aplicaciones y el IDXCOLLATE() del índice de la tabla original. Deben ser iguales

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

--
 
 

Víctor Hugo Espínola Domínguez

unread,
Jan 9, 2013, 5:58:09 PM1/9/13
to publicesvfoxpro
Hola Edgar

Si lo sugerido por Luís María no resuelve el problema, podrías usar un archivo de texto como puente, en VFP9 grabas el archivo de texto con el (los) registro(s) a insertar y llamas a un programa .exe generado por FPD26 pasando  como parámetros los nombres de la tabla y del archivo de texto, este programa en FPD26 abriría la tabla e insertaría los datos desde el archivo de texto.

Saludos.
Víctor.




--
 
 

Luis la Romana

unread,
Jan 9, 2013, 6:33:26 PM1/9/13
to publice...@googlegroups.com, Edgar Acevedo
Puedes desarrollar en VFP9, pero las tablas que uses en eso debes crearlas en Fox26. Si ejecutas consultas Select en VFP9 por ejemplo, al final el resultado de la consulta, si bien la aterrizas en DBF de VFP9, luego debes tomar la tabla nativa hecha por Fox26 y darle un append desde allí.

Luis la Romana

unread,
Jan 9, 2013, 6:38:33 PM1/9/13
to publice...@googlegroups.com, Edgar Acevedo
Luis María, disculpa, sé que no debo dirigir una consulta a un usuario en específico, pero atrás ha quedado un hilo mio sin respuesta.
Tengo una conexión a tablas Paradox, basado en DSN de ODBC, desde VFP8 me puedo conectar y ejecuto un select con éxito.
Pero ahora yo quisiera a la inversa, subir registros desde una tabla DBF a la tabla DB de Paradox usando la misma DSN, me han recomendado hacer un cursoradapter, pero no se cómo se hace eso, me sugieres algo. He encontrado ejemplos de uso de insert, pero son de uno en uno los registros, yo quiero subir toda la tabla, se que los campos de ambas tablas son "casi iguales".

Luis Maria Guayan

unread,
Jan 9, 2013, 10:34:30 PM1/9/13
to publice...@googlegroups.com
Si ya tienes el DSN puedes utilizar vistas remotas sin problemas. Haces el INSERT de todos los registros a la vista remota y luego haces el Update de la vista.


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

--
 
 

jisoftw...@gmail.com

unread,
Jan 9, 2013, 10:58:25 PM1/9/13
to publice...@googlegroups.com
Amigos en una oportunidad me parecia haber visto en el foro que alguien tenia un inconveniente al momento de crear cursos cuando hacer la conexion con mysql jalaba los .null. Pues ahora tengo ese problema como desaparecer o que no jalen los null.

Gracias
Enviado desde mi BlackBerry de Movistar

From: Luis Maria Guayan <luism...@gmail.com>
Date: Thu, 10 Jan 2013 00:34:30 -0300
Subject: Re: [vfp] Re: Incompatibilidad de tablas entre Foxpro 2.6 y VF9.

--
 
 

HernanCano

unread,
Jan 10, 2013, 12:54:28 AM1/10/13
to publice...@googlegroups.com, Edgar Acevedo

Edgar:

Se me ocurre que puede ser una de dos cosas, basándome en que estás muy seguro de que es un .CDX:

1.
Seguramente no es un .CDX estructural. Un .CDX estructural tiene el mismo nombre del .DBF y se abrirá automáticamente cuando se abra el .DBF (si fuera un .CDX estructural no debería pasarte lo que mencionas).

2.
Seguramente no es un .CDX, si no un .IDX (o .NDX o similar). Un .IDX no se abre automáticamente cuando se abre el .DBF aunque tenga el mismo nombre del .DBF.

3.
Seguramente es un indexado con una extensión diferente a .CDX y a .IDX, en cuyo ccaso no sería adecuadamente reconocido por el motor stándard (poco probable, pero otra situación por analizar).

4.
Podrías solucionar tu inconveniente si desde VFP9 ---en donde estás abriendo el .DBF---, le indicas que abra el indexado, es decir en vez de sólo:

use ARCHIVO.DBF
append blank
replace CODIGO with M.COD
replace NOMBRE with M.NOM

haces

use ARCHIVO.DBF index EL_NOMBRE_DEL_INDEXADO1.EXT, EL_NOMBRE_DEL_INDEXADO2.EXT, EL_NOMBRE_DEL_INDEXADO3.EXT, EL_NOMBRE_DEL_INDEXADO4.EXT, EL_NOMBRE_DEL_INDEXADO5.EXT
append blank
replace CODIGO with M.COD
replace NOMBRE with M.NOM

--------------------------------------------------------------------------------------

¿Seguro que es un indexado estructural?
¿Seguro que es un indexado estructural con extensión .CDX?

--------------------------------------------------------------------------------------
No es un error programar en VFP9 --sobre una app en DOS--: estás mejorando la presentación de la interfaz. Las dificultades que se te presentan las resuelves como programador.
Aclara las dudas y nos cuentas.
--------------------------------------------------------------------------------------

AfpSistemas

unread,
Jan 10, 2013, 5:01:54 AM1/10/13
to publice...@googlegroups.com

Estimado:

 

En el select podes utilizar la función de Mysql ISNULL :

 

SELECT movimiento.fecha,empresa.nombre as empresa,rubro.nombre as rubro,ifnull(subrubro.nombre,'') as subrubro,'' as subrubro2,movimiento.detalle,

 

Saludos,

 

Fernando.

--
 
 

Jaime Paredes

unread,
Jan 10, 2013, 9:29:19 AM1/10/13
to publice...@googlegroups.com
pero me distorciona el valor del campo en mysql es int y cuando hago
esto me pone caracter en el cursor

El 10/01/13, AfpSistemas <afpsi...@gmail.com> escribió:
> Estimado:
>
>
>
> En el select podes utilizar la función de Mysql ISNULL :
>
>
>
> SELECT movimiento.fecha,empresa.nombre as empresa,rubro.nombre as
> rubro,ifnull(subrubro.nombre,'') as subrubro,'' as
> subrubro2,movimiento.detalle,
>
>
>
> Saludos,
>
>
>
> Fernando.
>
>
>
> De: publice...@googlegroups.com
> [mailto:publice...@googlegroups.com] En nombre de
> jisoftw...@gmail.com
> Enviado el: Thursday, 10 de January de 2013 12:58 a.m.
> Para: publice...@googlegroups.com
> Asunto: [vfp] Re: Problemas con .NULL.
>
>
>
> Amigos en una oportunidad me parecia haber visto en el foro que alguien
> tenia un inconveniente al momento de crear cursos cuando hacer la conexion
> con mysql jalaba los .null. Pues ahora tengo ese problema como desaparecer
> o
> que no jalen los null.
>
> Gracias
>
> Enviado desde mi BlackBerry de Movistar
>
> _____
>
> --
>
>
>

AfpSistemas

unread,
Jan 10, 2013, 9:37:01 AM1/10/13
to publice...@googlegroups.com
Entonces debes usar : ifnull(subrubro.nombre,0.00) as subrubro

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Jaime Paredes
Enviado el: Thursday, 10 de January de 2013 11:29 a.m.
Para: publice...@googlegroups.com
Asunto: Re: [vfp] Re: Problemas con .NULL.
--


Jaime Paredes

unread,
Jan 10, 2013, 9:44:36 AM1/10/13
to publice...@googlegroups.com
Te pasaste my Brother, Gracias....
> --
>
>
>

Luis la Romana

unread,
Jan 10, 2013, 10:06:27 AM1/10/13
to publice...@googlegroups.com, Edgar Acevedo
Gracias Luis María, eso creo que sí podría hacerlo. Gracias por el tip.

HernanCano

unread,
Jan 10, 2013, 11:46:18 AM1/10/13
to publice...@googlegroups.com


Edgar nos comenta:

Muchas gracias amigos por sus amables respuestas.  Ahora yo les respondo por partes:

Luis María:

Te confirmo que si tenía el COLLATE y el CODEPAGE definido de la misma manera en ambos ambientes:  Tanto en Foxpro para DOS como en VFP 9 tengo el COLLATE seteado en "Machine" y el CODEPAGE en AUTO.  Cambié el CODEPAGE a 850 en ambos ambientes y el resultado fue el mismo.

Hernan:

Te confirmo también que los TAGS de ordenamiento estan guardados en un CDX puro, creado en el ambiente de Foxpro para DOS.  La tabla se llama   SOCIOS.DBF  y de manera automática levanta su respectivo   SOCIOS.CDX.

Victor Hugo:

Efectivamente, el "truco" que me sugeriste fue la única opción que tuve para resolver el problema:  mi aplicación de VFP 9 en vez de grabar directamente sobre la tabla   SOCIOS.DBF, escribe un archivo SDF (tipo texto) y luego invoca a un programa compilado EXE en Foxpro para Dos que toma los datos del archivo SDF y los escribe en la tabla mediante un INSERT - SQL.

Descripción precisa de la incompatiblidad:

Haciendo varias pruebas puedo llegar a asegurarles que descubrí donde se da el problema:  la tabla SOCIOS.DBF tiene su respectivo archivo  SOCIOS.CDX donde guarda 12 TAGS de ordenamiento.  De esos 12 TAGS, hay 3 en particular que incluyen la sentencia condicional FOR en su estructura.  Por ejemplo

INDEX TAG Activos ON Codigo FOR NOT Retirado
INDEX TAG
---------------------------------------------------
Perdón, por elegir un efecto de Font, pulsé el botón ENVIAR. Creo que no debieran estar tan cerca....  Pero en fin....

El punto de falla es este:

En los TAGS de índices que NO INCLUYEN la condicionante  FOR,  VFP 9 actualiza sin problemas dichos índices.
Solo los TAGS que SI INCLUYEN condicionantes  FOR,  VFP 9 no actualiza dichos tags, aunque SI ACTUALIZA los demás TAGS del  CDX y por supuesto, SI GRABA el registro en la tabla  DBF.  Definitivamente allí hay un problema de incompatibilidad INFRANQUEABLE.  La única forma es grabar solo desde un aplicativo hecho en Foxpro para DOS para que esto no suceda.

Saludos y muchas gracias por sus sugerencias.

HernanCano

unread,
Jan 10, 2013, 11:50:13 AM1/10/13
to publice...@googlegroups.com, Edgar Acevedo

Sí, Edgar.
Parece un comportamiento anómalo en VFP9.
Si nos dieras los INDEX ON que contruyes (¿y/o datos?), tal vez descubramos algún bug de la parte del programador.

Tal vez alguien ya tiene una experiencia similar y nos ayude a dilucidar.

Chao.

Daniel Sánchez

unread,
Jan 10, 2013, 11:59:19 AM1/10/13
to Comunidad de Visual Foxpro en Español
Me parece que tu archivo de indices están separados es decir con abrir la tabla no se abren los indices así que deberías al momento de abrir la tabla verificar si los indices los considera automáticamente si no es así pues procederías a activarlo para que realice la actualización tanto en la tabla dbf como en la tabla cdx, pero con esa versión podría ser que sean indices idx por eso el problema tienes que indicar la tabla de indice al abrir el dbf.

Saludos


--
 
 



--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú

jisoftw...@gmail.com

unread,
Jan 12, 2013, 9:26:07 AM1/12/13
to publice...@googlegroups.com
Amigo otra pregunta tengo que hacerlo uno por uno de las columnas del mi tabla del mysql o es que hay un solo comando que pueda omitir los null por que tengo una tabla que tiene como 35 columnas y a eso le tengo que hacer uno por uno? No se derrepente hay un comando que me ahorre el trabajo.

Gracias de antemano
Enviado desde mi BlackBerry de Movistar

--


Allan Raúl Acuña

unread,
Jan 12, 2013, 11:51:08 AM1/12/13
to publice...@googlegroups.com
Prueba configurando antes de las consultas:
 
Set NullDisplay To ''

Saludos cordiales;


Lic. Allan R. Acuña
Desarrollador Independiente
msn= allan...@hotmail.com
skype= niceasysoft
            +(505) 8 831 8191      
www.NicEasySoft.com
Managua, Nicaragua
Centroamérica

 
> Subject: Re: [vfp] Re: Problemas con .NULL.
> To: publice...@googlegroups.com
> From: jisoftw...@gmail.com
> Date: Sat, 12 Jan 2013 14:26:07 +0000
> --
>
>
Reply all
Reply to author
Forward
0 new messages