Wie einfach ist es, eine Anwendung von Visual Foxpro 6 nach Visual Foxpro 9 zu konvertieren?

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

  •  19-09-2019
  •  | 
  •  

Frage

Gibt es Probleme beim Konvertieren einer Visual Foxpro 6-Anwendung in Visual Foxpro 9?oder ist das einfach?

Gibt es Fallstricke, auf die ich während des Prozesses achten sollte?

War es hilfreich?

Lösung

ja ... abhängig von einer Vielzahl von Elementen in Ihrem Projekt. Ich habe derzeit Anwendungen in sowohl VFP9 SP1 und SP2 VFP9 (mit HotFix3 für die Berichterstattung)

Einige Probleme unter VFP9 mit älterem Format SQL-Abfragen ausführen, um Hilfe

SET MOTOR VERHALTEN 70 Sie wollen wahrscheinlich mit 70 einige der Verbesserungen in 8 und 9 Kraft einen wunderbaren Trick zu bleiben, die durch Klauseln in frühen anfragende in fauler Gruppe genutzt wurden ... nur Gruppe von den wenigen Spalten Sie gepflegt, vor allem wenn sie auf einen Lookup Beitritt Tabelle, die Sie den gleichen Wert haben immer irgendwie wussten würde. In 8 und 9, es erfordert, dass Sie die Gruppe durch, die von allen Nicht-Aggregatfunktionen ... In einem solchen Fall zu qualifizieren, könnten Sie müssen nur jene „Konstante“ Spalten MAX (somefield) als somefield ändern. Die max würde sich nie ändern, wenn Ihre Gruppe jedenfalls auf einer ID-Schlüssel basiert.

Weitere Themen aus der Abfrage bekannt waren mit SELECT SUM (). Wenn Sie haben eine Abfrage, und es gab keine Aufzeichnungen, die die Abfrage angepasst, die SUM () Spalte würde wieder als NULL kommen, und Sie würden einen unerwarteten Datentyp erhalten, wenn Sie für eine Reihe gehofft hatten. Eine schnelle Haken war immer ein COUNT (*) als ActualRecords hinzufügen, die eine Reihe immer wieder zurückkehren würde. Dann könnten Sie überprüfen, ob die „Result.ActualRecords = 0“ etwas tun, Benutzer zu benachrichtigen, abbrechen Bericht, was auch immer, sonst weiter.

Die Berichterstattung offensichtlich von 6 und hat einige wirklich gute Features erweitert, insbesondere mutiple verknüpfte Tabelle Regionen Berichterstattung ohne „Print Wenn“ zu tun zu haben und überlappen Kontrollen unter bestimmten Bedingungen. Dies ist ideal für Multi-bezogenen Tabellen, die Sie in einem Abschlussbericht sollen.

ONE UPDATE auf dem SQL-SUM () Gruppe durch Ausgabe. Ich habe festgestellt, dass, wenn Sie tun, ein

SELECT NVL (SUM (was auch immer), 0) als FinalColumn, wenn Sie ohne qualifizierenden Datensätze in eine Summe laufen DO, die NVL (), dass die Null-Wert übernehmen und zwingen ihn auf Null und damit eine nachfolgende NULL Probleme verhindern .. . In ähnlicher Weise, um Dinge wie MIN (), MAX (), AVG () anwenden, etc.

Das sind nur einige der großen diejenigen, die mich Blendung aus ...

Andere Tipps

Ich würde sagen, dass es im Allgemeinen ziemlich schmerzlos ist. Wie von Drapp erwähnt müssen Sie alle SQL-SELECT-Anweisungen überprüfen die Vor abzuwägen und Nachteile der Änderung der GROUP BY-Klauseln, oder wenn es wäre einfacher zu verwenden SET ENGINEBEHAVIOUR. Die Meldung kann mit SET REPORTBEHAVIOUR Arbeit wie VFP6 gemacht werden.

Auch VFP9 hat einige Tabellenstruktur überprüft, wenn Sie eine DBF öffnen, die VFP6 nicht. Als Ergebnis können Sie feststellen, dass DBF-Dateien in VFP9 Öffnen einen Fehler 2065 werfen, weil der Kopfsatz Zahl die tatsächliche Anzahl der Datensätze nicht gleich, während sie in der früheren Version funktionieren würden. Dieses Verhalten kann mit dem Befehl SET TABLEVALIDATE gesteuert werden.

ich mit ein paar VFP 6 App Probleme in dieser Woche behandelt haben, und sie haben frustrierend, wie Heck gewesen, weil die Probleme leicht mit VFP 9 SP2 adressiert werden könnten.

Eine andere Sache, vorsichtig zu sein, auf, wenn Sie Ihre Daten durch den VFP 6 ODBC-Treiber zugegriffen werden. Wenn Sie eine der neuen Datenbank-Features in VFP 7 bis VFP 9 wie Datenbank-Ereignisse oder die neuen Datentypen implementiert verwenden wie varchar Ihre Daten werden in ein Format umgewandelt werden, das die ODBC-Treiber nicht verarbeiten können. Der neue VFP OLE DB-Treiber wird verwendet, stattdessen und einige Werkzeuge können die OLE DB-Funktionalität nicht verarbeiten.

Sie werden die neuen Report-Designer viel mächtiger, aber die GDI finden + für Rendering verwendet wird einige Feldgröße Zwicken auf Berichte erfordern den Überlauf Sterne loszuwerden. Sie können vermeiden dies die SET REPORTBEHAVIOR Verwendung als Alan stellt fest, aber Sie wirklich die Vorteile der Bericht Vorschaufunktion zu übernehmen gehen zu wollen.

Eine andere Sache, die Sie auf sich verbrennen könnte, ist die AFIELDS () Befehl mehrere Elemente in dem Array erzeugt. So müssen Sie unter Umständen einige Code optimieren die zusätzlichen Zeilen in dem Array erstellt zu behandeln.

Wenn Sie auf Probleme stoßen, wenden Sie sich bitte hier posten und wir werden Ihnen helfen.

Rick Schummer

Es gibt viele gute Antworten hier schon. Mit einem vfp6 App vor kurzem umgewandelt, ich den Prozess relativ schmerzlos war würde sagen, vor allem für den Nutzen, der von der Nutzung VFP9 des Editors kommt, usw.

Ein Punkt darauf hingewiesen, nicht ... alle Ihre Berichte überprüfen, und stellen Sie sicher, dass die „Save Druckerumgebung“ Bericht Option ausgeschaltet ist, es sei denn, der Drucker aufgeführt ist wirklich diejenige, die Sie in Ihren Bericht Dateien hartcodiert werden soll.

Beim Upgrade unserer Quelle auf VFP9 sind einige Probleme aufgetreten.Die meisten davon sind jedoch eher geringfügig.

Als Erstes müssen Sie die Dokumentation „Was ist neu“ für VFP7, VFP8 und VFP9 lesen.Ich weiß, das scheint mühsam zu sein, aber es sollte Ihre erste Anlaufstelle sein, wenn Sie ein Projekt aktualisieren.Dokumentation für VFP6 und höher finden Sie unter MSDN.

Den Klassen wurden viele neue Eigenschaften und Methoden hinzugefügt.Wenn einer dieser Punkte mit benutzerdefinierten Eigenschaften/Methoden in Konflikt steht, treten Fehler auf.

Außerdem müssen Sie sich dessen bewusst werden Vista UAC-Anforderungen Und wie man mit ihnen umgeht.Programme, die mit VFP8 oder niedriger kompiliert wurden, werden im „Kompatibilitäts“-Modus ausgeführt.Mit VFP9 werden Programme mit einem Vista-Anwendungsmanifest kompiliert, was bedeutet, dass der requestExecutionLevel im Anwendungsmanifest auf asInvoker gesetzt ist.VFP8 und niedriger enthalten dies nicht im Manifest (oder enthalten überhaupt kein Manifest), daher der Kompatibilitätsmodus.

Das bedeutet, dass beim Ausführen des Programms unter Vista verschiedene Dinge fehlschlagen oder Fehler verursachen.

  1. Der Versuch, in die Registrierung in HKEY_LOCAL_MACHINE zu schreiben, schlägt fehl.
  2. Der Versuch, eine Datei in %programfiles% oder einen geschützten Ordner zu schreiben, führt zu einem Fehler.Programme sollten nur schreiben gemeinsame Ordner.

Sie haben die Möglichkeit dazu Aktualisieren des Anwendungsmanifests, aber ich würde es nicht unbedingt empfehlen, es sei denn, Ihr Programm erfordert unbedingt Administratorrechte.

Schließlich gibt es eine Reihe von Vista-Inkompatibilitäten - einige befassen sich speziell mit Aero - die mit VFP9 SP2 behoben wurden.Wenn Sie also VFP9 verwenden, achten Sie darauf, Service Pack 2 zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top