【问题标题】:How can I use VBA to add a totals row at the end of new table如何使用 VBA 在新表末尾添加总计行
【发布时间】:2015-09-23 06:49:28
【问题描述】:

我有这个 VBA 代码来创建一个新表:

Dim strSql As String

strSql = "SELECT FGE50IPE_GESUPE.DATPRP, " _
       & "Count(FGE50IPE_GESUPE.NUMSUP) AS NoSupp INTO table1 " _
       & "FROM FGE50IPE_GESUPE " _
       & "GROUP BY FGE50IPE_GESUPE.DATPRP;"
docmd.runsql strsql

我知道在 MS-Access 中,您可以通过以下方式创建总计: 导航窗格 > 数据表视图 > “主页”选项卡 > 单击总计... 按照这个MS Tip

是否可以通过 VBA 做到这一点?

我想准备我的表格的最终视图,其中包含总计、平均... 并且由于我的程序使用自定义功能区并且 std 选项卡不可见,因此无法从最终用户添加总行。

【问题讨论】:

  • 请不要在全大写的标题中对我们大喊大叫。
  • 抱歉,我正在用 CAPS TITLE 填写另一个表格。

标签: ms-access vba ms-access-2007


【解决方案1】:

我错过了看TableDef,解决方法:db.TableDefs("table1").Properties("TotalsRow") = True

【讨论】:

    【解决方案2】:

    当我尝试接受的答案时,我收到一个错误,指出该属性不存在。所以我这样做了:

    CurrentDb().TableDefs("TableName").Properties.Append CurrentDb().CreateProperty("TotalsRow", dbBoolean, True)
    

    这添加了总计行,但只有单词“Totals”,没有数字。要显示总计,我必须为每个字段设置 AggregateType 属性。因此,最终起作用的代码是:

    dim oDB as Database
    Set oDb = CurrentDb()
    With oDb.TableDefs("TableName")
        .Properties.Append oDb.CreateProperty("TotalsRow", dbBoolean, True)
        .Fields("Field 1").Properties.Append oDb.CreateProperty("AggregateType", dbLong, 0)
        .Fields("Field 2").Properties.Append oDb.CreateProperty("AggregateType", dbLong, 0)
        etc.
      End With
    

    通过将TableDefs 更改为QueryDefs,相同的代码适用于查询。

    我在哪里找到这些信息:Access WorldStackOverflowUtterAccess。第三个来源是我发现AggregateType 必须设置为dbLong。我首先尝试了dbInteger,这对小数字(甚至dbByte)更有意义,但直到我使用dbLong,数字才显示出来。

    【讨论】:

      猜你喜欢
      • 2013-05-25
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      相关资源
      最近更新 更多