да ... в зависимости от множества элементов в вашем проекте.
В настоящее время у меня есть приложения как в 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 () и т. Д.
Это только некоторые из больших, которые смотрят на меня ...