2017-07-21 123 views
0

我正在修改已升級很多次的很舊的訪問應用程序。它可能已經開始爲2003年。我正在2013年運行。我修改了一個查詢來篩選我剛剛添加到表中的列。我的表格和我的報告都沒有使用修改後的查詢。我知道這是因爲我在表格中添加了一列,然後修改了查詢以過濾此列。查詢運行良好。報告和表格肯定使用舊的查詢。該應用程序還使用VB6代碼,實際上根據所選報告添加更多SQL。如果我創建一個全新的報告,它將執行新的查詢。我不想創建所有新的報告。並且請我知道VB6也很老了,但是這家公司正在倒閉,這只是一種組織類型。訪問2013年未使用修改查詢的報告/表單

回答

0

訣竅是要弄清楚報告從運行時間獲取數據的位置。因爲你說有VB6代碼改變了SQL,這可能會很複雜。

有很多方法可以改變,並且目前的問題中的信息,我不可能縮小它,但有一些地方,你可以看看檢查。

報告的數據可以通過多種方式指定。

  • 您可以選擇一個表或查詢作爲報表屬性中的數據源。如果發生了這種情況,那麼只要修改查詢,報告就應該已經更改。所以它可能不是。
  • 報告可以使用該屬性定義自己的查詢。這可以是使用表和其他查詢的選擇語句,選擇特定字段並應用過濾器。
  • 你說有一堆VB6也改變了查詢。 (你確定它是VB6而不是VBA?可能無關緊要)。這將改變你需要看的地方。

所以我會做的是:

  • 看報表的性質,並找出數據源是什麼。看看它只是一個查詢名稱或一條SQL語句。如果它是一條SQL語句,請在構建器中啓動它並查看是否可以找到您修改的查詢,或者重新應用修改並查看是否有效。

如果這不起作用,那麼你將需要看看VB代碼。找到修改此報告的SQL的代碼。最有可能的是,會出現一個按鈕,用戶點擊該按鈕會運行一堆代碼,更新SQL並啓動報告。在那裏粘貼一個斷點並逐步完成,直到你看到一些正在構造的SQL,然後研究如何從那裏改變SQL。

最有可能你將有兩種策略:

  • 的VB代碼構造SQL原料,它看起來像隱約在查詢的SQL,但有不同的標準。因此,您可以使用修改後的查詢中的修改過的SQL來建模您需要在VB構建的SQL中進行的更改。VB代碼的功能與SELECT * FROM [TheQuery] WHERE類似,只是添加了條件。這可能會讓你的生活更輕鬆,但可能並非如此,因爲修改查詢並沒有改變任何事情。
+0

非常有趣的是,我從報表屬性表中刪除了記錄來源,並且看到它仍然正確執行...我假設這是告訴我,記錄源查詢甚至沒有被使用,你是否同意這種評估? – lesslag

+0

@lesslag是的,我同意。在啓動報告之前,它可能正在代碼中填充。 – GregHNZ

+0

謝謝你的幫助! @GregHNZ – lesslag