2012-03-27 110 views
0

我使用Microsoft Access 2010 的表我想上都執行此查找價值在一個領域中的查找另一個表中的表

StockCount 

其中包含

Unit No 
Event ID 
Product Name 
Price 
Qty Open 
Qty Trnasferred 
Qty Closed 
Wastage 
Qty Staff 
Qty Sold 
Total Amount Taken 

而且Transfer 其中包含

ID 
Transaction 
Event ID 
Unit No 
Docket ID 
Product Name 
Amount 

StockCount.[Qty Transferred]字段需要是一個計算所有的總和的查找Transfer.Amount產品名稱,事件ID和單位號碼在兩個表中都匹配。

當前的SQL命令我有

SELECT Sum(Transfer.[Amount]) 
FROM Transfer, StockCount 
WHERE Transfer.[Product Name] = StockCount.[Product Name] 
    AND Transfer.[Event ID] = StockCount.[Event ID] 
    AND Transfer.[Unit No] = StockCount.[Unit No]; 

這下數量轉場的查找選項已被放置,

  • 顯示控制是列表框
  • 行源類型是表/查詢
  • 行來源是上面的SQL命令

在此之後,沒有值正在改變,我不確定原因。

+0

我是否缺少有關Access的信息?這只是一個'SELECT'語句,在任何SQL版本中都不會改變數據(除非有一些奇怪的觸發器)。通常你需要一個'INSERT'或'UPDATE' ... – 2012-03-27 16:20:52

+0

你使用Sharepoint嗎?如果不是,在表中使用查找是一個壞主意。您可以使用表單中的組合框來控制表或查詢以顯示數據。 – Fionnuala 2012-03-27 17:35:15

+0

@ X-Zero,我從Transfers表中提取數據 - 將sql語句輸入到行源中。我不確定這是否正確,請回復,如果您有任何建議 – 2012-03-27 17:55:10

回答

1

SELECT語句選擇記錄但不更改任何數據。您的SELECT語句只返回一個值,即所有金額的總和。可能要計算總計[Product Name][Event ID][Unit No]。選擇查詢這樣做看起來是這樣的

SELECT 
    [Product Name], [Event ID], [Unit No], 
    Sum(Amount) AS SumOfAmount 
FROM 
    Transfer 
GROUP BY 
    [Product Name], [Event ID], [Unit No]; 

不幸的是,這個查詢不能變成一個UPDATE查詢在訪問,因爲它包含了GROUP BY。 UPDATE查詢需要將此查詢加入到StockCount表中。結果查詢不可更新。

我看到了兩個解決問題的對策

  1. 填寫工作表與此查詢和更新從該表中的結果

  2. 更新StockCount表編程通過的結果循環上面的查詢。


我在這裏展示了第一種方法。首先創建工作表。

 
twrkTotalAmount 
--------------- 
Product Name 
Event ID 
Unit No 
SumOfAmount 

然後清除表(它可能包含的記錄從以前的運行)

DELETE * FROM twrkTotalAmount; 

現在,請將款項

INSERT INTO twrkTotalAmount 
    ([Product Name], [Event ID], [Unit No], SumOfAmount) 
SELECT 
    [Product Name], [Event ID], [Unit No], Sum(Amount) 
FROM 
    Transfer 
GROUP BY 
    [Product Name], [Event ID], [Unit No]; 

現在,您可以執行更新查詢

UPDATE 
    StockCount 
    INNER JOIN twrkTotalAmount 
     ON (StockCount.[Product Name] = twrkTotalAmount.[Product Name]) AND 
      (StockCount.[Event ID] = twrkTotalAmount.[Event ID]) AND 
      (StockCount.[Unit No] = twrkTotalAmount.[Unit No]) 
SET 
    StockCount.[Total Amount Taken] = [SumOfAmount]; 
+0

這看起來太棒了,我會試試這個謝謝你付出的時間和精力 – 2012-03-27 22:07:34

相關問題