Comment est-il facile de convertir une application à partir de Visual Foxpro 6 à Visual Foxpro 9?

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

  •  19-09-2019
  •  | 
  •  

Question

Y a-t-il des problèmes de conversion d'une application Visual Foxpro 6 à Visual Foxpro 9; ou est-ce avant droit?

Les gotchas que je surveiller pendant le processus?

Était-ce utile?

La solution

oui ... selon une variété d'éléments dans votre projet. J'ai actuellement des applications dans les deux VFP9 SP1 et SP2 VFP9 (avec HotFix3 pour les rapports)

Quelques questions pour aider à exécuter sous VFP9 avec l'ancien format des requêtes SQL

SET MOTEUR 70 COMPORTEMENTS Vous voulez probablement rester avec 70 quelques-unes des améliorations dans 8 et 9 vigueur une merveilleuse astuce qui a été utilisé au début de l'interrogation dans le groupe paresseux par des clauses ... seul groupe par les quelques colonnes vous avez pris soin au sujet, en particulier lors de l'adhésion à une recherche table qui vous saviez aurait toujours la même valeur de toute façon. Dans 8 et 9, il vous oblige à qualifier le groupe par, par toutes les fonctions non agrégées ... Dans ce cas, vous pourriez avoir à changer simplement les colonnes « constantes » à MAX (SomeField) comme SomeField. Le maximum ne changerait jamais si votre groupe a été basé sur une clé d'identification de toute façon.

D'autres problèmes connus de la requête était avec SELECT SUM (). Si vous avez fait une requête, et il n'y avait pas de dossiers qui correspondent à la requête, la colonne SUM () reviendrait comme NULL, et vous obtiendrez un type de données inattendu lorsque vous espériez un certain nombre. Une prise rapide est d'ajouter toujours un COUNT (*) comme ActualRecords qui retournera toujours un certain nombre. Ensuite, vous pouvez vérifier si les « Result.ActualRecords = 0 » faire quelque chose pour avertir l'utilisateur, avortent rapport, que ce soit, sinon continuer.

La déclaration est évidemment améliorée de 6 et a des caractéristiques très bons, en particulier mutiple table liée régions rapports sans avoir à faire « Imprimer Quand » et le chevauchement des contrôles dans certaines conditions. C'est idéal pour les tables multiples liées que vous voulez dans un rapport final.

une mise à jour sur le groupe SUM SQL () en question. J'ai trouvé que si vous faites un

SELECT NVL (SUM (quoi que), 0) comme FinalColumn, si vous exécutez en une somme sans enregistrement de qualification, le NVL () prendra cette valeur nulle et le forcer à zéro et éviter ainsi les problèmes ultérieurs NULL .. . de même, appliquer à des choses comme MIN (), MAX (), AVG (), etc.

Ce sont quelques-uns des grands ceux qui éblouissent sur moi ...

Autres conseils

Je dirais qu'il est assez indolore en général. Comme mentionné par Drapp vous devez examiner toutes les instructions SQL SELECT pour peser le pour et le contre de modifier les clauses GROUP BY, ou s'il serait plus facile à utiliser SET ENGINEBEHAVIOUR. La déclaration peut être fait comme travail VFP6 en utilisant SET REPORTBEHAVIOUR.

En outre VFP9 fait une structure de la table de vérification lorsque vous ouvrez un DBF que VFP6 ne fonctionne pas. Par conséquent, vous pouvez constater que l'ouverture des fichiers DBF dans VFP9 lancera une erreur 2065 parce que le nombre d'enregistrements d'en-tête ne correspond pas au nombre d'enregistrements réels, alors qu'ils travailleraient bien dans la version précédente. Ce comportement peut être contrôlé avec la commande SET TABLEVALIDATE.

J'ai traité deux VFP 6 problèmes d'application cette semaine et ils ont été frustrant que diable parce que les problèmes pourraient facilement être traités avec VFP 9 SP2.

Une autre chose à faire attention sur est si vos données est accessible par le VFP 6 pilote ODBC. Si vous utilisez l'une des nouvelles fonctionnalités de base de données mises en œuvre dans VFP 7 à 9 VFP comme des événements de base de données, ou les nouveaux types de données comme varchar vos données seront converties en un format que le pilote ODBC ne peut pas gérer. Le nouveau pilote VFP OLE DB est utilisé à la place, et certains outils ne peut pas gérer la fonctionnalité OLE DB.

Vous trouverez la nouvelle façon de concepteur de rapports plus puissant, mais le GDI + utilisé pour le rendu, il faudra une certaine taille terrain peaufinage des rapports pour se débarrasser des étoiles de débordement. Vous pouvez éviter cela en utilisant le SET REPORTBEHAVIOR comme le note Alan, mais vous allez vraiment vouloir profiter de la capacité de prévisualisation du rapport.

Une autre chose que vous pourriez vous brûler sur la commande est AFIELDS () crée plus d'éléments dans le tableau. Donc, vous pourriez avoir à modifier un code pour gérer les lignes supplémentaires dans le tableau créé.

Si vous rencontrez des problèmes, s'il vous plaît poster ici et nous vous aiderons.

Rick Schummer

Beaucoup de bonnes réponses déjà là. Après avoir converti une application vfp6 récemment, je dirais que le processus a été relativement indolore, en particulier au profit qui vient d'utiliser l'éditeur de VFP9, etc.

Un élément non souligné ... Vérifiez tous vos rapports, et assurez-vous que l'option de rapport « Enregistrer l'environnement d'impression » est désactivée, à moins que l'imprimante apparaître dans la liste est vraiment celui que vous voulez codées en dur dans vos fichiers de rapport.

J'ai couru dans quelques problèmes de mise à niveau de notre source VFP9. La plupart d'entre eux plutôt mineures, cependant.

La première chose que vous devez faire est de revoir Nouvelle documentation du Que pour VFP7, VFP8 et VFP9. Je sais que cela semble comme une douleur, mais il devrait être votre premier arrêt lors de la mise à niveau d'un projet. Documentation pour VFP6 et plus peuvent être trouvés sur MSDN .

Beaucoup de nouvelles propriétés et méthodes ont été ajoutées aux classes. Si l'un de ces conflits avec des propriétés personnalisées / méthodes, vous rencontrez des erreurs.

En outre, vous aurez besoin de prendre conscience de Vista UAC et comment traiter avec eux . Les programmes compilés avec VFP8 ou ci-dessous sont exécutées en mode « compatibilité ». Avec des programmes de VFP9 sont compilés avec une Vista application Manifest, ce qui signifie le requestedExecutionLevel dans le manifeste d'application est définie sur asInvoker. VFP8 et ci-dessous ne comprennent pas dans le manifeste (ou ne comprennent pas un manifeste du tout), d'où le mode de compatibilité.

Cela signifie que lors de l'exécution du programme sur Vista, plusieurs choses ou provoquer des erreurs.

  1. Tenter d'écrire dans le registre HKEY_LOCAL_MACHINE échouera.
  2. Tenter d'écrire un fichier à% programfiles% ou tout autre dossier protégé génère une erreur. Les programmes ne devraient écrire à dossiers communs .

Vous avez la possibilité de mise à jour du Manifest application, mais je ne recommanderais pas nécessairement, à moins que votre programme nécessite absolument privilèges d'administration.

Enfin, il y a un certain nombre d'incompatibilités Vista - certains portant spécifiquement sur Aero - qui ont été fixés avec VFP9 SP2. Donc, si vous allez utiliser VFP9, assurez-vous d'utiliser le Service Pack 2.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top