【问题标题】:MS Access Report Connection to RecordsetMS Access 报告与记录集的连接
【发布时间】:2020-01-24 23:07:59
【问题描述】:

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

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

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

【问题讨论】:

  • 如果我理解您的问题,您想在 MS-Access 中创建一个 Report 以从 MS SQL Server 数据库中获取数据,对吗?问:SSRS 对你来说是一个可行的解决方案吗?
  • 我不确定它会不会。总体计划,还有一段路要走,我们工作的一些网站会让未经培训的人使用数据库。我在 Access 方面比 SQL 更好,所以一直在尝试将接口保留在 Access 中。虽然这是一个我没有探索过的领域,但会看看这个。
  • 选项 1:使用 Dao-Passthrough 查询,但缺少参数。选项 2 将结果存储在临时表中并将其链接到报告。
  • 最佳选择:以此为契机,进一步了解 SSRS。无论您是否将它用于此特定项目,重要的是要知道以最好地服务于“您工作的网站”。
  • 这里有两种不同的观点...想知道哪个是追求最快的,并且为未来提供最好的回报...哦,好吧,该去更换汽车上的刹车片了。在我这样做的时候需要思考的事情。

标签: sql-server ms-access-2016


【解决方案1】:

Passthrough 查询既简单又快速,但您必须注意传递的参数是有效的,因为您只需将 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 上将 args 传递给 OpenArgs

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

对于未来的发展,你应该看看 SSRS 正如 FoggyDay 所说的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 2018-05-08
    • 2014-12-31
    • 2015-11-23
    相关资源
    最近更新 更多