次の方法で共有


Application.BuildCriteria メソッド (Access)

BuildCriteria メソッドは、クエリ デザイン グリッドの [フォームでフィルター] モードまたは [フォームによるサーバーフィルター] モードで表示されるように、解析された抽出条件文字列を返します。 たとえば、ユーザーが入力する抽出条件を基にフォームの " Filter /フィルター" プロパティまたは " ServerFilter /サーバーフィルター" プロパティを設定するとします。 Filter プロパティまたはServerFilter プロパティの文字列式引数を構築するには、BuildCriteria メソッドを使用します。 String

構文

BuildCriteria (Field, FieldType, Expression)

expressionApplication オブジェクトを 表す変数。

パラメーター

名前 必須 / オプション データ型 説明
Field 必須 String 抽出条件を定義するフィールドを指定します。
FieldType 必須 整数型 (Integer) フィールドのデータ型を表す組み込み定数を指定します。 DAO DataTypeEnum の値のいずれかに設定できます。
Expression 必須 String 解析する抽出条件を定義する文字列式を指定します。

戻り値

文字列

注釈

BuildCriteria メソッドを使用すると、ユーザーの入力を基にフィルターの抽出条件を簡単に生成することができます。 の引数は、クエリ デザイン グリッドの [フォームでフィルター] モードまたは [フォームによるサーバー フィルター] モードで入力した場合と同じ方法で、式を解析するのと同じ方法で解析されます。

たとえば、Orders テーブルに対してクエリを作成するユーザーは、 OrderDate フィールドに条件を設定することで、結果セットを 1995 年 1 月 1 日以降の注文に制限する場合があります。 ユーザーは、[OrderDate] フィールドの下の [抽出条件] 行に次のような式を入力できます。

1-1-95

この式が解析され、次の式が返されます。

#1/1/95#

Visual Basic コードで BuildCriteria メソッドを使うと、この例と同じ解析機能を使うことができます。 たとえば、前の例で、正しく解析された文字列を返すには、次のように引数を BuildCriteria メソッドに指定します。

Dim strCriteria As String 
strCriteria = BuildCriteria("OrderDate", dbDate, ">1-1-95")

正しく解析された形式で Filter プロパティの条件を指定する必要があるため、 BuildCriteria メソッドを使用して、正しく解析された文字列を構築できます。

BuildCriteria メソッドを使用して、条件が同じフィールドを参照している場合は、複数の条件を持つ文字列を作成します。 たとえば、次の引数を指定して BuildCriteria メソッドを使用して、 OrderDate フィールドに関連する複数の条件を持つ文字列を作成できます。

strCriteria = BuildCriteria("OrderDate", dbDate, ">1-1-95 and <5-1-95")

この例では、次の抽出条件文字列が返されます。

OrderDate>#1/1/95# And OrderDate<#5/1/95#

ただし、複数のフィールドに適用する抽出条件文字列を生成する場合は、各文字列を作成して、それらを連結する必要があります。 たとえば、1995 年 1 月 1 日以降の受注のうち、運送料が \1,000 未満のレコードを抽出するフィルターの抽出条件を生成する場合には、BuildCriteria メソッドを 2 回使用し、作成した文字列を連結します。

次の例では、ユーザーに商品名の先頭部分の文字をいくつか入力するように促し、 BuildCriteria メソッドを使用して、ユーザーの入力に基づいた抽出条件文字列を生成します。 次に、この文字列を [商品] フォームの " Filter /フィルター" プロパティに引数として設定します。 最後に、" FilterOn /フィルター適用" プロパティを設定し、フィルターを適用します。

Sub SetFilter() 
 Dim frm As Form, strMsg As String 
 Dim strInput As String, strFilter As String 
 
 ' Open Products form in Form view. 
 DoCmd.OpenForm "Products" 
 ' Return Form object variable pointing to Products form. 
 Set frm = Forms!Products 
 strMsg = "Enter one or more letters of product name " _ 
 & "followed by an asterisk." 
 ' Prompt user for input. 
 strInput = InputBox(strMsg) 
 ' Build criteria string. 
 strFilter = BuildCriteria("ProductName", dbText, strInput) 
 ' Set Filter property to apply filter. 
 frm.Filter = strFilter 
 ' Set FilterOn property; form now shows filtered records. 
 frm.FilterOn = True 
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。