MS 访问报表与记录集的连接



我知道报告记录集属性也无法连接。

但是我想/需要做这样的事情:

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 来填充临时表,成为记录源的源或其他一些解决方法?

简单快捷的是直通查询,但您必须注意传递的参数是否有效,因为您只需将 sp 名称与它们连接即可。

考虑将 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

将参数传递给打开的cmd上的OpenArgs

DoCmd.OpenReport "yourReport",acViewPreview,,,,"1234;February 2020"

对于未来的开发,你应该看看SSRS,正如FoggyDay所指出的那样。

最新更新