2010-03-10 141 views

回答

9

是......取决于您项目中的各种元素。 我现在有两个VFP9 SP1的应用程序,并VFP9 SP2(与HotFix3报告)

的一些问题,以帮助VFP9下与旧格式的SQL运行查询

设定的发动机性能70 你可能想留70.在8和9中的一些增强强制一个奇妙的技巧,早期用懒惰的小组按照子句进行查询......只有在你关心的几列中才会用到,尤其是当你加入查找表时,你一定会知道无论如何,都有相同的价值。在8和9中,它要求您通过所有非集合函数来限定组......在这种情况下,您可能必须将这些“常量”列更改为MAX(SomeField)作为SomeField。无论如何,如果你的小组基于ID钥匙,那么max永远不会改变。

查询中已知的其他问题是SELECT SUM()。如果您执行了查询,并且没有与查询匹配的记录,则SUM()列将返回为NULL,并且当您希望获得数字时,您将获得意外的数据类型。一个简单的方法是始终将COUNT(*)添加为ActualRecords,它总是返回一个数字。然后,您可以检查“Result.ActualRecords = 0”是否会通知用户,中止报告,然后继续。

报告显然是从6增强,并具有一些非常好的功能,尤其是多个链接的表格报告区域,而无需执行“打印时间”并在特定条件下重叠控制。这对于最终报告中想要的多个相关表格非常有用。

根据问题对SQL SUM()组进行一次更新。我发现如果你做一个

SELECT NVL(SUM(whatever),0)作为FinalColumn,如果你运行到没有限定记录的总和,NVL()将采用这个空值并强制它为零,从而防止后续的NULL问题...类似地,适用于像MIN(),MAX(),AVG()等等。

这些只是眩光我的一些大的。

+0

+1提及SQL GROUP BY更改。 – DaveB 2010-03-11 00:13:18

5

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

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

5

本周我处理了几个VFP 6应用程序问题,他们一直很沮丧,因为问题很容易用VFP 9 SP2解决。

另一件需要注意的事情是如果您的数据被VFP 6 ODBC驱动程序访问。如果您使用在VFP 7中实现的任何新数据库功能(如数据库事件)或新数据类型(如varchar),则您的数据将转换为ODBC驱动程序无法处理的格式。新的VFP OLE DB驱动程序被使用,而有些工具无法处理OLE DB功能。

你会发现新的报表设计器的方式更强大,但用于渲染的GDI +将需要对报表进行一些字段大小调整,以摆脱溢出的星星。您可以像Alan注意到的那样使用SET REPORTBEHAVIOR来避免这种情况,但是您确实希望利用报告预览功能。

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

如果遇到任何问题,请张贴在这里,我们会帮助你。

Rick Schummer

4

很多好的答案已经在这里。最近转换了一个vfp6应用程序,我认为这个过程相对来说比较轻松,尤其是使用vfp9的编辑器等带来的好处。

一个项目未指出...检查所有报告,并确保“保存打印机环境”报告选项将关闭,除非列出的打印机真的是您想要硬编码到报告文件中的打印机。

2

我遇到了几个问题,我们的源代码升级到VFP9。虽然它们大多数都很小。

您需要做的第一件事是查看VFP7,VFP8和VFP9的新增功能文档。我知道这看起来很痛苦,但它应该是您升级项目时的第一站。 VFP6及更高版本的文档可在MSDN上找到。

许多新的属性和方法已添加到类中。如果其中之一与自定义属性/方法冲突,则会遇到错误。

另外,您需要了解Vista UAC requirementshow to deal with them。使用VFP8或更低版本编译的程序在“兼容性”模式下执行。使用VFP9程序编译Vista应用程序清单,这意味着应用程序清单中的requestedExecutionLevel被设置为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.