2010-03-10 3 views

ответ

9

Да ... в зависимости от различных элементов вашего проекта. я в настоящее время есть приложения в обоих VFP9 SP1 и VFP9 SP2 (с HotFix3 для отчетности)

Некоторые вопросы, чтобы помочь запустить под VFP9 со старым форматом SQL запросов

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

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

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

ONE UPDATE на SQL SUM() Группа по выпуску. Я обнаружил, что если вы делаете

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

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

+0

+1 Для упоминания изменения SQL GROUP BY. – DaveB

5

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

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

5

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

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

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

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

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

Рик Schummer

4

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

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

2

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

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

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

Также вам необходимо узнать о Vista UAC requirements и how to deal with them. Программы, скомпилированные с помощью VFP8 или ниже, выполняются в режиме совместимости. С программами VFP9 скомпилированы с помощью Application Application Manifest, что означает, что requestExecutionLevel в манифесте приложения имеет значение asInvoker. VFP8 и ниже не включают это в манифест (или вообще не включают манифест), следовательно, режим совместимости.

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

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

У вас есть опция updating the Application Manifest, но я бы не стал рекомендовать ее, если ваша программа не требует административных привилегий.

И, наконец, существует ряд несовместимостей Vista - some dealing specifically with Aero - которые были исправлены с помощью VFP9 SP2. Итак, если вы собираетесь использовать VFP9, обязательно используйте Service Pack 2.