創(chuàng)建包含變量和控件的 SQL 語句

此頁沒有內(nèi)容條目
內(nèi)容

expandtri全部顯示

在使用數(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ù)庫引擎。

用 DAO 創(chuàng)建 SQL 語句

下面的示例顯示如何使用簡單的 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)

用 ADO 創(chuàng)建 SQL 語句

在這一節(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)