MS Access报告连接到记录集

问题描述 投票:0回答:1

我了解报告记录集属性也无法连接。

但是我想/需要做类似的事情:

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的源或其他解决方法?

sql-server ms-access-2016
1个回答
0
投票

传递查询简单易行,但是您必须注意传递的参数才有效,因为您只需将它们与名称联系起来即可。

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

© www.soinside.com 2019 - 2024. All rights reserved.