0

我正在使用 Visual Studio,并且有一个 Access 数据库,其中包含几个相关的表。他们使用默认的拖放绑定使用 WinForms 到自动生成的数据集。

我希望父表在结果中包含一列,其中包含具有该 ID 的相关记录数的计数。如果重要的话,这些表看起来像这样:

在此处输入图像描述

我向表适配器添加了一个附加查询(如您从屏幕截图中看到的那样),它完成了它需要做的事情(不包括链接的 ID),认为这是如何做到的。我至少在正确的轨道上吗?查询如下所示:

SELECT COUNT(*) AS WorkerCount
FROM (tblJobLaborTech INNER JOIN tblJobLabor ON tblJobLaborTech.JobLaborID = tblJobLabor.JobLaborID)
WHERE  (tblJobLabor.JobLaborID = 494)

当然,我需要更改494为在运行时与相应记录匹配的变量,但是

WHERE (tblJobLabor.JobLaborID = tblJobLaborTech.tblJobLaborTechID)

似乎根本没有预览(参数没有给出值)

所以我也试过

WHERE (tblJobLabor.JobLaborID = @JLID)

这也没有预览。

但这只是问题的开始。假设我可以让那部分工作,我如何让标量查询的结果为调用查询中的每条记录运行并在数据集中返回,就好像它是该表中的另一个字段一样?

4

1 回答 1

1

您不需要使用数据库执行此操作。数据表可以计算沿子关系存在的记录

在您tblJobLabor添加另一个数据列(右键单击,添加>>列)并将其表达式属性设置为:

Count(Child(XXX).JobLaborID)

将 XXX 替换为我突出显示的此 DataRelation 的名称:

在此处输入图像描述

https://docs.microsoft.com/en-us/dotnet/api/system.data.datacolumn.expression?view=netframework-4.8查看关于DataColumn.Expression的相当冗长的文档可以找到更多信息

于 2020-03-15T16:49:56.987 回答