将应用程序从Visual Foxpro 6转换为Visual Foxpro 9有多容易?

Jam*_*rry 3 foxpro visual-foxpro

将Visual Foxpro 6应用程序转换为Visual Foxpro 9时是否有任何问题; 还是直截了当?

在这个过程中我应该注意哪些问题?

DRa*_*app 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()按问题分组的一次更新.我发现如果你这样做了

SELECT NVL(SUM(无论),0)作为FinalColumn,如果你遇到没有合格记录的总和,NVL()将获取该空值并强制它为零,从而防止后续的NULL问题......同样,适用于MIN(),MAX(),AVG()等.

这些只是瞪着我的一些大事......


Ala*_*n B 5

我会说这一般都是相当轻松的.正如DRapp所提到的,您需要查看任何SQL-SELECT语句来衡量修改GROUP BY子句的优缺点,或者是否更容易使用SET ENGINEBEHAVIOUR.使用SET REPORTBEHAVIOUR可以使报告像VFP6一样工作.

当您打开VFP6没有的DBF时,VFP9也会执行一些表结构检查.因此,您可能会发现在VFP9中打开DBF文件将引发错误2065,因为标头记录计数不等于实际记录计数,而它们在早期版本中可以正常工作.可以使用SET TABLEVALIDATE命令控制此行为.


Ric*_*mer 5

本周我处理了几个VFP 6应用程序问题,他们一直很沮丧,因为VFP 9 SP2可以轻松解决这些问题.

另外需要注意的是,VFP 6 ODBC驱动程序是否访问了您的数据.如果您使用VFP 7到VFP 9中实现的任何新数据库功能(如数据库事件),或者像varchar这样的新数据类型,您的数据将转换为ODBC驱动程序无法处理的格式.而是使用新的VFP OLE DB驱动程序,而某些工具无法处理OLE DB功能.

您会发现新的报表设计器方式更强大,但用于渲染的GDI +将需要在报表上调整一些字段大小以摆脱溢出的星星.你可以使用SET REPORTBEHAVIOR来避免这种情况,正如Alan所说,但你真的想要利用报告预览功能.

你可能会被烧毁的另一件事是AFIELDS()命令在数组中创建更多元素.因此,您可能需要调整一些代码来处理创建的数组中的其他行.

如果您遇到任何问题,请在此处发布,我们将帮助您.

里克舒默