2010-03-10 140 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.