2

これは私が使用したコードです

UPDATE Customers c   
SET c.TotalP= 
   (SELECT SUM(b.Price) 
    FROM Products b
   WHERE b.CustomerID= c.CustomerID)

Customers テーブルの TotalP フィールドに値 x を設定しようとしています。値 x は、Customer ID が同じである Products テーブル内の対応する価格の合計に等しくなります。

上記のコードは次のエラーを返します"Operation must be an Updateable query"

4

2 に答える 2

2

DSum を使用できます。

UPDATE Customers   
SET TotalP = DSum("Price","Products","CustomerID = " & CustomerID)

しかし、クエリから情報を取得できるのに、なぜ計算された値でテーブルを更新するのかという疑問が生じます。

于 2012-11-02T21:16:10.300 に答える
0

VBA スクリプトのほかに、Microsoft には 3 つの方法があります: https://support.microsoft.com/en-us/kb/116142

以下は、クロス結合を使用して一度に 1 つのレコードを更新するための 2 つの SQL ステートメントです。

UPDATE tmp SET tmp.non_null_cnt = 0;

UPDATE tmp, ESC_Results SET tmp.non_null_cnt = [tmp].[non_null_cnt]+1
WHERE ESC_Results.asset4_id Is Not Null;

保存されたすべての行の合計を再計算する必要があるため、他の方法よりも遅くなります。

于 2015-06-29T18:54:18.630 に答える