2012-05-23 46 views
1

我們剛剛從Access 2003升級到Access 2010和字符串比較與一個無效的過程調用錯誤而失敗時,則使用缺省條件。我已經重新創建2個想必相關問題在只包含默認表,用下面的SQL和僅包含下面的代碼模塊查詢一個新的Access 2007格式的數據庫,所以我嚴重懷疑這是一個損壞問題。 首先以下子上如果再與運行時錯誤5行失敗:無效的過程調用或參數Access 2010中的字符串比較無效的過程調用

Option Compare Database 
Option Explicit 
Sub checkStrCmp() 
    Dim str As String 
    str = "s" 
    If str = "s" Then 
     MsgBox "works" 
    End If 
End Sub 

如果我更改選項比較數據庫到選項比較文本子的作品如預期,但是這似乎是一個壞主意,因爲我可能想要在單個子文件中進行文本以及數字比較。

我也越來越SQL內的字符串比較函數「無效的過程調用」錯誤。 Replace函數需要可選的比較參數。

Select replace("foo-bar-baz", "-", "|", 1,-1); 

生成「無效的過程調用」錯誤

設置參數的比較任何可用的值(0-3)的作品如預期:

SELECT replace("foo-bar-baz", "-", "|", 1,-1, 0); 

產生「富|酒吧|巴茲」

有其他人看到了這一點?有沒有需要調整的設置?除了「數據庫損壞」之外的任何其他想法,這些都是我通過Google找到的。 TIA

apoligies的草率代碼塊我不能爲我的生活讓他們的工作權利。

UPDATE:我應該提到我正在運行XP Pro sp3。

問題似乎僅限於我對我的盒子創建數據庫。當我打開我在我的網絡上的其他工作站上創建的測試數據庫時,我看到了這個問題,但是當在這些工作站上創建新數據庫時,無法重新創建它。我在其他兩個工作站(安裝了相同的OS和MS Office版本)上創建的數據庫在我的機器上打開時也能正常工作。當我從我的機器上在這些數據庫中插入新模塊時,我也無法重新創建問題。

總之,這個問題似乎只存在於我的機器上創建的數據庫(以及在我的機器上轉換爲2007格式的舊的2003格式數據庫中)。我最好的猜測是我的安裝已經完成,但我想知道如何以及爲什麼在重新安裝Office的請求之前處理IT。我也想排除與我盒子上的其他軟件衝突。

+0

我知道在2007年,有一個缺失的參考可能會導致失敗的最基本的操作。我已經讓系統在'date'上拋出一個錯誤,只是因爲引用被更新了,舊的不再提供 – SeanC

+0

@Sean Cheshire。謝謝,但因爲這是在一個新的分貝香草代碼發生,所以我懷疑這是問題 – Norm

+1

在您有問題的機器上,檢查Access的設置爲「新的數據庫排序順序」。 (使用Access 2007,該設置可從Access Options - > Popular,然後在「Creating Databases」標題下獲得)。如果它不是General,則將其更改爲General,然後創建一個新數據庫並查看是否仍有問題。 – HansUp

回答

2

您的代碼模塊並不需要共享相同的Option Compare設置。因此,您可以將那些應該使用文本比較的過程放入其聲明部分中有Option Compare Text的模塊中。

不過,我不明白你的說法,「我可能要瓶坯文本以及單個子裏面的數值比較。」根據訪問幫助主題,該Option Compare Statement是「使用模塊級聲明比較字符串數據時使用的默認比較方法「。換句話說,Option Compare對數值的比較沒有影響。

編輯:既然問題被限制爲Option Compare Database只有一臺機器上創建的數據庫文件,我會建議你檢查訪問‘新建數據庫排序次序’這臺機器上設置。如果將它設置爲其他任何內容,則將其更改爲以「常規」開頭的選項。然後創建一個新的數據庫,看看你是否仍然有問題。

此建議的原因是Option Compare Database告訴Access使用數據庫的代碼頁設置進行排序。而且「新數據庫排序順序」可以將代碼頁設置爲永不給我這種麻煩的代碼頁。但是,我對代碼頁細節的理解很淺,我從不改變它,也不知道其他設置的後果是什麼。

+0

謝謝。很高興知道,不知怎的,我只是假設Option Compare參考了所有的比較結果。+1用於糾正我對VBA工作方式的誤解,並突出顯示Access'幫助文件中實際有用的信息 – Norm