2014-03-06 35 views
1

我的安裝程序使用Access 2000連接到SQL 2008服務器的表。訪問表單 - 從鏈接表上的連接查詢編輯記錄

我已經創建了一個窗體,顯示來自單個鏈接表的數據,該數據庫與數據庫中的視圖中的1個字段(請參閱下面的SQL)進行連接。表和視圖之間的關係是1:1,爲什麼這不應該導致問題。但是,我體驗到我無法通過表單更新記錄集中的記錄。試圖寫入其中一個字段時,出現錯誤消息「Recordset can not be updated」。

根據http://rogersaccessblog.blogspot.dk/2009/11/this-recordset-is-not-updateable-why.html有關於此的很多問題,但我會說我履行規則沒有記錄集不可更新。

我已經看到它在相同的設置下工作,所以我對現在鎖定記錄集的原因感到困惑。

這是我的SQL查詢:

SELECT dbo_Balance.*, 
[dbo_Amount_summary_all_specifications].[SUM_AMOUNT] AS Specification 
    FROM dbo_Amount_summary_all_specifications 
RIGHT JOIN dbo_Balance ON 
([dbo_Amount_summary_all_specifications].[Version]=[dbo_Balance].[Version]) AND 
([dbo_Amount_summary_all_specifications].[Year]=[dbo_Balance].[Year]) AND 
([dbo_Amount_summary_all_specifications].[Period]=[dbo_Balance].[Period]) AND 
([dbo_Amount_summary_all_specifications].[Kardex]=[dbo_Balance].[Kardex]) AND 
([dbo_Amount_summary_all_specifications].[Account]=[dbo_Balance].[Account]) 

WHERE [dbo_balance].[Balance]<>0; 

預先感謝您!

UPDATE 2014年3月12日

我在我的SQL數據庫中的數據源:

CREATE VIEW [dbo].[VW_Overview_balance] 
AS SELECT TOP (100) PERCENT dbo.Balance.ID, dbo.Balance.Year, dbo.Balance.Period, 
dbo.Balance.Version, dbo.Balance.Kardex, dbo.Balance.Account, dbo.Balance.Kardex_name, 
dbo.Balance.Kardex_code, dbo.Balance.Kardex_hierarki, dbo.Balance.Coop_franchise, 
dbo.Balance.Chain, dbo.Balance.Chain_name, dbo.Balance.Responsible, 
dbo.Balance.Balance, dbo.Balance.Comment, dbo.Balance.Bank_account, 
dbo.Balance.Approver, dbo.Balance.Timestamp, dbo.VW_specifications_bank.SUM_AMOUNT_bank, 
dbo.VW_specifications_system.SUM_AMOUNT_system,dbo.VW_specifications_erp.SUM_AMOUNT_erp, 
dbo.VW_specifications_user.SUM_AMOUNT_user, dbo.SUM_Total_Balance.Tot_Balance, - 
ISNULL(dbo.Balance.Bank_account, 0) - ISNULL(dbo.VW_specifications_erp.SUM_AMOUNT_erp, 0) 
+ ISNULL(dbo.VW_specifications_bank.SUM_AMOUNT_bank, 0) - 
ISNULL(dbo.VW_specifications_system.SUM_AMOUNT_system, 0) - 
ISNULL(dbo.VW_specifications_user.SUM_AMOUNT_user, 0) AS Specification, 
dbo.SUM_Total_Balance.Tot_Balance - ISNULL(dbo.Balance.Bank_account, 0) - 
ISNULL(dbo.VW_specifications_erp.SUM_AMOUNT_erp, 0) + 
ISNULL(dbo.VW_specifications_bank.SUM_AMOUNT_bank, 0) - 
ISNULL(dbo.VW_specifications_system.SUM_AMOUNT_system, 0) - 
ISNULL(dbo.VW_specifications_user.SUM_AMOUNT_user, 0) AS Difference, dbo.Account.Account_name 

FROM dbo.Balance LEFT OUTER JOIN dbo.Account ON 
dbo.Balance.Account = dbo.Account.Account_no LEFT OUTER JOIN dbo.SUM_Total_Balance 
ON dbo.Balance.ID = dbo.SUM_Total_Balance.ID LEFT OUTER JOIN dbo.VW_specifications_bank 
ON dbo.VW_specifications_bank.Balance_id = dbo.Balance.ID LEFT OUTER JOIN dbo.VW_specifications_erp 
ON dbo.VW_specifications_erp.Balance_id = dbo.Balance.ID LEFT OUTER JOIN dbo.VW_specifications_system 
ON dbo.VW_specifications_system.Balance_id = dbo.Balance.ID LEFT OUTER JOIN dbo.VW_specifications_user 
ON dbo.VW_specifications_user.Balance_id = dbo.Balance.ID 

WHERE  (dbo.Balance.Kardex_code <> 3) 
AND (dbo.Balance.Kardex_code <> 13) 
AND (dbo.SUM_Total_Balance.Tot_Balance <> 0) 
AND (dbo.Balance.Account IN 
(SELECT Account_no FROM dbo.Account AS Account_1)) 

Access數據庫中的查詢已減少到:

SELECT dbo_VW_Overview_balance.Kardex, dbo_VW_Overview_balance.Account, 
dbo_VW_Overview_balance.Kardex_name, dbo_VW_Overview_balance.Kardex_hierarki, 
dbo_VW_Overview_balance.Coop_franchise, dbo_VW_Overview_balance.Chain_name, 
dbo_VW_Overview_balance.Responsible, dbo_VW_Overview_balance.Comment, 
dbo_VW_Overview_balance.Approver, dbo_VW_Overview_balance.Tot_Balance, 
dbo_VW_Overview_balance.Specification, dbo_VW_Overview_balance.Difference, 
dbo_VW_Overview_balance.Year, dbo_VW_Overview_balance.Period, 
dbo_VW_Overview_balance.Version, dbo_VW_Overview_balance.Account_name 

FROM dbo_VW_Overview_balance 

ORDER BY dbo_VW_Overview_balance.Kardex, dbo_VW_Overview_balance.Account; 
+0

表單上的「Recordset Type」是什麼?它是不是'動態集[不一致的更新]' – Zaider

+0

它是'Dynaset'。我嘗試過使用'Dynaset [Inconsistent Updates]',但這似乎並不奏效 - 至少在第一次測試中沒有。我將在一分鐘後再次測試,當我有新的數據可以使用時:-) – Whispers

+0

我現在用'Dynaset'和Dynaset'[Inconsistent Updates]'進行了測試,結果保持不變:無法更新記錄集:-( – Whispers

回答

0

support.microsoft.com/KB/304179的幫助下,我想出了一個解決方案:雖然我在SQL數據庫上有主鍵,但我沒有在鏈接表中配置它在Access中也是如此。通過更新鏈接表並手動分配主鍵,我現在可以通過查詢和表單更新記錄集!