在以下查詢中,更改表中的資料后calcValB突然開始顯示所有記錄。#Error好像突然認不出來了calcValA。
SELECT
FilePath1,
cfgVal1 InStr(Mid(FilePath1, cfgVal1), "\") AS calcValA,
calcValA InStr(Mid(FilePath1, calcValA), "\") AS calcValB,
...
FROM
Table1,
Config
WHERE ...
的cfgVal1值為 60;Len(FilePath1)總是大于 80;在位置 60 之后FilePath1至少包含一個。\
我可以使用嵌套查詢來解決它,但我想知道這是怎么發生的。
我嘗試了什么:
- 在 VBA 中執行公式——它們作業正常
- 從備份中恢復所有查詢 - 錯誤仍然存??在
- 測驗了相同的查詢適用于舊的表副本 - 它可以正常作業
- 將運算式分解為明顯的部分,
calcValA如果參考它會導致#Error - 試圖修改查詢 make
calcValA = Len(FilePath1),calcValB = calcValA 5- 這個有效 - 試圖將第三個可選引數提供給
Mid(),設定為999- 仍然錯誤
我目前的懷疑是問題可能與在具有不同區域設定的計算機上運行的 Access 有關。我正在使用斯洛伐克語,而同事正在使用美國語,我已經在 Access 中看到了這一點,例如表單部分?as?1(第 1 部分)在英國語言環境機器上引發錯誤。(有趣的是,本地化名稱默認由 Access 放在那里!)但在這種情況下,我確保查詢僅是 7 位 ASCII。
樣本資料:
Table1.FilePath1(2 條記錄)
a:\a111111\aaaaaa\aaaa\aaaaaaaaaaa\aaaaaa\aaaa aaaaaaa\aa-1\aa\aa1111111\aaaaaaa\aaaaaaa.aaa
a:\a111111\aaaaaa\aaaa\aaaaaaaaaaa\aaaaaa\aaaa aaaaaaa\aa-1\aa\aa1111111\aaaaaaaa\aa1111111.aaaa
Config.cfgVal1= 61(表中只有一條記錄)
問題是,查詢和資料在我的機器上作業,它們在同事的機器上不起作用。
uj5u.com熱心網友回復:
壓縮并修復資料庫。
執行資料庫工具>壓縮和修復資料庫命令后,查詢再次開始正常作業。代替#Error值,正確的數字開始出現在calcValB.
如果您將資料庫中的源表作為鏈接表(來自另一個資料庫)存在,請對實際包含該表的資料庫檔案執行相同的操作(不僅是表顯示為鏈接表的資料庫檔案)。
從此類錯誤中恢復后,最好檢查表中是否沒有記錄丟失。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/429066.html
上一篇:如何在ExcelVBA中嵌套查詢
