FROM 句 (Microsoft Access SQL)
適用先: Access 2013 | Access 2016
指定したテーブルまたはクエリからフィールドを選択します。SELECT ステートメントの中で使用されます。
構文
SELECT フィールドリスト FROM tableexpression [IN externaldatabase ]
FROM 句を使用する SELECT ステートメントには、次の指定項目があります。
パーツ | 説明 |
---|---|
fieldlist | 取得する 1 つ以上のフィールドの名前。フィールド名の別名、SQL 集計関数、選択述語 (ALL、DISTINCT、DISTINCTROW、TOP) などの SELECT ステートメント オプションも指定できます。 |
tableexpression | 取得するデータのある 1 つ以上のテーブルを指定する式。 式には、単一のテーブル名、保存されたクエリ名、または INNER JOIN、LEFT JOIN、RIGHT JOIN のいずれかの操作の結果としてできる複合テーブルを指定します。 |
externaldatabase | 引数 tableexpression で指定したすべてのテーブルが含まれる外部データベースの完全パス。 |
注釈
FROM 句は、すべての SELECT ステートメントにおいて指定する必要があります。
引数 tableexpression で指定するテーブル名の順序に、特に意味はありません。
外部データベースからデータを取得する場合は、IN 句ではなくリンク テーブルを使用した方が処理効率が良く操作も簡単です。
次の例では、Employees テーブルからデータを取得します。
SELECT LastName, FirstName
FROM Employees;
例
次に示す一部の使用例では、Employees テーブルに Salary フィールドが含まれていると仮定しています。 実際には、ノースウィンド データベースの Employees テーブルにこのフィールドは含まれていないので注意してください。
This example creates a dynaset-type Recordset based on an SQL statement that selects the LastName and FirstName fields of all records in the Employees table. It calls the EnumFields procedure, which prints the contents of a Recordset object to the Debug window.
Sub SelectX1()
Dim dbs As Database, rst As Recordset
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Select the last name and first name values of all
' records in the Employees table.
Set rst = dbs.OpenRecordset("SELECT LastName, " _
& "FirstName FROM Employees;")
' Populate the recordset.
rst.MoveLast
' Call EnumFields to print the contents of the
' Recordset.
EnumFields rst,12
dbs.Close
End Sub
次の使用例では、PostalCode フィールドにエントリがあるレコードの数を調べ、その値が返されるフィールドとして Tally フィールドを指定します。
Sub SelectX2()
Dim dbs As Database, rst As Recordset
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Count the number of records with a PostalCode
' value and return the total in the Tally field.
Set rst = dbs.OpenRecordset("SELECT Count " _
& "(PostalCode) AS Tally FROM Customers;")
' Populate the Recordset.
rst.MoveLast
' Call EnumFields to print the contents of
' the Recordset. Specify field width = 12.
EnumFields rst, 12
dbs.Close
End Sub
次の使用例では、社員数と平均給与額および最高給与額を表示します。
Sub SelectX3()
Dim dbs As Database, rst As Recordset
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Count the number of employees, calculate the
' average salary, and return the highest salary.
Set rst = dbs.OpenRecordset("SELECT Count (*) " _
& "AS TotalEmployees, Avg(Salary) " _
& "AS AverageSalary, Max(Salary) " _
& "AS MaximumSalary FROM Employees;")
' Populate the Recordset.
rst.MoveLast
' Call EnumFields to print the contents of
' the Recordset. Pass the Recordset object and
' desired field width.
EnumFields rst, 17
dbs.Close
End Sub
Sub プロシージャである EnumFields には、呼び出し元のプロシージャから Recordset オブジェクトが渡されます。 次に Recordset のフィールドがフォーマットされ、 Debug ウィンドウに出力されます。 変数は、必要な出力フィールド幅を示します。 一部のフィールドが表示されない場合もあります。
Sub EnumFields(rst As Recordset, intFldLen As Integer)
Dim lngRecords As Long, lngFields As Long
Dim lngRecCount As Long, lngFldCount As Long
Dim strTitle As String, strTemp As String
' Set the lngRecords variable to the number of
' records in the Recordset.
lngRecords = rst.RecordCount
' Set the lngFields variable to the number of
' fields in the Recordset.
lngFields = rst.Fields.Count
Debug.Print "There are " & lngRecords _
& " records containing " & lngFields _
& " fields in the recordset."
Debug.Print
' Form a string to print the column heading.
strTitle = "Record "
For lngFldCount = 0 To lngFields - 1
strTitle = strTitle _
& Left(rst.Fields(lngFldCount).Name _
& Space(intFldLen), intFldLen)
Next lngFldCount
' Print the column heading.
Debug.Print strTitle
Debug.Print
' Loop through the Recordset; print the record
' number and field values.
rst.MoveFirst
For lngRecCount = 0 To lngRecords - 1
Debug.Print Right(Space(6) & _
Str(lngRecCount), 6) & " ";
For lngFldCount = 0 To lngFields - 1
' Check for Null values.
If IsNull(rst.Fields(lngFldCount)) Then
strTemp = "<null>"
Else
' Set strTemp to the field contents.
Select Case _
rst.Fields(lngFldCount).Type
Case 11
strTemp = ""
Case dbText, dbMemo
strTemp = _
rst.Fields(lngFldCount)
Case Else
strTemp = _
str(rst.Fields(lngFldCount))
End Select
End If
Debug.Print Left(strTemp _
& Space(intFldLen), intFldLen);
Next lngFldCount
Debug.Print
rst.MoveNext
Next lngRecCount
End Sub
関連項目
- 開発者フォーラムにアクセスする
- support.office.com のヘルプにアクセスする
- UtterAccess のフォーラムにアクセスする
- 開発者と VBA のプログラミング ヘルプ センター (FMS) にアクセスする
- StackOverflow のアクセス ポスト
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。