首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于控件名称而不是控制源(字段)的MS访问计算

基于控件名称而不是控制源(字段)的MS访问计算
EN

Stack Overflow用户
提问于 2016-06-06 13:02:14
回答 4查看 780关注 0票数 1

我正在创建一个基于动态SQL查询(一个存储过程)的MS访问报告,该查询基于当前日期输出字段,这意味着它在运行时传递的字段将根据查询运行时的当前日期进行更改。

我已经创建了一个vba脚本,该脚本使用SQL server用于输出字段的相同计算动态地更改Access报表的控件源(这似乎是正常的),但是我现在想根据这些动态控件的值创建一些和计算,但我似乎无法在计算中使用控件名称(而不是控件源)。

例如:

  • 当前,我的SQL查询有一个(动态)字段输出,名为"201606 P",还有静态字段"Person“和"Project”。
  • 打开报告。
  • MS脚本执行与SQL查询相同的计算,并将名为"Date1P“的控件更改为具有"201606 P”的控件源。
  • 报告是按人分组的,我要计算每个人的"201606 P“字段的总和。
    • 我的sum 'unbound‘textbox控件的控件源为"= sum ( Date1P )",其中Date1P是我希望在组中求和的控件的名称,而不是查询中提供的字段。

  • 打开时,Access会显示一个参数框,请求Date1P的值。

我是否可以仅使用另一个控件的名称来计算一个控件,而不是使用该控件的控件源(在运行查询之前我无法知道这一点)?

我应该绕过它,做更多的脚本来动态地插入sum字段的控制源吗?

EN

回答 4

Stack Overflow用户

发布于 2016-06-06 14:23:56

如果根据源打开记录集,则可以在VBA中按索引引用字段,例如:

代码语言:javascript
运行
复制
MyValue = rs.Fields(8).Value + rs.Fields(2).Value / 100
票数 1
EN

Stack Overflow用户

发布于 2016-06-06 17:09:47

我想我明白你在问什么,看到问题了。

我认为最简单的解决方案--就像您已经在代码中做了类似的事情一样--是为Sum文本字段更改ControlSource。我假设您的求和控件名为“Date1P和”

在代码中,脚本将名为"Date1P“的控件更改为"201606 P”的控件源。

添加一行代码

代码语言:javascript
运行
复制
me.[Sum Of Date1P].ControlSource = "=Sum([201606 P])"
票数 1
EN

Stack Overflow用户

发布于 2016-06-07 17:14:55

如果需要,可以尝试这个SQL --您应该在我们的报表查询中看到一个名为"TotalsP“的新字段。将总计字段的控制源更改为"TotalsP“字段,分组和字段为"= sum (TotalsP)”

我想我把所有的逗号和引号都排好了。

代码语言:javascript
运行
复制
declare @sql as varchar(max); 
select @sql = 'SELECT Person, Project, [Total P], [Total TS], 
' + stuff(( select distinct ',ISNULL(max(case [SortDate] when ''' + [SortDate] + ''' then PlanHours end), 0) as [' + [SortDate] + ' P],'
' + stuff(( select distinct ',ISNULL(max(case [SortDate] when ''' + [SortDate] + ''' then PlanHours end), 0) as [TotalsP]' 
+ ',ISNULL(max(case [SortDate] when ''' + [SortDate] + ''' then TimesheetHours end), 0) as [' + [SortDate] + ' TS]' 
from qryPTGTimesheetsCombinedAllUnionPrepTotalsTIM for xml path('')), 1, 1, ''); 
select @sql += ' FROM qryPreviousStaticQueryThatProvidesRecords GROUP BY Person, Project, [Total P], [Total TS];'; PRINT @sql; exec(@sql);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37658222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档