Accessデータベースをプログラムしようとしていますが、すべてのクエリにSQLを使用しています。データベースはほぼ完成していますが、1つのクエリで困惑しています。レシピが入ったデータベースです。私は料理のためのすべての変換を持っているテーブルを持っています(テーブルスプーンからティースプーン、ティースプーンからカップなど)。ユーザーは、レシピで必要な単位を使用して材料を入れることができる必要があります(つまり、単位を標準化できず、それらが何であるかを見つける必要があります)。次に、これらを標準化された単位に変換できるようにする必要があります。野菜のようなものはカップや大さじなどで来ることができるのに対し、肉のようなものはオンスやポンドなどで来るので、これは私が問題を抱えているところです。SQLでこれを行う方法があるはずだと思いますが、できます。
6 に答える
私はこれについて別の方法で考えます。さまざまな種類の測定値 (体積、重量、数など) があります。これらの各メジャーには、異なる換算可能な単位があります。単位 (オンスなど) を選択し、単位の種類と特定の単位の両方を選択します。レシピのサイズ変更をサポートするために、同じメジャー タイプの単位間で変換する方法はありますが、異なるメジャー タイプ間の変換については心配しません。
タイプがわかれば、すべての値をその測定タイプの基本単位でデータベースに保存できます。値とおそらくユーザーの好みに基づいて、それを表示するときに適切な表示単位に変換できます。これは SQL で行うのが特に簡単だとは思いませんし、コードで変換を行うことを恐れません。適切な単位を選択して変換を行う、メジャー タイプごとに異なる表示フォーマッタが必要です。
料理には2つの異なるタイプのユニットを分離する必要があると思います
- 重量で
- ボリューム別
これらの単位を標準化することはできません。または、2 杯のミートが必要であることを知ることは、どのような意味を持ちますか?
次に、これら 2 つの異なるタイプの単位を区別すると、2 つの 1 つの単位を標準化できます。多分:
- カップ、ティースプーン、... ml
- 肉、野菜、g またはポンド、その他何でも
それらがすべて同じベースを持っている場合、それらを比較することができます。
ユーザーに使用しているユニットを尋ねていて、何をしようとしているのかがわかっている限り、ファイルから回答を照会するだけで済みます。テーブルが次のようになっていると仮定します。
fromUnit fromUnitFactor(おそらく常に1)ToUnit ToUnitFactor(fromUnitからtoUnitに取得するために必要なものは何でも)
それからそれをクエリするだけで、あなたはあなたが探しているものを知っています、あなたが持っているものを知っています。次に、ユーザーから指定された金額を取得し、それを取得したtoUnitFactorで乗算します。
これに関する最大の問題は、テーブル内のfromとtoのすべての組み合わせが必要なことです。
わかる?
ユーザーは単位を提供する必要があり、すべての単位にはタイプ (重量、体積など) があります。「変換テーブル」には、すべての単位タイプのベースラインを含めるだけで済みます。つまり、1 カップに 8 オンス、1 ガロンに 128 オンスです。これら 2 つのことを知っていれば、カップをガロンに変換できます。
これを 1 つのクエリでアクセスする場合は、話が異なります。少し VBA を実行して、ある呼び出しでカップからオンスを取得し、別の呼び出しでオンスからガロンに変換できる場合は、はるかに簡単に時間を過ごせると思います。
わかった、
将来誰かがこの問題を抱えた場合に備えて、私の解決策を投稿したかっただけです。実際にテーブルを作成し、通常の方法で SQL を使用して、関心のある他のすべてのデータを入力します。次に、変数を設定するレコードの数を示す DCOUNT 関数があります。次に、DLOOKUP関数を使用して、何から何に変換するかを教えて、現在のレコードの新しいテーブルに設定します。ふぅ、私は頭がおかしいと思います!助けてくれてありがとう。
1レコードの換算係数を引っ張り出してもらいました。クエリでそれをやっただけです。私は基本的に列と行を検索し (SQL を使用すると、列と行の名前は変数化されます)、その値を乗算する必要があります。ただし、誰もが知っているように、SQL では 1 つのレコードだけを操作することはありません。これを拡張してすべてのデータを組み込む方法についてのアイデアはありますか?