有客戶反映,我們的軟件ACCESS數據庫版本在使用時會出現"Microsoft Office Access 不能在追加查詢中追加所有記錄"的錯誤。使用客戶的數據庫調試軟件發現錯誤出現在執行下圖這條SQL語句的時候,把SQL語句拿出來直接在Access里面執行同樣報錯,看來不是我們軟件的問題。。。
"一定是Access出問題了",這是我的第一反應。連錯誤提示都是這樣沒有參考價值,什么叫"Microsoft Access設置0字段為Null是因為類型轉換失敗,它未將1記錄添加到表是因為鍵值沖突,沒有添加0記錄是因為鎖定沖突,沒有添加0記錄是因為驗證規則沖突。"??? That's why I hate Access!!
既然提示了類型轉換失敗和鍵值沖突,就看看表結構吧,如下圖:
0字段應該是自動編號字段TRADEID了,1字段就是ACCOUNTNO。
先看看ACCOUNTNO有沒有鍵值沖突。錯誤語句插入的是691,換個別的試試,還是不行。再說這個字段也沒有要求數據唯一性,應該不是這里的問題了。
只可能是TRADEID字段的問題了。自動編號字段能保證唯一性,不知道"類型轉換失敗"和"鎖定沖突"指的是什么。只能修改一下這個字段試試,把長整型改為整型,也不行。TRADEID是主鍵,把主鍵去掉試試,居然就行了!!!成功插入數據,沒有提示那個錯誤,見下圖。
由此看來,這應該是鎖定沖突造成的。至於"鎖定沖突"是如何造成的,我在網上Google了一下,主要是因為多人同時操作數據庫。
至此,問題原因和解決方法都已經明確。我的軟件設計是在單機環境下使用,大部分客戶使用方法正確,通過軟件進行操作,數據庫讀寫正常。該客戶手工打開數據庫操作,造成數據庫鎖定沖突。
知道原因就知道其實有更簡單的解決方法,熟悉Access的都知道J.