スポンサーリンク

2008-02-29

Tips137 - 上位○件のレコードを抽出(例:ベスト10、トップ3) TOP述語

構文例
SQL = "SELECT TOP ○ フィールド名 FROM テーブル名 ORDER BY TOPで比較するフィールド名 DESC"
CurrentDb.Execute SQL, dbFailOnError

TOP述語を使うと指定数の上位レコードを抽出できます。
TOPの次に指定数をセットします。
上位を抽出する為には、「ORDER BY フィールド名 DESC」で降順に並べ替えてください。

使用例
SQL = "SELECT TOP 3 学生ID,国語 FROM テーブル7 ORDER BY 国語 DESC"
国語の得点がトップ3を抽出し、その学生IDと国語の得点を取得します。

2008-02-24

Tips136 - 複数の条件を評価する SWITCH関数

構文例
SQL = "SELECT SWITCH(条件式1,真のときの式1 [,条件式2,真のときの式2,・・・]) FROM テーブル名"
CurrentDb.Execute SQL, dbFailOnError

SWITCH関数は、「条件式1」からのリストを順に評価し、「真(TRUE)」の場合「真のときの式1」を実行し、「偽(FALSE)」の場合次の条件式2を評価します。

SQL = "SELECT 学生ID,国語,SWITCH(国語<30,'×',国語<70,'○',国語<=100,'◎') FROM 試験結果"
国語点数が30点未満の場合は×を返し、30~70点未満の場合○を返し、70~100点以下の場合は×を返します。

条件式1: 国語<30
式1: '×'

条件式2: 国語<70
式2: '○'

条件式3: 国語<=100
式3: '◎'

2008-02-18

Tips135 - Nullかどうか判定する ISNULL関数

構文例
SQL = "SELECT IIF(ISNULL(フィールド名),真のときの式,偽のときの式) FROM テーブル名"
CurrentDb.Execute SQL, dbFailOnError

ISNULL関数は、値がNULLの時は「真(TRUE)」が返り、NULLでない時は「偽(FALSE)」が返ります。

SQL = "SELECT IIF(ISNULL(国語点数),'-',IIF(国語点数>80 , '○' , '×')) FROM 試験結果"
国語点数が未入力(NULL)の場合は-を表示し、80点を越えると○を表示し、80点以下の場合は×を表示します。

2008-02-13

Tips134 - if文の中にif文を入れる「ネスト」

構文例
SQL = "SELECT IIF(条件式,IIF(条件式,真のときの式,偽のときの式),偽のときの式) FROM テーブル名"
SQL = "SELECT IIF(条件式,真のときの式,IIF(条件式,真のときの式,偽のときの式)) FROM テーブル名"
SQL = "SELECT IIF(条件式,IIF(条件式,真のときの式,偽のときの式),IIF(条件式,真のときの式,偽のときの式)) FROM テーブル名"

関数の中に関数を入れることを「ネスト」といいます。
多重にネストすると、後で分かりにくくなりますから注意してください。(ネスト地獄といいます)

使用例:
SQL = "SELECT IIF(国語点数>80 , IIF(数学点数>80 , '◎' , '○') , '×') FROM 試験結果"
国語点数と数学点数が80点を越えると◎を表示し、国語のみなら○を表示し、それ以外は×を表示します。

2008-02-09

Tips133 - SELECT句でIF文を使う IIF関数

SQL = "SELECT IIF(条件式,真のときの式,偽のときの式) FROM テーブル名"
CurrentDb.Execute SQL, dbFailOnError

SQLでIF文を使うには、IIF関数を使います。
IIFの構文は「IIF(条件式,真のときの式,偽のときの式)」になります。
「真のときの式」とは条件式がTRUEになる時の式です。
「偽のときの式」とは条件式がFALSEになる時の式です。

使用例:
SQL = "SELECT IIF(国語点数>80 , '○' , '×') FROM 試験結果"
国語点数が80点を越えると○を表示し、80点以下の場合は×を表示します。

2008-02-04

Tips132 - インデックスの削除 DROP INDEX

SQL = "DROP INDEX インデックス名 ON テーブル名"
CurrentDb.Execute SQL, dbFailOnError

これを実行するとフィールドのインデックスが削除されます。
インデックスとはアクセスデザイン画面で設定できるフィールドプロパティです。
「はい (重複なし)」か「はい (重複あり)」に設定できます。

主キーが設定されているフィールドには実行できません。
実行すると下記のエラーになります。
「実行時エラー '3372':
テーブル'テーブル名'にインデックス'インデックス名'が見つかりませんでした。」
もし、インデックスに設定されていないフィールドを指定した場合でも上記と同じエラーが発生します。