我了解报告记录集属性也无法连接。
但是我想/需要做类似的事情:
Private Sub testLoad()
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = gcn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "mysp_ProofofJobScott"
'Your parameters
cmd.Parameters("@StartJob").value = 1234
cmd.Parameters("@Cmonth").value = "February 2020"
Set Me.Recordset = cmd.Execute
End Sub
如果我可以将报告绑定到记录集,那会很好用...
我已经在所有表格中使用了这种形式的变体,并希望我的方法保持一致。
我想知道有没有一种方法可以使用cmd.execute填充临时表,成为recordsource的源或其他解决方法?
传递查询简单易行,但是您必须注意传递的参数才有效,因为您只需将它们与名称联系起来即可。
考虑将cMonth更改为日期,然后在sp。中评估月份
创建PT查询的代码:
Private Sub CreatePTProofofJobScott(StartJob As Long, cMonth As String)
Const QueryDefName As String = "PTProofofJobScott"
With CurrentDb
Dim QdfExists as Boolean
Dim qdf As DAO.QueryDef
For Each qdf In .QueryDefs
If qdf.Name = QueryDefName Then
QdfExists = True
Exit For
End If
Next
If Not QdfExists Then
.CreateQueryDef(QueryDefName)
End If
With .QueryDefs(QueryDefName)
.Connect = "ODBC;DSN=yourDsnToSqlServer" 'or Conn-String https://www.connectionstrings.com/microsoft-odbc-driver-17-for-sql-server/
.SQL = "EXEC mysp_ProofofJobScott " & StartJob & ", '" & cMonth & "'"
End With
End With
End Sub
在带有所需参数的Report_Open事件中使用:
Private Sub Report_Open(Cancel As Integer)
CreatePTProofofJobScott Split(Me.OpenArgs,";")(0), Split(Me.OpenArgs,";")(1)
Me.RecordSource = "PTProofofJobScott"
End Sub
将args传递给Open cmd上的OpenArgs
DoCmd.OpenReport "yourReport",acViewPreview,,,,"1234;February 2020"
为了将来的开发,您应该看看FoggyDay指出的SSRS