簡體   English   中英

使用 VBA 中的 bigint 字段更新 SQL 表(MS Access)

[英]Update SQL table with bigint field from VBA (MS Access)

enter code here我在 SQL Server 2005 上有一個帶有 bigint 主鍵和 MS Access 2003 前端(鏈接表)的表。

我想更新以 bigint 作為主鍵的表的記錄。 我用

CurentDb.execute _
    "Update myTable SET Field1 =1 , Field2 = 'test' WHERE bigintKey = " & myVar

在條件表達式中發現數據不匹配。

如何從 MS Access 更新具有 bigint 字段的 MS SQL 數據庫上的記錄?

編輯:當我這樣做時它不會給我一個錯誤

CurentDb.execute _
    "Update myTable SET Field1 =1 , Field2 = 'test' WHERE bigintKey = '" & _
    myVar & "'"

但它不會更新記錄...

沒有太多理由使用范圍從 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 的主鍵值。

您最好將該主鍵更改為 sql 端的 int 列。 如果您進行此更改,則一切都會正常進行。 我建議這樣做。 記住,在 sql server 中,ms-access 中的 int = long 。

嘗試在 access 中的表視圖中打開鏈接表。 我發現帶有 bigint 的 sql 2005 表作為 PK 甚至無法正確顯示(您將在每一列中看到已刪除)。

如果您刪除 sql server 端的 PK 設置,我發現鏈接可以正常工作。 換句話說,您可以擁有唯一索引並將其設置為遞增(身份),但不要將其設置為 PK。 從文檔的角度來看,這並不理想,如果強制關系中還有其他表,那么我不建議刪除 PK 設置(實際上你不能這樣做)。

因此,就目前而言,如果 PK 是 bigint,我將無法成功鏈接到 SQL 服務器表。 請注意,其他列作為 bigint 可以正常工作。 它們被簡單地鏈接為 ms-access 的文本數據類型。 我看到您的代碼示例正確地假設這將是一個文本列(這對您來說是正確的)。 只有當 bigInt 是 PK 列時才會出現這種情況。

我會將 sql 端的 bigint 更改為 int(我只是看不出需要這么大的 pk)。 如果您必須將該列保留為 bigInt,則只需刪除 sql 端的 PK 設置(如果可能)。

因此,您可以將該 bigInt 列作為唯一索引,並且它可以繼續作為自動遞增標識列。 但是,它不能是 BigInt PK,那是行不通的。

條件表達式中的數據不匹配通常意味着您的 SQL 語法錯誤。 嘗試將生成的 SQL 復制到 MS Access 中的新查詢中並直接從 Access 運行。

在您的示例中 myVar 是什么? 生成的 SQL 是什么?

那么,您有 MS Access DB,它是 SQL Server 的前端嗎?
要么
Access DB 是否已將表鏈接到 SQL Server?

運行 DML 語句后,通過查看 SQL Server(使用查詢分析器)查看它是否更新了 SQL Server。 我的猜測是,Access 可能不會刷新它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM