2015-09-28 39 views
1

最近我已將我的Access 2000後端數據和表遷移到2012 SQL服務器。在訪問前端中,我鏈接了已遷移的SQL表。除(現在)一種形式之外,大部分工作正常。訪問2000 - 無效的字符值轉換規範(#0) - 訪問SQL

在這種形式的數據正在從SQL服務器使用此查詢加載:

SELECT * FROM qryAbonementens WHERE EindDatum is null or EindDatum>=now() 

它還使用的過濾器和排序:

((Lookup_cmbOrderNummer.Omschrijving="GJK")) 

以及排序:

Lookup_cmbOrderNummer.Omschrijving 

這些事情可能是無關緊要的,但我只是儘可能發佈。

表單中的數據加載完美的,但是當我試圖改變一個記錄的形式,我不斷收到:

error invalid character value for cast specification (#0)

雖然檢查出有相同問題的帖子中,我遇到了這個帖子:

MS Access error "ODBC--call failed. Invalid character value for cast specification (#0)"

這讓我相信,我錯過了PK所以首先我的地方在Access設計模式,檢查鏈接的表:

enter image description here

Tekst = text,Numeriek = numeric,Datum/tijd = date(抱歉它是荷蘭語)。

SQL中的同一個表是這樣的:

enter image description here

他們都有PK,所以我想這是沒有問題的。

雖然在查看兩種數據類型時,可以在InkoopPrijsVerkoopPrijs字段中看到2個差異。在SQL中,這兩個是decimals(30,2),並且在鏈接訪問表中的設計視圖中,我猜測它們是未知的,因此它們正被轉換爲text值。也許這是我的錯誤信息的原因?

我試圖改變並記錄給出了錯誤是這樣的一個(但它是所有記錄): enter image description here

我在什麼地方閱讀,添加時間戳字段添加到SQL服務器可以幫助,但我不知道它也適用於我的情況或如何做到這一點。

回答

0

好吧我修好了。 @ Andre451後關於將SQL服務器中的30,2十進制值更改爲18,2給了我the record is changed by another user錯誤。這引起了我看不同的問題,而不是固定

error invalid character value for cast specification (#0)

錯誤我看着

record was changed by another user error

我碰到此帖一:Linked Access DB "record has been changed by another user"

這裏有人建議添加TimeStamp字段添加到SQL表。所以我做了,現在它似乎再次工作!它也似乎與原來的(十進制30,2)值!

2

正如你所猜測的那樣,decimal(30, 2)列是問題所在。
它們太大,無法將Access用作數字。

我可以重現與Access 2010的問題,但我可以輸入數字數據到字段中。但是當我輸入文字時,我會得到完全相同的錯誤信息。

decimal(18,2) vs. decimal(30,2)

decimal(18,2)工作正常(它是SQL Server 2008中默認的小數精度)。
你肯定沒有10^30範圍內的價格? :-)

design view

您也可以考慮使用money數據類型,而不是,雖然我不知道如何訪問以及2000個工作這一點。

+0

感謝您的意見,但它不起作用。我將SQL服務器中的數據類型更改爲「十進制(18,2)」而不是「30,2」。儘管如此,這並沒有任何效果。我現在正在收到錯誤:「數字縮放已導致數值削減」。這導致我現在有很多或'#error'值(所以我想我需要30,2)?除此之外,當我更改記錄時,另一位用戶更改了記錄,如果保存記錄,則更改將被覆蓋。保存記錄正在變灰。 – Nicolas

+0

P.S.當我將小數的SQL長度更改爲'18,2'時,訪問鏈接表從文本更改爲'numeric'('decimal 18,2')。 – Nicolas

+0

@Nicolas:您何時何地得到縮放誤差?你真的在表中有小數點前18位數字嗎? – Andre