我正在创建一个基于动态SQL查询(一个存储过程)的MS访问报告,该查询基于当前日期输出字段,这意味着它在运行时传递的字段将根据查询运行时的当前日期进行更改。
我已经创建了一个vba脚本,该脚本使用SQL server用于输出字段的相同计算动态地更改Access报表的控件源(这似乎是正常的),但是我现在想根据这些动态控件的值创建一些和计算,但我似乎无法在计算中使用控件名称(而不是控件源)。
例如:
我是否可以仅使用另一个控件的名称来计算一个控件,而不是使用该控件的控件源(在运行查询之前我无法知道这一点)?
我应该绕过它,做更多的脚本来动态地插入sum字段的控制源吗?
发布于 2016-06-06 14:23:56
如果根据源打开记录集,则可以在VBA中按索引引用字段,例如:
MyValue = rs.Fields(8).Value + rs.Fields(2).Value / 100发布于 2016-06-06 17:09:47
我想我明白你在问什么,看到问题了。
我认为最简单的解决方案--就像您已经在代码中做了类似的事情一样--是为Sum文本字段更改ControlSource。我假设您的求和控件名为“Date1P和”
在代码中,脚本将名为"Date1P“的控件更改为"201606 P”的控件源。
添加一行代码
me.[Sum Of Date1P].ControlSource = "=Sum([201606 P])"发布于 2016-06-07 17:14:55
如果需要,可以尝试这个SQL --您应该在我们的报表查询中看到一个名为"TotalsP“的新字段。将总计字段的控制源更改为"TotalsP“字段,分组和字段为"= sum (TotalsP)”
我想我把所有的逗号和引号都排好了。
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);https://stackoverflow.com/questions/37658222
复制相似问题