SQL中不同测量单位之间的转换(在Access中)

时间:2009-01-14 14:46:21

标签: sql ms-access units-of-measurement

我正在尝试编写访问数据库,但我正在使用SQL进行所有查询。我有几乎完整的数据库,但我有一个问题让我难过。它是一个包含食谱的数据库。我有一张桌子,里面有我烹饪的所有转换(汤匙到茶匙,茶匙到杯子等)。用户需要能够使用食谱所要求的任何单位来添加成分(换句话说,我不能标准化单位,我必须找到它们是什么)。然后我需要能够将这些转换为标准化单元。这就是我遇到问题的地方,因为像蔬菜这样的东西可以放入杯子,大汤匙等等。而像肉类这样的东西有盎司,磅等等。我想避免创造一堆vb if / then's。我觉得必须有一种方法可以用SQL做到这一点,但我似乎无法弄明白。

6 个答案:

答案 0 :(得分:3)

我会以不同的方式思考这个问题。您有不同类型的度量(体积,重量,计数等)。这些措施中的每一项都有不同的可转换单位。选择度量(例如,盎司),选择度量类型和特定单位。我有一种方法可以在相同度量类型的单位之间进行转换 - 以支持调整大小的方法 - 但我不担心在不同的度量类型之间进行转换。

一旦知道了类型,就可以根据该度量类型的基本单位将所有值存储在数据库中。根据值以及可能的用户偏好,您可以在显示时将其转换为合适的显示单位。我不认为这在SQL中特别容易,我不会害怕在代码中进行转换。您只需为每个选择适当单位并进行转换的度量类型使用不同的显示格式化程序。

答案 1 :(得分:1)

我认为烹饪时你必须分开两种不同类型的单位

  1. 按重量计算
  2. 按量
  3. 你不能标准化这些单位,或者知道你需要2杯见面会有什么意义?

    然后,当您区分这两种不同类型的单位时,您可以将它们标准化为两个单位。也许:

    1. 杯子,茶匙,......毫升
    2. 肉类,蔬菜......以g或磅为单位,或其他任何
    3. 如果他们都有相同的基础,那么你就可以比较它们。

答案 2 :(得分:0)

只要您询问用户他们正在使用的设备,并且您知道自己要使用的设备,那么您应该只能从文件中查询答案。假设你的表看起来像:

fromUnit fromUnitFactor(可能总是1) ToUnit ToUnitFactor(无论从fromUnit到toUnit都需要什么)

然后只是查询它,你知道你在找什么,知道你有什么。然后只需取用户给出的金额,然后乘以你得到的toUnitFactor。

这个问题的最大问题是你需要表中的每个组合。

有意义吗?

答案 3 :(得分:0)

用户必须为您提供单位,而evey单位将具有类型(重量,体积等)。您的“转换表”只需要包含每种单位类型的基线。即8盎司至一杯,128盎司至一加仑。知道这两件事你就可以将杯子换成加仑。

在单个查询中进行访问是另一回事。如果你可以做一点VBA,在一次通话中获得一杯盎司,然后在另一次通话中获得加仑,我想你会有更轻松的时间。

答案 4 :(得分:0)

我得到它来取出一条记录的转换因子。我只是用查询做了。我基本上查找一个列和一行(使用sql,列和行名称是可变的),并且该值是我需要乘以的值。但是,众所周知,你永远不会只使用sql中的一条记录。关于如何扩展它以包含所有数据的任何想法?

答案 5 :(得分:0)

行,

只是想发布我的解决方案以防将来有人遇到此问题。我实际上创建了表,并以通常的方式使用SQL对我感兴趣的所有其他数据进行填充。然后我有一个DCOUNT函数来告诉有多少记录设置变量。然后我有一个DLOOKUP函数,它告诉我要转换的内容和来源,并在新表中为我所在的记录设置它。哎呀,我想我已经过了头!谢谢你的帮助。