我有一個相當複雜的SQL查詢與嵌套子查詢。當我嘗試在Microsoft Query中使用參數時,我說可以在不能用圖形表示的查詢中使用參數。所以我需要另一種選擇。我認爲你可以將你的SQL查詢放在一個單元格中作爲一個字符串,然後讓一個宏運行它。任何想法我可以做到這一點?在SQL查詢中使用參數與子查詢
感謝
-Jesse
我有一個相當複雜的SQL查詢與嵌套子查詢。當我嘗試在Microsoft Query中使用參數時,我說可以在不能用圖形表示的查詢中使用參數。所以我需要另一種選擇。我認爲你可以將你的SQL查詢放在一個單元格中作爲一個字符串,然後讓一個宏運行它。任何想法我可以做到這一點?在SQL查詢中使用參數與子查詢
感謝
-Jesse
這裏是什麼,我來解決Microsoft查詢的限制在Excel 2007中:
SELECT NULL AS Test
,例如)查詢並將其插入到工作表中。?
'約定爲參數寫出或粘貼所需的查詢,然後單擊確定。這個想法是繞過MS Query提供的GUI,它具有底層引擎不具有的任意限制。
這適用於許多複雜的查詢,但不是全部。當我遇到MS Query拒絕摘要的查詢時,我要麼重構查詢(如果可行),要麼在SQL服務器上創建一個VIEW
並針對該查詢進行查詢。
不幸的是?對我的大多數查詢都不起作用,其中很多不適合轉換爲視圖。
我使用的主要替代越來越宏返回代碼
Dim Con As New ADODB.Connection
Dim RS As New ADODB.Recordset
Dim server, Database As String
Dim Data as Worksheet
Set data = ThisWorkBook.Worksheets("data")
'rename field here and elsewhere to your variable eg SD or StartDate
Dim field as string
server = "servername"
Database = "database"
'set connection string
If Con.State <> 1 Then
Con.ConnectionString = "Provider=SQLOLEDB;Data Source=" & server & ";Initial Catalog=" & Database & ";Integrated Security=SSPI;"
'this is just setting the connection time out to infinite
setcono:
Con.ConnectionTimeout = 0
Con.CommandTimeout = 0
'this is making sure it set the connection time out to infinite
If Con.ConnectionTimeout > 0 Then GoTo setcono
If Con.CommandTimeout > 0 Then GoTo setcono
Con.Open
Set oRS = New ADODB.Recordset
oRS.ActiveConnection = Con
field = Range("A2").value
oRS.Source = "YOUR SQL QUERY "
oRS.Source = oRS.Source & " WHERE field = '" & field & "'"
oRS.Open
data.Range("A2").CopyFromRecordset oRS
End If
oRS.Close
Con.Close
If Not oRS Is Nothing Then Set oRS = Nothing
If Not Con Is Nothing Then Set oCon = Nothing
我很想微軟修復錯誤,這錯誤的更復雜的查詢返回的錯誤,因爲我覺得它只是令人沮喪的創建宏返回一個簡單的數據集
另一種方式來解決這個問題的目的是使用,然後在桌子上適當的存儲過程
CREATE PROCEDURE [dbo].[yourprocedure] @DATEFROM DATETIME, @DATETO DATETIME
AS
SELECT Query
where date >= @datefrom
and date <= @dateto
連接點擊連接屬性按鈕,然後點擊定義選項卡。在命令正文部分:
EXEC yourprocedure @DATEFROM = ?, @DATETO = ?
並直接在?到你想要的細胞
工作就像一個魅力。感謝您的解決方法 – jomille 2011-02-01 02:49:04