2012-03-12 53 views
5

我有一個表中的數據行顯示爲#DELETED在一臺計算機上使用Access時,但它們在SQL數據庫和使用Access的其他計算機上都正常。它似乎只是最新的200行。 Access 2007版本和ODBC MSJet驅動程序在每臺計算機上的最新版本看起來都是相同的&。一個建議是將任何PK或FK改爲int,但它們已經是。行顯示爲#DELETED

任何想法爲此修復?

回答

8

這發生在表主鍵值超出MS Access支持的範圍時,通常如果您在SQL Server中使用「BigInt」類型,如果您只是想要讀取數據,那麼只需創建一個「快照-shot「查詢,並且所有行將正確顯示,因爲」快照「不需要讀取所有索引。

如果您需要隨時更新這些行中的數據,那麼我建議使用ADO記錄集。

+0

如果這是一個Access問題,它將如何影響一個用戶而不是一次性影響所有人? – TesseractE 2014-11-04 16:58:48

+0

很難打電話,設置中可能會有細微的差異,可能是服務包或補丁程序級別,32位和64位,但沒有看到兩個實例分別是一個謎。 – 2014-11-06 17:39:54

+0

我想問的原因是,我偶爾在一個項目上看到過這種情況,但它一次不會影響多個用戶,並且通常會自行消失。 顯然我寧願完全避免它,但如果這是廣泛報道的'bigint'問題應該是更廣泛的,我應該思考。 – TesseractE 2014-11-06 22:46:15

4

考慮在SQL的主鍵數據類型的使用數字(18,0)代替BIGINT。如果在SQL Server端將其設置爲數字數據類型,MS Access可以解析有效的大整數PK。我在Access 2010的SQL 2008R2上遇到了同樣的問題,其中所有行在使用bigint PK時顯示「#DELETED」。

+0

感謝您的信息,我會盡快嘗試。但你見過這個:http://stackoverflow.com/questions/6838374/sql-server-bigint-or-decimal18-0-for-primary-key?不確定小數和數字是否被認爲是一個很大的差異。 – 2013-01-09 23:04:53

2

嗯,只是想添加解決方案,爲我工作。

我將一些視圖鏈接到MS Access,這些工作正常。過了一段時間後,我改變了Integer之前的那一列的類型,並且我做了VARCHAR。由於此列是我的表的主鍵(我在MS Access中添加View時也選擇了主鍵),因此在更改後開始顯示「#DELETED」。爲了解決這個問題,我只是用「ALTER VIEW」聲明重新執行了相同的視圖,並使用了sp_refreshview'VIEW_NAME'。

這樣做後,它開始爲我工作。 希望這可以幫助面臨同樣問題的人。

+0

這有點複雜,不過謝謝。 – 2016-10-06 01:29:03

1

我一直連接訪問前端到SQL Server 2000,2008 R2然後2014多年沒有問題。硬盤發生故障後,我在Windows 7(64位)計算機上重新安裝了SQL Server 2014 Developer,並且當移動到新記錄或單擊功能區上的保存時,突然間,我的Access 2010表單在每個字段中都會遇到可怕的#Deleted。

這很奇怪,因爲在另一臺計算機上安裝相同的Windows 7(64位)沒有問題。那麼,幾乎相同。在新硬盤上安裝SQL Server 2014後,我發現只安裝了Native Client 11.0驅動程序,因此我修改了ODBC連接字符串以在Access VBA代碼中使用DRIVER = SQL Server Native Client 11.0。當使用Access表單時,我立即開始獲取插入記錄的每個字段中的#Deleted。

調查顯示,辦理了插入的記錄正確的「好」的計算機之間的區別,並得到了中#Deleted的「壞」的計算機是存在/不存在本機客戶端10.0驅動程序。我從Microsoft下載了10.0驅動程序,安裝它並檢查我的代碼,以確保所有使用DRIVER = SQL Server Native Client 10.0的ODBC連接字符串。

一切正常,現在沒有更多#Deleted問題。

2

我有相同的#DELETED問題,這是因爲主鍵數據類型是bigint。當我查詢由第三方應用程序創建的表時,我無法修改數據類型,因此我在表上創建了一個視圖並使用CAST將數據類型轉換爲int(在檢查值保存後在表中不會導致溢出)。

1

如果您在SQL使用ROW_NUMBER()函數的字段上設置主鍵,則可以將其轉換爲int。默認情況下ROW_NUMBER()是int64(bigInt)。

1

這種奇怪的行爲可能會發生指向訪問SQL 2017數據庫(以前指向SQL 2008R2數據庫)。當我們使用更新的ODBC驅動程序(SQL Native Client 11)創建新的DSN時,行爲恢復正常。