DFirst および DLast 関数を使うと、テーブルやクエリの特定のフィールドの値を何でもいいから 1 つ必要なときに、そのフィールドからランダムにレコードを取得できます。 フォームまたはレポートのマクロ、モジュール、クエリ式、または計算コントロールで DFirst 関数と DLast 関数を使用します。
構文
DFirst( ** expr, domain [, criteria**] )
DLast( ** expr, domain [, criteria**] )
DFirst 関数および DLast 関数の引数は次のとおりです。
| 引数 | 説明 |
|---|---|
| expr | 必須。 最初または最後の値を取得するフィールドを示す式。 テーブルまたはクエリ内のフィールドを識別する文字列式、またはそのフィールド内のデータに対して計算を実行する式のいずれかを指定できます。 expr では、テーブル内のフィールドの名前、フォーム上のコントロール、定数、または関数を含めることができます。 expr に関数が含まれている場合は、組み込み関数またはユーザー定義関数を使用できますが、別のドメイン集計関数や SQL 集計関数は使用できません。 |
| domain | 必須。 定義域を構成するレコード セットを識別する文字列式。 |
| criteria | 省略可能です。 DFirst または DLast 関数を実行するデータの範囲を制限するために使用される文字列式。 たとえば、 条件 は、多くの場合、WHERE という単語を含まない SQL 式の 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"); | "割引" 値が "0" であるテーブル "ProductSales" から Last "ProductID" を返し、結果を列 "LastDis_ID" に表示します。 |