1

製品リストがあり、製品をダブルクリックすると詳細フォームが表示され、いくつかのサブフォームの列を合計し、3 つの個別の価格表で価格を検索した結果である「合計」が表示されます。簡単に言えば、4 つのパーツ リストと 12 のパラメータから構築された製品から得られる利益です。ただし、利益を表示するために製品をダブルクリックする必要はありません。製品リスト ビューで利益で並べ替えることもできます。

そのため、いずれかのテーブルで価格が変更された場合、または新しい製品定義がインポートされた場合、製品価格リストはすべての製品の新しい価格を反映する必要があります。

a )コード、b)複雑なクエリ、またはc)計算を含むフォームを開いて保存することにより、価格表の利益列を計算して、すべての製品を「ガタガタ」することで、すべての製品の利益を更新できます。製品ごとに。

質問: これらのうち、最も効率的なのはどれですか?

(おそらく、製品リストの利益列のコードでライブ計算を行うとさらに効率的になりますが、フィルタリングされた行ごとに「ライブ」で計算される場合、後でソートするためにどのコールバックなどを使用できますか?)

4

1 に答える 1

1

これは、VBA 関数が適切な状況の 1 つに思えます。Access で新しいモジュールを作成し、フォームの関数を定義します。

Public Function CalculateProfit(ProductID As Long) As Currency
Dim Profit As Currency
'' do your lookups, calculations, etc.
CalculateProfit = Profit  '' return value
End Function

これで、組み込みの VBA 関数と同じように、クエリ、レポートなどでこの関数を使用できます。

SELECT [ProductID], CalculateProfit([ProductID]) AS Profit 
FROM [Products] ORDER BY 2 DESC;
于 2013-04-03T08:41:34.507 に答える