【问题标题】:SQL Server Query with variables as MS Access subform record source使用变量作为 MS Access 子表单记录源的 SQL Server 查询
【发布时间】:2016-04-26 20:20:36
【问题描述】:

我正在尝试找出构建动态查询并将其用作 MS Access 子表单的记录源的最佳方法。我现在已经静态分配了 WHERE 子句,这样我就可以构建表单并确保数据正确提取。主窗体将有 2 个格式化为 ShortDate 的文本框和下面的 2 个子窗体,其中包含查询结果。第一个子表单是按员工姓名分组的查询,第二个子表单是部门总数的总和。

FWIW 这是一个 Access 2010 ADP/ADE 前端,SQL Server 2008 后端。我当前的部门总计 SQL 如下:

SELECT        COUNT(*) AS TotalNumEstimates, SUM(NumPanels) AS TotalNumPanels, SUM(PriceBase) AS TotalBasePrice, SUM(PriceBase) / SUM(NumPanels) AS ValuePricePerPanel 
FROM            dbo.tblBid 
WHERE        (Date > CONVERT(DATETIME, '2016-01-01 00:00:00', 102)) 
HAVING        (SUM(NumPanels) > 0)

我计划将 WHERE 子句更改为“WHERE Date BETWEEN @FromDate and @ToDate”。然后在设置日期并单击“运行报告”按钮的 Access 表单上,以编程方式设置 OnClick 事件以分别将 txtFromDate 和 txtToDate 传递给 @FromDate 和 @ToDate,但我不太清楚那部分.

我能看到的唯一其他选项是将整个 SQL 语句键入为字符串,并在 OnClick 事件中声明 txtFromDate 和 txtToDate 并将子表单记录源更改为新字符串。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: sql-server ms-access vba


    【解决方案1】:

    我相信我已经解决了通过创建存储过程将文本框传递给 WHERE 子句的最初问题。如果我不能让存储过程工作,我会重新发布,但这似乎很容易。

    【讨论】:

      【解决方案2】:

      使用 [permanent] 临时表,然后在表单卸载时将其删除。如果多个用户将同时使用该表单,您需要在名称中添加某种会话编号。所以:

      SELECT COUNT(*) AS TotalNumEstimates, SUM(NumPanels) AS TotalNumPanels, SUM(PriceBase) AS TotalBasePrice, SUM(PriceBase) / SUM(NumPanels) AS ValuePricePerPanel 
      INTO   dbo.TempSubFormTable    
      FROM   dbo.tblBid 
      WHERE  Date > '2016-01-01'
      HAVING SUM(NumPanels) > 0
      

      从你的子表单中删除记录源,并给它一个公共接口:

      Public Sub SetRecordSource(tbl as string)
          Me.RecordSource = "SELECT * FROM tbl" 'ORDER BY ...
      End Sub
      

      然后,在创建临时表之前,让您的子表单不可见。创建临时表后,

      Me.subformName.Visible = True
      Me.subformName.SetRecordSource temporary_table_name 'without the dbo. part of the name
      

      【讨论】:

        猜你喜欢
        • 2012-05-29
        • 2020-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多