将Visual Foxpro 6应用程序转换为Visual Foxpro 9时是否有任何问题;还是直截了当?
在此过程中我应该注意哪些问题?
答案 0 :(得分:9)
是的......取决于项目中的各种元素。 我目前在VFP9 SP1和VFP9 SP2(包含HotFix3用于报告)中都有应用程序
在使用旧格式SQL查询的VFP9下运行HELP的一些问题
设定发动机行为70 你可能希望留在70. 8和9中的一些增强功能强制了一个奇妙的技巧,用于早期通过子句查询懒惰组...只关注你关注的几个列,特别是在加入查找时无论如何,你知道的表总是具有相同的值。在8和9中,它要求您通过所有非聚合函数来限定组...在这种情况下,您可能只需将那些“常量”列更改为MAX(SomeField)作为SomeField。如果您的小组无论如何都基于ID密钥,那么最大值永远不会改变。
查询中已知的其他问题是SELECT SUM()。如果您执行了查询,并且没有与查询匹配的记录,则SUM()列将返回NULL,并且当您希望获得数字时,您将获得意外的数据类型。一个快速的问题是总是添加一个COUNT(*)作为ActualRecords,它总是会返回一个数字。然后,你可以检查“Result.ActualRecords = 0”是否做了什么来通知用户,中止报告,等等,否则继续。
报告显然从6开始增强,并且具有一些非常好的功能,尤其是多个链接表报告区域,而无需在某些条件下执行“打印时间”和重叠控制。这对于您在最终报告中需要的多个相关表格非常有用。
SQL SUM()上的一个UPDATE按问题分组。我发现如果你做了
选择NVL(SUM(无论),0)作为FinalColumn,如果你遇到没有合格记录的总和,NVL()将获取该空值并强制它为零,从而防止后续的NULL问题。同样,适用于MIN(),MAX(),AVG()等等。
这些只是瞪着我的一些大事......
答案 1 :(得分:5)
我想说一般来说这是相当轻松的。正如DRapp所提到的,您需要查看任何SQL-SELECT语句来衡量修改GROUP BY子句的优缺点,或者是否更容易使用SET ENGINEBEHAVIOUR。使用SET REPORTBEHAVIOUR可以使报告像VFP6一样工作。
当您打开VFP6没有的DBF时,VFP9也会执行一些表结构检查。因此,您可能会发现在VFP9中打开DBF文件将引发错误2065,因为标头记录计数不等于实际记录计数,而它们在早期版本中可以正常工作。可以使用SET TABLEVALIDATE命令控制此行为。
答案 2 :(得分:5)
本周我处理了几个VFP 6应用程序问题,他们一直很沮丧,因为VFP 9 SP2很容易解决这些问题。
另一件需要注意的事情是,您的数据是否由VFP 6 ODBC驱动程序访问。如果您使用VFP 7到VFP 9中实现的任何新数据库功能(如数据库事件),或者像varchar这样的新数据类型,您的数据将转换为ODBC驱动程序无法处理的格式。而是使用新的VFP OLE DB驱动程序,而某些工具无法处理OLE DB功能。
你会发现新的报表设计器方式更强大,但用于渲染的GDI +将需要在报表上调整一些字段大小来摆脱溢出的星星。 Alan可以使用SET REPORTBEHAVIOR来避免这种情况,但你真的想要利用报告预览功能。
另一件可能被烧毁的事情是AFIELDS()命令在数组中创建更多元素。因此,您可能需要调整一些代码来处理创建的数组中的其他行。
如果您遇到任何问题,请在此处发布,我们会帮助您。
Rick Schummer
答案 3 :(得分:4)
这里有很多好的答案。在最近转换了一个vfp6应用程序后,我会说这个过程相对轻松,特别是对于使用vfp9的编辑器等带来的好处。
未指出的一项...检查所有报告,并确保“保存打印机环境”报告选项已关闭,除非其中列出的打印机确实是您想要硬编码到报告文件中的打印机。
答案 4 :(得分:2)
我遇到了一些将源代码升级到VFP9的问题。但是,他们中的大多数都相当轻微。
您需要做的第一件事是查看VFP7,VFP8和VFP9的新增文档。我知道这似乎很痛苦,但它应该是升级项目时的第一站。可以在MSDN上找到VFP6及更高版本的文档。
许多新属性和方法已添加到类中。如果其中一个与自定义属性/方法冲突,您将遇到错误。
此外,您需要了解Vista UAC requirements和how to deal with them。使用VFP8或更低版本编译的程序以“兼容性”模式执行。使用VFP9程序使用Vista Application Manifest编译,这意味着应用程序清单中的requestedExecutionLevel设置为asInvoker。 VFP8及以下版本不在清单中包含此内容(或根本不包含清单),因此兼容模式。
这意味着在Vista上运行程序时,有些事情会失败或导致错误。
您可以选择updating the Application Manifest,但我不一定会推荐它,除非您的程序绝对需要管理权限。
最后,有许多Vista不兼容性 - some dealing specifically with Aero - 已使用VFP9 SP2修复。因此,如果您要使用VFP9,请务必使用Service Pack 2。