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