簡體   English   中英

VBA代碼中的sql查詢

[英]sql Query in VBA code

如果我想在VBA中編寫以下代碼,該如何做

QUERY1:
SELECT field1, Min(field4) AS MinField4, Max(field5) AS MaxField5
FROM Table1
GROUP BY field1;


SELECT Query1.field1, Table1.field2, Table1.field3, Query1.MinField4,
       Query1.MaxField5
FROM   Query1 INNER JOIN Table1 ON (Query1.field1 = Table1.field1) AND
       (Query1.MinField4 = Table1.field4) AND
       (Query1.MaxField5 = Table1.field5);

我知道執行SQL時會將其存儲為字符串並編寫運行SQL。 但是如何編碼將query1存儲為可在其他SQL語句中引用的持久對象?

我認為您的問題是“如何使用代碼在Microsoft Access中創建新查詢?”

有兩種解決方案:

  1. Microsoft Access將接受DDL語句CREATE VIEW 因此,您可以在代碼中構造該語句,然后通過OLE DB(例如VBA代碼中的ADO)針對數據庫執行該語句。
  2. MS Access中的數據庫對象包含一個稱為QueryDefs的集合屬性,您可以訪問該屬性以操縱(並創建)存儲在數據庫中的查詢。

這里有一些代碼將用您的結果填充數據集

Dim cnn As ADODB.Connection
Dim recordset As ADODB.Recordset
Dim strSQL As String

Set cnn = CurrentProject.Connection
strSQL = "SELECT blah ..."
recordset.Open strSQL, cnn, adOpenKeyset, adLockOptimistic, adCmdText
'do what you want now.

哦,已經有一段時間了,但您可能也想清理一下

Set recordset = Nothing
'etc..

您可以只創建一個查詢並將該SQL粘貼到SQL視圖中(可從查詢設計窗口中獲得)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM