获取 MS Access 颜色格式的颜色范围
Get range between colors in MS Access color format
在数据库中,我仅以 MS Access 颜色格式(BGR 的十进制格式)存储颜色:它看起来像 8689859 => brown => #c39884 ...
但我需要按颜色范围过滤,我的意思是用户使用颜色选择器并选择例如。 #ffffff 颜色。我想 return 所有颜色与 #ffffff 相似的行(颜色不完全相同,但 +- 在相同范围内)。
这样的事情可能吗?
我想 =- 范围应该适用于 BGR 值中的每个单独的颜色元素。在这种情况下,您需要提取这些元素,如下所示:
SELECT colour
,Fix([Colour]/(256*256)) as B
,Fix(([Colour]-Fix([Colour]/(256*256))*256*256)/256) as G
,[Colour]-Fix([Colour]/(256*256))*256*256-Fix(([Colour]-Fix([Colour]/(256*256))*256*256)/256)*256 as R
FROM MyColours
我建议您将它们放入单独的函数中,例如 GetR、GetB、GetG
您甚至可以制作计算字段并将它们应用到您的 table:
现在,要查找 table,您还需要将所选颜色拆分为 B G R 元素:
Dim selectedColour as Integer
Dim rr as Integer
Dim gg as Integer
Dim bb as Integer
selectedColour = 11124168 ' A9BDC8 - selected from the colour picker
rr = getR(selectedColour)
gg = getG(selectedColour)
bb = getB(selectedColour)
如果您在 table 中有计算字段,则查询将是:
SELECT colour
FROM MyColours
WHERE B BETWEEN bb-4 AND bb+4
AND G BETWEEN gg-4 AND gg+4
AND R BETWEEN rr-4 AND rr+4
如果您不想使用计算字段,请使用 VBA 函数:
SELECT colour
FROM MyColours
WHERE getB(colour) BETWEEN bb-4 AND bb+4
AND getG(Colour) BETWEEN gg-4 AND gg+4
AND getR(Colour) BETWEEN rr-4 AND rr+4
在数据库中,我仅以 MS Access 颜色格式(BGR 的十进制格式)存储颜色:它看起来像 8689859 => brown => #c39884 ... 但我需要按颜色范围过滤,我的意思是用户使用颜色选择器并选择例如。 #ffffff 颜色。我想 return 所有颜色与 #ffffff 相似的行(颜色不完全相同,但 +- 在相同范围内)。
这样的事情可能吗?
我想 =- 范围应该适用于 BGR 值中的每个单独的颜色元素。在这种情况下,您需要提取这些元素,如下所示:
SELECT colour
,Fix([Colour]/(256*256)) as B
,Fix(([Colour]-Fix([Colour]/(256*256))*256*256)/256) as G
,[Colour]-Fix([Colour]/(256*256))*256*256-Fix(([Colour]-Fix([Colour]/(256*256))*256*256)/256)*256 as R
FROM MyColours
我建议您将它们放入单独的函数中,例如 GetR、GetB、GetG
您甚至可以制作计算字段并将它们应用到您的 table:
现在,要查找 table,您还需要将所选颜色拆分为 B G R 元素:
Dim selectedColour as Integer
Dim rr as Integer
Dim gg as Integer
Dim bb as Integer
selectedColour = 11124168 ' A9BDC8 - selected from the colour picker
rr = getR(selectedColour)
gg = getG(selectedColour)
bb = getB(selectedColour)
如果您在 table 中有计算字段,则查询将是:
SELECT colour
FROM MyColours
WHERE B BETWEEN bb-4 AND bb+4
AND G BETWEEN gg-4 AND gg+4
AND R BETWEEN rr-4 AND rr+4
如果您不想使用计算字段,请使用 VBA 函数:
SELECT colour
FROM MyColours
WHERE getB(colour) BETWEEN bb-4 AND bb+4
AND getG(Colour) BETWEEN gg-4 AND gg+4
AND getR(Colour) BETWEEN rr-4 AND rr+4