访问报表/SQL DCount 函数

Posted

技术标签:

【中文标题】访问报表/SQL DCount 函数【英文标题】:Access Report / SQL DCount function 【发布时间】:2011-08-19 18:43:02 【问题描述】:

我的数据库中有以下表格和字段:

tblProductionRecords:
pk_fldProductionRecordID,
fk_fldJobNumber_ID,
fldPartsCompleted,

tblJobs:
pk_fldJobID,
fldJobNumber

tblEmployee_ProductionRecord:
pk_fldEmp_ProdRec,
fk_fldProdRec_ID,
fk_fldEmployee_ID,
fldHours

tblEmployees:
pk_fldEmployeeID,
FldName

所以我要跟踪的是给定工作的生产记录。生产记录片断如下: 零件数量。 哪些员工参与了完成数量(可能是 1 名或多名员工,因此员工和生产记录之间存在多对多关系) 以及每位员工完成数量所花费的时间。

我面临的问题是在我的报告中跟踪我的工作总量。当给定的生产记录有一名员工处理这些数量时,将添加每个员工记录的数量。因此,让相同的 3 名员工从事一项工作,其中 3 人创建了完整的 1000 个零件。在我的报告中,它将显示总共完成了 3000 个。

我了解创建组、页脚、页眉、运行总和和计数功能(我相信)。

我怀疑我需要的是查询中的一个字段,它是 tblEmployee_ProductionRecord 中有多少记录的总和,其中详细部分中的 fldProdRec_ID =“当前生产记录”。有了这个数字,我可以将完成的总数量除以 3 名(或多少名)员工,然后对该字段求和。

我希望这已经足够清楚了。我真诚地感谢任何帮助!

大卫

【问题讨论】:

【参考方案1】:

如果我理解正确,您的示例(3 名员工从事一项工作,每人创建 1000 个零件)在表格中将如下所示:

tblEmployee_ProductionRecord:

pk_fldEmp_ProdRec   fk_fldProdRec_ID    fk_fldEmployee_ID   fldHours
1                   1                   1                   5
2                   2                   2                   5
3                   3                   3                   5

tblProductionRecords:

pk_fldProductionRecordID    fk_fldJobNumber_ID  fldPartsCompleted
1                           1                   1000
2                           1                   1000
3                           1                   1000

如果是,请尝试以下查询:

SELECT
    tblProductionRecords.fk_fldJobNumber_ID, 
    Count(tblEmployee_ProductionRecord.pk_fldEmp_ProdRec) AS EmployeeCount,
    Sum(tblProductionRecords.fldPartsCompleted) AS CompletedSum
FROM 
    tblEmployee_ProductionRecord 
    INNER JOIN tblProductionRecords ON tblEmployee_ProductionRecord.fk_fldProdRec_ID 
                = tblProductionRecords.pk_fldProductionRecordID
GROUP BY 
    tblProductionRecords.fk_fldJobNumber_ID
HAVING
    tblProductionRecords.fk_fldJobNumber_ID=1;

这将返回以下结果:

fk_fldJobNumber_ID  EmployeeCount   CompletedSum
1                   3               3000

--> 对于第一个工作,三名员工共创建了 3000 个零件。

这是你想要的吗?

【讨论】:

你好克里斯蒂安-谢谢你的回复。并不是 3 名员工每人创造了 1000 个零件,而是 3 名员工在他们 3 人之间总共创造了 1000 个零件。所以 tblProductionRecords 中有一条 PartsCompleted 为 3000 的记录,而 tblEmployee_ProductionRecord 中有 3 条记录指向已完成的 3000 个零件的一条生产记录。 @user902949:我不确定我是否理解你的意思。如果 3 名员工总共创建了 1000 个零件(例如,300+300+400),那么 tblProductionRecords 中的记录将有 PartsCompleted = 3000?我原本预计会是 1000 个(员工创建的零件总数)。您能否澄清这一点(或者更好的是,编辑您的问题并为表格提供一些示例数据)?

以上是关于访问报表/SQL DCount 函数的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server Reporting Services 2008 报表生成器用户访问权限

从 SQL 的数据中将数据添加到报表中。微软访问

DCount 与 SQL SELECT COUNT(*)?

使用更新的参数集无法从 VB 关闭或刷新访问报表

在 where 条件下访问子报表

Excel-满足指定条件并且包含数字的单元格数目,DCOUNT()