Cláusula FROM (Microsoft Access SQL)
Se aplica a: Access 2013 | Access 2016
Especifica las tablas o consultas que contienen los campos enumerados en la instrucción SELECT.
Sintaxis
SELECT fieldlist FROM tableexpression [IN externaldatabase ]
Una instrucción SELECT que contenga una cláusula FROM consta de los siguientes elementos:
Parte | Descripción |
---|---|
fieldlist | Nombre del campo o campos que se recuperarán junto con los alias de nombre de campo, funciones de agregado de SQL, predicados de selección (ALL, DISTINCT, DISTINCTROW o TOP) u otras opciones de la instrucción SELECT. |
expresiónDeTabla | Expresión que identifica una o varias tablas en la que se recuperan datos. La expresión puede ser un nombre de tabla único, el nombre de una consulta guardada o una combinación resultante de INNER JOIN, LEFT JOIN o RIGHT JOIN. |
externaldatabase | Ruta de acceso completa de una base de datos externa que contiene todas las tablas de expresiónDeTabla. |
Comentarios
FROM es necesario y se debe incluir a continuación de la instrucción SELECT.
El orden de los nombres de tablas en expresiónDeTabla no es importante.
Para mejorar el rendimiento y facilitar el uso, se recomienda usar una tabla vinculada en lugar de una cláusula IN para recuperar datos en una base de datos externa.
En el siguiente ejemplo, se muestra cómo se pueden recuperar datos en la tabla Employees:
SELECT LastName, FirstName
FROM Employees;
Ejemplo:
En algunos de los ejemplos siguientes, se supone la existencia de un campo hipotético Salary en una tabla Employees. Tenga en cuenta que este campo no existe realmente en la tabla Employees (Empleados) de la base de datos Northwind (Neptuno).
En este ejemplo, se crea un objeto Recordset de tipo Dynaset basado en una instrucción SQL que selecciona los campos Apellidos y Nombre de todos los registros de la tabla Empleados. Llama al procedimiento EnumFields, que imprime el contenido de un objeto Recordset en la ventana Depuración.
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
En este ejemplo, se cuenta el número de registros que tienen una entrada en el campo PostalCode y asigna al campo devuelto el nombre 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
En este ejemplo, se muestra el número de empleados y los salarios medio y máximo.
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
Se pasa un objeto Recordset al procedimiento Sub EnumFields desde el procedimiento que realiza la llamada. Después, el procedimiento da formato a los campos de Recordset y los imprime en la ventana Depuración. La variable es el ancho del campo impreso deseado. Algunos campos pueden estar truncados.
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
Vea también
- Acceso al foro de desarrolladores
- Acceso a la ayuda en support.office.com
- Acceso a foros en UtterAccess
- Acceso al centro de ayuda de programadores VBA y desarrolladores (FMS)
- Acceso a las publicaciones en StackOverflow
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.