0

私はプログラミングの初心者/初心者なので、私の素朴さを許してください。MS Access 2013 には、テーブル 1 とテーブル 2 の 2 つのテーブルがあります。 [テーブル 1].[フィールド 6] に入力された値を [テーブル 2].[フィールド 2] の値と比較する方法が必要です。一致が見つかったら、[表 2].[フィールド 3] の対応する行の値を取得し、[表 1].[フィールド 13] の式で使用します。

「If」ステートメントを使用することを考えましたが、比較される 2 つのテーブルに 10 個の潜在的な値があるため、式が大きくなり、計算に永遠に時間がかかります。特に、表 1 が数百/数千のレコードを取得し始めると。

誰かがこれを行う最も簡単でクリーンな方法を教えてもらえますか?

編集 - リクエストごとに詳細を追加します。

トラック、鉄道車両、トートバッグなどの商品を販売しています。したがって、契約を締結するときは、トラック 2 台、鉄道車両 3 台、コンテナ 10 台などを入力します。これらの輸送方法はそれぞれ重量が異なり、価格/販売方法も異なります ($/ポンド、$/メートルトンなど)。 .) 輸送モードによって異なります。アイデアは、契約が入力されたときに、[テーブル 1].[フィールド 6] に入力された輸送モードを調べ、それをマスター重量テーブル (テーブル 2) と比較して、輸送の数を取得するというものでした。その輸送モードはポンド、トンなど (この変数を「x」と呼びましょう) であるため、その数値 (表 1 の他のフィールドのボリュームと価格と共に) を使用して、新しいフィールドで総収益数を生成できます。 = "x" [ボリューム] [価格]。

例として、3 台のトラックを販売したとします。輸送手段としてトラックが入力された場合、トラックの容積 (46,000 ポンド) を検索し、その数値を式で使用します。46,000 x トラック 3 台 x 0.39 ドル/ポンド = 53,820 ドル。

シェルを作成し、Revenue フィールドに式を作成できます。単純に「If」ステートメントを実行して 10 個すべてを含めずに、変数「x」(比較したテーブルに基づく重み) を式 ="x" [出来高] [価格]に入れる方法がわかりません。交通手段は表現で。式で 10 の異なる論理テストを行う代わりに、テーブルまたはクエリを使用して "x" を返す方法があると思います。

4

1 に答える 1

0

次の SQL ステートメントを試すことができます。

UPDATE [Table 1] INNER JOIN [Table 2] ON [Table 1].[Field 6]=[Table 2].[Field 2] SET [Table 1].[Field 13] = [Table 2].[Field 3];

[Table 2].[Field 3] * [Table 1].[Other field]ボリュームと価格を乗算したい場合は、任意の数のフィールドに追加できます。

WHERE [Table 1].[Field key] = "current_record_key"現在のエントリのみを更新するように追加することもできます。そうしないと、表 1 全体が更新され、時間の経過とともに重みが変化すると問題になる可能性があります。別の選択肢の場合WHERE [Table 1].[Field 13] IS NULL、そのようにすると、総収益が空のフィールドのみが更新されます。

于 2013-03-12T16:36:33.347 に答える