在使用數(shù)據(jù)訪問對象 (DAO) 或 ActiveX 數(shù)據(jù)對象 (ADO) 時,可能需要在代碼中構(gòu)建 SQL 語句。這有時稱為讓您的 SQL 代碼“嵌入”代碼行中。例如,如果正在創(chuàng)建新的 QueryDef 對象,必須將它的 SQL 屬性設為有效的 SQL 字符串。但如果要使用一個 ADO Recordset 對象,就必須將它的 Source 屬性設為有效的 SQL 字符串。
創(chuàng)建 SQL 語句最簡單的方法是在查詢設計網(wǎng)格中創(chuàng)建一個查詢,然后切換到“SQL”視圖,并將相應的 SQL 語句復制并粘貼到代碼中。
查詢通常必須基于用戶所提供的值,或者可以說在各種情況下返回不同的結(jié)果。如果是這樣,就需要在查詢中包含變量或控件值。Microsoft Jet 數(shù)據(jù)庫引擎可以處理所有的 SQL 語句,但不處理變量或控件。因此,必須構(gòu)建相應的 SQL 語句,由 Microsoft Access 先確定這些值,然后再將它們連接到 SQL 語句,該 SQL 語句傳遞給 Jet 數(shù)據(jù)庫引擎。
下面的示例顯示如何使用簡單的 SQL 語句創(chuàng)建 QueryDef 對象。該查詢從“Orders”表返回所有發(fā)生在 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
下面的示例使用存儲在變量中的值創(chuàng)建同樣的 QueryDef 對象。請注意,表示日期值的數(shù)字符號 (#) 必須包含在字符串中,這樣它們才能與日期值連接。
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”的控件值創(chuàng)建一個 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)
在這一節(jié),我們將創(chuàng)建與前一節(jié)同樣的語句,但這次使用 ADO 作為數(shù)據(jù)訪問方法。
下面的示例顯示如何使用簡單的 SQL 語句創(chuàng)建 QueryDef 對象。該查詢從“Orders”表返回所有發(fā)生在 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)
下面的示例使用存儲在變量中的值創(chuàng)建同樣的 QueryDef 對象。請注意,表示日期值的數(shù)字符號 (#) 必須包含在字符串中,這樣它們才能與日期值連接。
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”的控件值創(chuàng)建一個 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)