掌握DAO技术:筛选与创建数据库查询
背景简介
在数据库管理中,能够高效地查询和筛选数据是至关重要的。《Access 2021/Microsoft 365 Programming by Example》一书详细介绍了如何使用DAO技术来操作和查询数据库。本文将重点探讨如何使用SQL WHERE子句和Filter属性筛选记录,以及如何在VBA中创建和执行查询。
使用SQL WHERE子句过滤记录
当我们只需要处理特定子集的记录时,可以利用SQL WHERE子句来过滤掉不需要的记录。根据书中提供的实例,我们可以通过创建一个新的Recordset对象并使用包含WHERE子句的SQL语句来实现。
Sub FilterWithSQLWhere_DAO()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim qryName As String
Dim mySQL As String
Dim strDb As String
Dim strPath As String
strPath = "C:\\VBAAccess2021_ByExample\\"
strDb = "Northwind 2007_Chap11.accdb"
Set db = OpenDatabase(strPath & strDb)
qryName = "qryOrdersOver100"
mySQL = "SELECT * FROM [Product Orders] WHERE Quantity > 100;"
Set qdf = db.CreateQueryDef(qryName)
qdf.SQL = mySQL
Set rst = db.OpenRecordset(qryName)
Debug.Print "There are " & rst.RecordCount & " orders with the order quantity greater than 100."
rst.Close
Set rst = Nothing
Set qdf = Nothing
db.Close
Set db = Nothing
End Sub
使用Filter属性过滤记录
除了使用SQL WHERE子句,我们还可以使用DAO对象的Filter属性来实现记录的筛选。书中通过实例展示了如何设置Filter属性来获取特定条件的记录子集。
Sub FilterRecords_DAO()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim FilterRst As DAO.Recordset
Dim strDb As String
Dim strPath As String
strPath = "C:\\VBAAccess2021_ByExample\\"
strDb = "Northwind 2007_Chap11.accdb"
Set db = OpenDatabase(strPath & strDb)
Set rst = db.OpenRecordset("Employees", dbOpenDynaset)
rst.Filter = "City like 'R*'"
Set FilterRst = rst.OpenRecordset()
Do Until FilterRst.EOF
Debug.Print FilterRst.Fields("Last Name").Value
FilterRst.MoveNext
Loop
FilterRst.Close
Set FilterRst = Nothing
rst.Close
Set rst = Nothing
db.Close
Set db = Nothing
End Sub
创建与运行查询
在Access中,要从数据库中检索相关信息并执行数据导向任务,编写查询是必不可少的一步。查询可以是简单的,也可以是复杂的,如使用SQL JOIN语句来同时从多个表中提取信息。书中不仅介绍了如何创建查询,还教会了如何使用DAO对象和VBA代码中的SQL数据操纵语言(DML)语句来执行查询。
手动创建选择查询
选择查询能够从数据库表中检索一组记录,使用SELECT和FROM关键字的SQL语句来实现。我们可以利用WHERE子句来指定查询将影响哪些记录。例如:
SELECT * FROM Employees WHERE City IN ('Redmond', 'London')
此外,还可以使用通配符和谓词来进一步限定查询条件。如使用LIKE操作符来比较字符串表达式与SQL表达式中的模式,或使用BETWEEN…AND操作符来确定表达式的值是否在指定范围内。
使用ORDER BY子句进行排序
如果需要对查询结果进行排序,可以使用ORDER BY子句。默认情况下,记录是按升序排序的,但也可以通过指定ASC或DESC关键字来改变排序方式。
总结与启发
通过阅读《Access 2021/Microsoft 365 Programming by Example》的这部分内容,我们了解到了DAO技术在数据库操作中的强大能力。掌握SQL WHERE子句和Filter属性的使用,可以大大提高我们筛选和管理数据库记录的效率。同时,通过VBA代码手动创建和执行查询,为数据库操作提供了更多的灵活性和可控性。希望本文能激发读者学习和运用DAO技术的兴趣,并在实际工作中加以应用。
关键词
- DAO技术
- SQL WHERE子句
- Filter属性
- 数据库查询创建
- VBA代码实现