Access VBA教程:创建包含变量和控件的 SQL 语句

在使用数据访问对象 (DAO) 或ActiveX 数据对象 (ADO) 时,可能需要在代码中构建SQL 语句。这有时称为让您的 SQL 代码“嵌入”代码行中。例如,如果正在创建新的 QueryDef对象,必须将它的 SQL属性设为有效的 SQL 字符串。但如果要使用一个 ADO Recordset对象,就必须将它的 Source属性设为有效的 SQL 字符串。

创建 SQL 语句最简单的方法是在查询设计网格中创建一个查询,然后切换到“SQL”视图,并将相应的 SQL 语句复制并粘贴到代码中。

查询通常必须基于用户所提供的值,或者可以说在各种情况下返回不同的结果。如果是这样,就需要在查询中包含变量或控件值。Microsoft Jet 数据库引擎可以处理所有的 SQL 语句,但不处理变量或控件。因此,必须构建相应的 SQL 语句,由 Microsoft Access 先确定这些值,然后再将它们连接到 SQL 语句,该 SQL 语句传递给 Jet 数据库引擎。

用 DAO 创建 SQL 语句

下面的示例显示如何使用简单的 SQL 语句创建 QueryDef对象。该查询从“Orders”表返回所有发生在 96 年 3 月 31 日之后的订单:


Public Sub GetOrders()
   Dim dbs As DAO.Database
   Dim qdf As DAO.QueryDef
   Dim strSQL As String
   Set dbs = CurrentDb
   strSQL = "SELECT * FROM Orders WHERE OrderDate >#3-31-96#;"
   Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)
End Sub

下面的示例使用存储在变量中的值创建同样的 QueryDef对象。请注意,表示日期值的数字符号 (#) 必须包含在字符串中,这样它们才能与日期值连接。


Dim dbs As Database, qdf As QueryDef, strSQL As String
Dim dteStart As Date
dteStart = #3-31-96#
Set dbs = CurrentDb
strSQL = "SELECT * FROM Orders WHERE OrderDate" _
    & "> #" & dteStart & "#;"
Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)

下面的示例使用“Orders”窗体上名为“OrderDate”的控件值创建一个 QueryDef对象。请注意要提供对控件的完整引用,并在字符串中包含表示日期的符号。


Dim dbs As Database, qdf As QueryDef, strSQL As String
Set dbs = CurrentDb
strSQL = "SELECT * FROM Orders WHERE OrderDate" _
    & "> #" & Forms!Orders!OrderDate & "#;"
Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)

用 ADO 创建 SQL 语句

在这一节,我们将创建与前一节同样的语句,但这次使用 ADO 作为数据访问方法。

下面的示例显示如何使用简单的 SQL 语句创建 QueryDef对象。该查询从“Orders”表返回所有发生在 96 年 3 月 31 日之后的订单:


Dim dbs As Database, qdf As QueryDef, strSQL As String
Set dbs = CurrentDb
strSQL = "SELECT * FROM Orders WHERE OrderDate >#3-31-96#;"
Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)

下面的示例使用存储在变量中的值创建同样的 QueryDef对象。请注意,表示日期值的数字符号 (#) 必须包含在字符串中,这样它们才能与日期值连接。


Dim dbs As Database, qdf As QueryDef, strSQL As String
Dim dteStart As Date
dteStart = #3-31-96#
Set dbs = CurrentDb
strSQL = "SELECT * FROM Orders WHERE OrderDate" _
    & "> #" & dteStart & "#;"
Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)

下面的示例使用“Orders”窗体上名为“OrderDate”的控件值创建一个 QueryDef对象。请注意要提供对控件的完整引用,并在字符串中包含表示日期的符号。


Dim dbs As Database, qdf As QueryDef, strSQL As String
Set dbs = CurrentDb
strSQL = "SELECT * FROM Orders WHERE OrderDate" _
    & "> #" & Forms!Orders!OrderDate & "#;"
Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)

上页:Access VBA教程:文本条件表达式 下页:Access VBA教程:字符串中的引号

Access VBA教程:创建包含变量和控件的 SQL 语句

Access VBA教程:字符串中的引号 Access VBA教程:域聚合函数
Access VBA教程:在 Microsoft Access 2002 中使用 ActiveX 数据对象 Access VBA教程:AboutBox方法(快照查看器)
Access VBA教程:AccessError方法 Access VBA教程:AddMenu方法
Access VBA教程:ApplyFilter方法 Access VBA教程:Beep方法
Access VBA教程:CancelEvent方法 Access VBA教程:Close方法
Access VBA教程:CopyObject方法 Access VBA教程:DeleteObject方法
Access VBA教程:DoMenuItem方法 Access VBA教程:FindNext方法
Access VBA教程:FindRecord方法 Access VBA教程:GoToControl方法
Access VBA教程:GoToRecord方法 Access VBA教程:Hourglass方法
Access VBA教程:Maximize方法 Access VBA教程:Minimize方法
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号