¿Es fácil para convertir una aplicación de Visual Foxpro 6 a Visual Foxpro 9?

StackOverflow https://stackoverflow.com/questions/2417817

  •  19-09-2019
  •  | 
  •  

Pregunta

¿Hay problemas para convertir una aplicación de Visual Foxpro 6 a Visual Foxpro 9; o esto es recta hacia adelante?

Cualquier trampas que debería mirar hacia fuera para durante el proceso?

¿Fue útil?

Solución

... sí dependiendo de una variedad de elementos en su proyecto. Actualmente tengo aplicaciones tanto en VFP9 SP1 y SP2 VFP9 (con HotFix3 para la presentación de informes)

Algunas cuestiones para ayudar a ejecutar bajo VFP9 con consultas SQL formato más antiguo

COMPORTAMIENTO CONJUNTO MOTOR 70 Es posible que desee quedarse con 70. algunas de las mejoras en 8 y 9 de la fuerza de un truco maravilloso que se utilizó en consulta temprana en el grupo de descanso junto a cláusulas ... único grupo por las pocas columnas que se preocupaba, sobre todo cuando se unen a una búsqueda tabla que sabía que siempre tienen el mismo valor de todos modos. En 8 y 9, se le requiere para calificar por el grupo, por todas las funciones que no son agregados ... En tal caso, puede que tenga que acaba de cambiar esas columnas "constantes" a MAX (SomeField) como SomeField. El máximo nunca cambiaría si su grupo se basa en una clave de identificación de todos modos.

Otros problemas conocidos de la consulta fue con SELECT SUM (). Si usted hizo una consulta, y no había registros que corresponden a la consulta, la columna de la SUM () podría volver como NULL y se obtendría un tipo de datos inesperado cuando usted esperaba un número. Una captura rápida fue la de añadir siempre una COUNT (*) como ActualRecords que siempre devuelven un número. A continuación, se puede comprobar si los "Result.ActualRecords = 0" hacen algo para notificar al usuario, abortan informe, lo que, de lo contrario continuar.

La presentación de informes es, obviamente, mayor de 6 y tiene algunas características realmente buenas, especialmente mutiple tabla vinculada informar regiones sin tener que hacer "Imprimir Cuando" y la superposición de controles bajo ciertas condiciones. Esto es grande para las tablas relacionadas con múltiples que desea en un informe final.

UNA ACTUALIZACIÓN en la suma de SQL () Grupo de tema. He descubierto que si lo hace un

SELECT NVL (SUM (lo que sea), 0) como FinalColumn, si es que se encuentran en una suma que no tenían antecedentes de calificación, el NVL () que se llevará a valor nulo y obligarlo a cero y así evitar problemas posteriores NULL .. . Del mismo modo, se aplican a cosas como MIN (), MAX (), AVG (), etc.

Estos son sólo algunos de los grandes que fulgor en mí ...

Otros consejos

Yo diría que es bastante indoloro en general. Según lo mencionado por Drapp tendrá que revisar las sentencias de SQL-SELECT para sopesar los pros y los contras de la modificación de las cláusulas GROUP BY, o si sería más fácil de usar SET ENGINEBEHAVIOUR. La presentación de informes se puede hacer el trabajo como VFP6 utilizando REPORTBEHAVIOUR SET.

También VFP9 hace algo de estructura de la tabla de comprobar cuando se abre un DBF que VFP6 no lo hace. Como resultado, usted puede encontrar que la apertura de los archivos de DBF en VFP9 generará un error 2065 debido a que el número de registros de cabecera no es igual al número de registros reales, mientras que trabajarían bien en la versión anterior. Este comportamiento se puede controlar con el comando SET TABLEVALIDATE.

He tratado con un par de VFP 6 problemas de aplicaciones de esta semana y han sido frustrante como diablos porque los problemas fácilmente podrían abordarse con VFP 9 SP2.

Otra cosa a tener cuidado en es si los datos se accede por el conductor VFP 6 ODBC. Si utiliza cualquiera de las nuevas características de base de datos implementados en VFP 7 a 9 VFP como los eventos de base de datos, o los nuevos tipos de datos varchar al igual que sus datos serán convertidos a un formato que el controlador ODBC no puede manejar. El nuevo controlador OLE DB de VFP se utiliza en su lugar, y algunas herramientas no puede manejar la funcionalidad de OLE DB.

Usted encontrará la nueva forma de diseño de informes más potente, pero el GDI + usada para la representación requerirá algunos ajustes en el tamaño del campo de informes para deshacerse de las estrellas de desbordamiento. Esto se puede evitar utilizando el conjunto REPORTBEHAVIOR como señala Alan, pero que realmente va a querer tomar ventaja de la capacidad de vista previa del informe.

Otra cosa que puede quemarse en el comando es AFIELDS () crea más elementos de la matriz. Así que puede que tenga que ajustar un poco de código para manejar las filas adicionales en la matriz creada.

Si surge algún problema, por favor, puesto aquí y que le ayudará a cabo.

Rick Schummer

Un montón de buenas respuestas aquí ya. Haber convertido a una aplicación vfp6 hace poco, yo diría que el proceso fue relativamente fácil, sobre todo para el beneficio que proviene del uso del editor de VFP9, etc.

Un artículo no señaló ... comprobar todos sus informes, y asegúrese de que la opción de informe "Guardar entorno de la impresora" se apaga, a menos que la impresora en la lista no es realmente el que usted desea en forma fija en sus archivos de informe.

Me he encontrado algunos problemas actualizando nuestra fuente de VFP9. La mayor parte de ellos en lugar de menor importancia, sin embargo.

Lo primero que hay que hacer es revisar Nueva documentación Novedades para VFP7, VFP8 y VFP9. Sé que esto parece como un dolor, pero debería ser su primera parada cuando se actualiza un proyecto. Documentación para VFP6 y hasta se puede encontrar en MSDN .

Muchas propiedades y métodos nuevos se han añadido a las clases. Si uno de estos conflictos con propiedades personalizadas / métodos, se encontrará con errores.

Además, tendrá que darse cuenta de Vista UAC y cómo tratar con ellos . Los programas compilados con VFP8 o por debajo se ejecutan en el modo de "compatibilidad". Con los programas de VFP9 se compilan con una Vista Manifiesto de aplicación, es decir, el requestedExecutionLevel en el manifiesto de aplicación se establece en asInvoker. VFP8 y por debajo no incluyen esta en el manifiesto (o no incluyen un manifiesto en absoluto), por lo tanto, el modo de compatibilidad.

Esto significa que cuando se ejecuta el programa en Vista, varias cosas van a fallar o causar errores.

  1. El intento de escribir en HKEY_LOCAL_MACHINE en el registro fallará.
  2. El intento de escribir un archivo en% Archivos de programa% o cualquier carpeta protegida generará un error. Los programas sólo deben escribir a carpetas comunes .

Usted tiene la opción de actualización de la aplicación Manifiesto , pero no necesariamente lo recomiendo, a menos que su programa requiere absolutamente privilegios administrativos.

Por último, hay una serie de incompatibilidades Vista - algunos se ocupa específicamente de Aero - que se fijaron con VFP9 SP2. Por lo tanto, si se va a utilizar VFP9, asegúrese de usar el Service Pack 2.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top