SELECT フィールド名 FROM テーブル名 WHERE 条件式1 XOR 条件式2
「XOR」は2つの条件式の排他的論理和です。
「A か B のどちらか片方」と言われます。
条件式1 か 条件式2 のどちらかが「True (真)」の時のみ「True (真)」のデータになります。
例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重<=60 XOR 身長<=180 "
この場合、体重が60以下で身長が180以下でないか、体重が60以下でなく身長が180以下の学生IDを抽出します。
サンプルソフト
[実行時の画面]
身長、体重を入力し「XOR 抽出」ボタンをクリックすると、学生名簿テーブルから、
入力された身長以下で、入力された体重以下でないか、入力された身長以下でなく、入力された体重以下のどちらかのレコードを表示します。
「OR」と比較するとよく分かると思いますが、「OR」では学生IDが10番の人が抽出されています。
「XOR」では10番の人は、身長が180以下で体重も60以下の為、抽出されていません。
[学生名簿 テーブル]
学生ID 体重 身長
10 55.2 168.6
11 68.5 173.1
13 65.3 182.4
16 89.6 178.3
[コード]
Option Compare Database
Private Sub コマンド8_Click()
Dim SQL As String
Dim rs As Recordset
If IsNull(Me!テキスト2) Then
MsgBox "抽出する身長を入力してください。"
Me!テキスト2.SetFocus
Exit Sub
End If
If IsNull(Me!テキスト3) Then
MsgBox "抽出する体重を入力してください。"
Me!テキスト3.SetFocus
Exit Sub
End If
Me!テキスト1 = Null
SQL = "SELECT 学生ID,身長,体重 FROM 学生名簿 WHERE 体重<=" & Me!テキスト3 & " XOR 身長<=" & Me!テキスト2
Set rs = CurrentDb.OpenRecordset(SQL)
Do Until rs.EOF
Me!テキスト1 = Me!テキスト1 & rs![学生ID] & ": " & rs![身長] & " " & rs![体重] & vbCrLf
rs.MoveNext
Loop
Set rs = Nothing
End Sub
サンプルソフトのダウンロード