Cláusula FROM (SQL do Microsoft Access)
Aplica-se ao: Access 2013 | Access 2016
Especifica as tabelas ou as consultas que contêm os campos listados na instrução SELECT.
Sintaxe
SELECT fieldlist FROM tableexpression [IN externaldatabase ]
Uma instrução SELECT que contém a cláusula FROM tem estas partes:
Sair | Descrição |
---|---|
fieldlist | O nome do(s) campo(s) a ser recuperado junto com qualquer alias de nome de campo, funções agregadas do SQL, predicados de seleção (ALL, DISTINCT, DISTINCTROW ou TOP) ou outras opções da instrução SELECT. |
tableexpression | Uma expressão que identifica um ou mais tabelas a partir das quais os dados são recuperados. A expressão pode ser um nome simples de tabela, um nome de consulta salva ou um nome composto resultante de uma operação INNER JOIN, LEFT JOIN ou RIGHT JOIN. |
externaldatabase | O caminho completo de um banco de dados externo que contém todas as tabelas em tableexpression. |
Comentários
FROM é exigido e segue qualquer instrução SELECT.
A ordem dos nomes das tabelas em tableexpression não é importante.
Para obter melhor desempenho e facilidade de uso, recomenda-se usar uma tabela vinculada em vez de uma cláusula IN para recuperar dados de um banco de dados externo.
O exemplo a seguir mostra como você pode recuperar dados da tabela Funcionários:
SELECT LastName, FirstName
FROM Employees;
Exemplo
Alguns dos exemplos a seguir assumem a existência de um campo hipotético chamado Salário em uma tabela de Funcionários. Repare que esse campo não existe realmente na tabela de Funcionários do banco de dados da Northwind.
Este exemplo cria um Recordset do tipo dynaset com base em uma declaração SQL que seleciona os campos LastName e FirstName de todos os registros da tabela de Funcionários. Ele chama o procedimento EnumFields, que imprime os conteúdos de um objeto Recordset na janela Depurar.
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
Este exemplo conta o número de registros que têm uma entrada no campo PostalCode e nomeia o campo retornado como Registro.
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
Este exemplo mostra o número de funcionários e os salários médio e 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
O procedimento Sub EnumFields recebe um objeto Recordset do procedimento de chamada. Em seguida, o procedimento formata e imprime os campos do Recordset na janela Depurar. A variável é o comprimento desejado do campo impresso. Alguns campos podem ser 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
Confira também
- Fórum do Access para desenvolvedores
- Ajuda do Access em support.office.com
- Fóruns do Access no UtterAccess
- Central de ajuda da programação VBA e desenvolvedor do Access (FMS)
- Postagens do Access no StackOverflow
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.