我有这个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执行此操作?
我想用总数,平均数来准备我的桌子的最终视图...... 并且因为我的程序使用自定义色带和标准选项卡不可见,所以无法从最终用户添加总行。
答案 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 World、StackOverflow 和 UtterAccess。第三个来源是我发现 AggregateType
必须设置为 dbLong
。我首先尝试了 dbInteger
,这对于小数字(甚至 dbByte
)更有意义,但直到我使用 dbLong
后数字才出现。