2016-03-21 12 views
1

データベースでは、MS Accessカラーフォーマット(BGRの10進フォーマット)でしかカラーを保存していません:8689859 => brown =>#c39884 ... 色の範囲でフィルターをかけるには、ユーザーがカラーピッカーを使用して、たとえばを選択することを意味します。 #ffffff color。そして私は#ffffff(まったく同じ色ではなく+ - 同じ範囲内の色)のすべての行を同様に返したいと思います。MS Accessカラーフォーマットのカラー範囲を取得する

可能なことはありますか?

+0

似て定義してください。.. – Susilo

答えて

1

= - 範囲は、BGR値の別々の色要素のそれぞれに当てはまるはずです。この場合、あなたはこのように、これらの要素を抽出する必要があります:私はあなたがGETR、GetBのような別の関数にこれらを入れてお勧めします

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 

、GetGを

あなたも、計算フィールドを作成し、それらを適用することができます表:

Colours Table with computed fields

今、あなたのテーブルをルックアップするためにあなたが同様にBGR要素で選択した色を分割する必要があります。

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) 

あなたがテーブル内の計算フィールドを持っている場合、クエリは次のようになります。

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 
関連する問題