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 のサポートおよびフィードバックを参照してください。