Насколько просто конвертировать приложение из Visual Foxpro 6 в Visual Foxpro 9? - PullRequest
3 голосов
/ 10 марта 2010

Есть ли проблемы с преобразованием приложения Visual Foxpro 6 в Visual Foxpro 9; или это прямо вперед?

Есть ли какие-нибудь ошибки, на которые мне следует обратить внимание во время процесса?

Ответы [ 5 ]

9 голосов
/ 10 марта 2010

да ... в зависимости от множества элементов в вашем проекте. В настоящее время у меня есть приложения как в VFP9 SP1, так и в VFP9 SP2 (с HotFix3 для отчетов)

Некоторые проблемы с HELP, выполняемыми под VFP9 с более старыми запросами формата SQL

НАБОР ПОВЕДЕНИЯ ДВИГАТЕЛЯ 70 Вы, вероятно, захотите остаться с 70. Некоторые из улучшений в 8 и 9 навязывают замечательный трюк, который использовался в ранних запросах в ленивой группе по предложениям ... только группа по нескольким столбцам, которые вас волновали, особенно при присоединении к поиску Таблица, которую вы знали, всегда будет иметь одинаковое значение. В 8 и 9 требуется, чтобы вы квалифицировали группу всеми неагрегированными функциями ... В таком случае вам, возможно, придется просто изменить эти «постоянные» столбцы на MAX (SomeField) как SomeField. Макс никогда не изменится, если ваша группа все равно будет основана на идентификационном ключе.

Другие проблемы, известные по запросу, были связаны с SELECT SUM (). Если вы выполнили запрос, и не было записей, соответствующих этому запросу, столбец SUM () вернется как NULL, и вы получите неожиданный тип данных, когда надеетесь на число. Один быстрый улов был в том, чтобы всегда добавлять COUNT (*) в качестве ActualRecords, который ВСЕГДА возвращал бы число. Затем вы можете проверить, что Result.ActualRecords = 0 что-то делает для уведомления пользователя, отмены отчета и т. Д., В противном случае продолжить.

Отчетность, очевидно, улучшена с 6 и имеет некоторые действительно хорошие функции, особенно области отчетов с несколькими связанными таблицами, без необходимости выполнять «Печатать когда» и перекрывать элементы управления при определенных условиях. Это отлично подходит для нескольких связанных таблиц, которые вы хотите получить в окончательном отчете.

ОДНО ОБНОВЛЕНИЕ в SQL SUM (). Я обнаружил, что если вы сделаете

ВЫБЕРИТЕ NVL (SUM (независимо от того, что), 0) как FinalColumn, если вы действительно столкнетесь с суммой без подходящих записей, NVL () примет это нулевое значение и обнулит его, что предотвратит последующие проблемы NULL Аналогичным образом применяются к таким вещам, как MIN (), MAX (), AVG () и т. Д.

Это только некоторые из больших, которые смотрят на меня ...

5 голосов
/ 19 марта 2010

Я имел дело с парой проблем с приложениями VFP 6 на этой неделе, и они были ужасно разочарованы, потому что проблемы можно легко решить с помощью VFP 9 SP2.

Еще одна вещь, на которую следует обратить внимание, - это доступ к вашим данным с помощью драйвера ODBC VFP 6. Если вы используете какие-либо новые функции базы данных, реализованные в VFP 7 - VFP 9, например события базы данных, или новые типы данных, такие как varchar, ваши данные будут преобразованы в формат, который драйвер ODBC не сможет обработать. Вместо этого используется новый драйвер VFP OLE DB, и некоторые инструменты не могут обрабатывать функции OLE DB.

Вы найдете новый конструктор отчетов, более мощный, но GDI +, используемый для рендеринга, потребует некоторой настройки размера поля в отчетах, чтобы избавиться от звезд переполнения. Вы можете избежать этого, используя SET REPORTBEHAVIOR, как отмечает Алан, но вы действительно захотите воспользоваться возможностью предварительного просмотра отчета.

Еще одна вещь, на которой вы можете быть сожжены, это команда AFIELDS (), создающая больше элементов в массиве. Поэтому вам, возможно, придется настроить некоторый код для обработки дополнительных строк в созданном массиве.

Если у вас возникнут какие-либо проблемы, пожалуйста, напишите здесь, и мы поможем вам.

Рик Шуммер

5 голосов
/ 11 марта 2010

Я бы сказал, что это довольно безболезненно в целом. Как уже упоминалось в DRapp, вам нужно будет просмотреть все операторы SQL-SELECT, чтобы взвесить все за и против внесения поправок в предложения GROUP BY, или, если будет проще использовать SET ENGINEBEHAVIOUR. С помощью SET REPORTBEHAVIOUR можно настроить работу отчетов как VFP6.

Также VFP9 выполняет некоторую проверку структуры таблицы при открытии DBF, чего нет у VFP6. В результате вы можете обнаружить, что открытие файлов DBF в VFP9 приведет к ошибке 2065, потому что количество записей заголовка не равно фактическому количеству записей, тогда как в более ранней версии они будут работать нормально. Это поведение можно контролировать с помощью команды SET TABLEVALIDATE.

4 голосов
/ 06 апреля 2010

Здесь уже много хороших ответов. Недавно конвертировав приложение vfp6, я бы сказал, что этот процесс был относительно безболезненным, особенно для пользы, которую дает использование редактора vfp9 и т. Д.

Один элемент не указан ... Проверьте все ваши отчеты и убедитесь, что опция отчета "Сохранить среду принтера" отключена, если только в списке нет принтера, который вы хотите жестко запрограммировать в файлах отчетов.

2 голосов
/ 25 октября 2010

Я столкнулся с несколькими проблемами при обновлении нашего источника до VFP9. Хотя большинство из них довольно незначительные.

Первое, что вам нужно сделать, это просмотреть документацию Что нового для VFP7, VFP8 и VFP9. Я знаю, что это похоже на боль, но это должно быть вашей первой остановкой при обновлении проекта. Документацию для VFP6 и выше можно найти на MSDN .

Многие новые свойства и методы были добавлены в классы. Если один из этих конфликтов конфликтует с пользовательскими свойствами / методами, вы столкнетесь с ошибками.

Кроме того, вам необходимо ознакомиться с требованиями Vista UAC и о том, как с ними обращаться . Программы, скомпилированные с VFP8 или ниже, выполняются в режиме «совместимости». При использовании программ VFP9 с помощью манифеста приложения для Vista это означает, что для требуемого уровня выполнения в манифесте приложения установлено значение asInvoker. VFP8 и ниже не включают это в манифест (или вообще не включают манифест), следовательно, режим совместимости.

Это означает, что при запуске программы в Vista некоторые вещи могут не работать или вызывать ошибки.

  1. Попытка записи в HKEY_LOCAL_MACHINE в реестре завершится неудачей.
  2. Попытка записи файла в% programfiles% или в любую защищенную папку приведет к ошибке. Программы должны записывать только в общие папки .

У вас есть возможность обновить манифест приложения , но я не обязательно рекомендую его, если ваша программа не требует административных привилегий.

Наконец, существует ряд несовместимостей Vista - , некоторые из которых имеют дело с Aero - которые были исправлены с помощью VFP9 SP2. Поэтому, если вы собираетесь использовать VFP9, обязательно используйте Service Pack 2.

...