0
假設在SQL Server這個存儲過程:填充從存儲過程到訪問前一報告結束
CREATE PROCEDURE sp_MySP AS
BEGIN
SELECT a.Field1, a.Field2, v.Field3, p.Field4, a.Field5
INTO #Temp1
FROM tblMyTable1 AS a, tblMyTable2 AS p, tblMyTable3 AS v
WHERE a.Field1 = p.Field1
AND a.Field1 = v.Field1
SELECT a.Field1, a.Field2, v.Field3, p.Field4, a.Field5
INTO #Temp2
FROM tblMyTable1 AS a, tblMyTable2 AS p, tblMyTable3 AS v
WHERE a.Field1 = p.Field1
AND a.Field1 = v.Field1
SELECT *
FROM #Temp1
UNION ALL
SELECT *
FROM #Temp2
END
這VBA代碼(我把VBA代碼對報告的Load事件):
Private Sub Report_Load()
Dim rs As ADODB.Recordset
Dim cnComments As New ADODB.Connection
Dim strConn As String
strConn = "PROVIDER=SQLOLEDB;DATA SOURCE=WML202;INITIAL CATALOG=TOOL_TRACKING;UID=" & CVHx(SSTR1) & ";PWD=" & CVHx(SSTR2) & ";"
cnComments.Open strConn
Set rs = cnComments.Execute("EXEC sp_MySP")
'** What do I do here?
End Sub
實際存儲過程要複雜得多(也是不必要的),但這是數據集的佈局。這是一對夫婦#Temp文件的聯合。
如何執行'** What do I do here?
部件以便存儲過程的結果將填充報告?
備註:您應該**不要**爲存儲過程使用'sp_'前綴。微軟已經保留了這個前綴以供自己使用(參見*命名存儲過程*)](http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx),以及你將來有可能冒着名字衝突的風險。 [這對你的存儲過程性能也是不利的](http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix)。最好只是簡單地避免使用'sp_'並使用別的東西作爲前綴 - 或者根本沒有前綴! –
創建傳遞查詢,從存儲過程中提取數據並將查詢用作報表的記錄源。 – HansUp