DFirst関数

 テーブルやクエリに含まれる列(フィールド)で、指定した列に記録されている値のうち最初のものを返します。対象とする行(レコード)を指定する(絞り込む)こともできます。
 ただし、後述するようにデータの順番というものが決して明確ではないため注意が必要です。

使用例

 例として右のようなテーブルを用います。


 クエリを作成し、次のような列を設けます。

   数学点数最初: DFirst("数学点数","成績テーブル")


 データシートビューです。数学の点数の最初の値である88が得られています。


 上記テーブルに基づく実行結果の例をいくつか挙げてみます。

表記例出力例説明
DFirst("数学点数","成績テーブル")88
DFirst("英語点数","成績テーブル")79この実行結果からはわかりませんが、指定した列の値にNullが含まれる場合でも、そのレコードは検索から除外されません。最初の値がNullであればNullが返ります
DFirst(50,"成績テーブル")50直接数値を指定した場合、全レコードにその値があるものとして検索された最初の値が返されます。結果的に50が返されます
DFirst("数学点数","成績テーブル","受験番号>=3")55検索の対象となるレコードの条件を指定することが出来ます
DFirst("英語点数","成績テーブル","受験番号>=3")81

書式

   DFirst(列名,レコードセット名[,条件])

 列名はダブルクォーテーション(")で囲む必要があります。
 レコードセットにはテーブルやレコードの名前をやはりダブルクォーテーションで囲って指定します。
 条件は対象となるレコードを絞り込むためのものですが、省略できます。

備考

 一見何も問題はないように見えますが、例えばもとのテーブルを受験番号の降順で並べかえたからといってDfirst関数で得られる値は変わりませんし、値を変更したりソート順をいろいろ変えていくとDFirst関数で何の値が得られるのかよくわからなくなります。基本的にデータベースの世界ではデータの順番という考え方が存在しないため「最初」というのも明確ではなく、これはある意味当然の結果といえます。よってDFirst関数の使用には注意が必要です。
 また、他の定義域集計関数と異なり、値がNullであっても検索対象から除かれないことにも注意が必要です。
 クエリで利用する場合、そのテーブルやクエリをクエリデザイン画面上に表示しなくとも値を取得することが出来ます。