如何使用VBA在新表的末尾添加总计行

时间:2015-07-06 07:56:32

标签: access-vba ms-access-2007

我有这个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中你可以通过以下方式创建总计: 导航窗格>数据表视图> “主页”标签>点击Totals ... 按此MS Tip

是否可以通过VBA执行此操作?

我想用总数,平均数来准备我的桌子的最终视图...... 并且因为我的程序使用自定义色带和标准选项卡不可见,所以无法从最终用户添加总行。

2 个答案:

答案 0 :(得分:1)

我想念TableDef解决方案:db.TableDefs("table1").Properties("TotalsRow") = True

答案 1 :(得分:0)

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

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

这添加了总计行,但只有“总计”一词,没有数字。为了显示总数,我必须为每个字段设置 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 后数字才出现。