DFirst および DLast 関数を使うと、テーブルやクエリの特定のフィールドの値を何でもいいから 1 つ必要なときに、そのフィールドからランダムにレコードを取得できます。 フォームまたはレポートのマクロ、モジュール、クエリ式、または演算コントロールで DFirst 関数と DLast 関数を使用します。
構文
DFirst( ** expr, domain [, criteria**] )
DLast( ** expr, domain [, criteria**] )
DFirst 関数および DLast 関数の引数は次のとおりです。
| 引数 | 説明 |
|---|---|
| expr | 必須。 最初または最後の値を取得するフィールドを示す式。 テーブルまたはクエリ内のフィールドを識別する文字列式でも、そのフィールド内のデータに対して計算を実行する式でもかまいません。 expr では、テーブル内のフィールド名、フォーム上のコントロール、定数、または関数の名前を含めることができます。 expr に関数が含まれている場合は、組み込み関数またはユーザー定義関数にすることができますが、別のドメイン集約関数または SQL 集約関数は含まれません。 |
| domain | 必須。 定義域を構成するレコード セットを識別する文字列式。 |
| criteria | 省略可能です。 DFirst 関数または DLast 関数が実行されるデータの範囲を制限するために使用される文字列式。 たとえば、 抽出条件 は、多くの場合、SQL 式の WHERE 句と等しく、WHERE という単語は含まれません。 条件を省略すると、DFirst 関数と DLast 関数はドメイン全体に対して expr を評価します。 条件に含まれるフィールドは、ドメイン内のフィールドでもあります。それ以外の場合、DFirst 関数と DLast 関数は Null を返します。 |
解説
注
一連のレコード (ドメイン) の最初または最後のレコードを返す場合は、昇順または降順で並べ替えられたクエリを作成し、 TopValues プロパティを 1 に設定する必要があります。 詳細については、TopValues プロパティのトピックをご覧ください。 Visual Basic for Applications (VBA) モジュールからは、ADO の Recordset オブジェクトを作成し、MoveFirst メソッドまたは MoveLast メソッドを使って、レコード セットの最初のレコードまたは最後のレコードを取得することもできます。
例
| Expression | 結果 |
|---|---|
| SELECT DFirst("DateofSale","ProductSales") AS Expr1 FROM ProductSales GROUP BY DFirst("DateofSale","ProductSales"); | テーブル "ProductSales" のフィールド "DateofSale" からランダムな値を返します。 テーブルに "主キー" がある場合は、主キーの昇順に基づいて "DateofSale" の "FIRST" 値を返します。 |
| SELECT DLast("DateofSale","ProductSales") AS FirstDis_ID FROM ProductSales GROUP BY DLast("DateofSale","ProductSales"); | テーブル "ProductSales" のフィールド "DateofSale" からランダムな値を返します。 テーブルに "主キー" がある場合、主キーの昇順に基づいて "DateofSale" の "LAST" 値を返します。 テーブル "ProductSales" の最初の "ProductID" を返します。ここで、"Discount" の値は "0" で、列 "FirstDis_ID" に結果が表示されます。 |
| SELECT DLast("ProductID","ProductSales","Discount=0") AS LastDis_ID FROM ProductSales GROUP BY DLast("ProductID","ProductSales","Discount=0"); | テーブル "ProductSales" から最後の "ProductID" を返します。ここで、"Discount" の値は "0" で、列 "LastDis_ID" に結果を表示します。 |