Arrays 确定Access 2003中每个项目的现有项目和所需项目之间的差异

Arrays 确定Access 2003中每个项目的现有项目和所需项目之间的差异,arrays,ms-access,vba,ms-access-2003,array-difference,Arrays,Ms Access,Vba,Ms Access 2003,Array Difference,我通常是一名PHP程序员,但我目前正在MS Access 2003中的一个项目中工作,我是一名完全的VBA新手。我正在尝试做一些我可以在PHP中轻松完成的事情,但我不知道如何在Access中完成。事实如下: 表和相关字段: tblItems:现有项目id TBL项目:项目编号 TBL项目:项目id、项目id 目标:考虑到手头的项目,确定我可能做哪些项目 我需要找到一种方法,将每个项目所需的项目与手头上的项目进行比较,以确定是否缺少任何项目。如果没有,请将该项目添加到潜在项目列表中。在PHP中,我

我通常是一名PHP程序员,但我目前正在MS Access 2003中的一个项目中工作,我是一名完全的VBA新手。我正在尝试做一些我可以在PHP中轻松完成的事情,但我不知道如何在Access中完成。事实如下:

表和相关字段: tblItems:现有项目id TBL项目:项目编号 TBL项目:项目id、项目id

目标:考虑到手头的项目,确定我可能做哪些项目

我需要找到一种方法,将每个项目所需的项目与手头上的项目进行比较,以确定是否缺少任何项目。如果没有,请将该项目添加到潜在项目列表中。在PHP中,我会使用array_diff函数将手头项目的数组与所需项目项目的数组进行比较;如果没有差异,请将项目id添加到潜在项目数组中

例如,如果

$arrItemsOnHand = 1,3,4,5,6,8,10,11,15  
$arrProjects[1] = 1,10  
$arrProjects[2] = 8,9,12  
$arrProjects[3] = 7,13  
$arrProjects[4] = 1,3  
$arrProjects[5] = 2,14  
$arrProjects[6] = 2,5,8,10,11,15  
$arrProjects[7] = 2,4,5,6,8,10,11,15  
……结果应该是:

$arrPotentialProjects = 1,4

在Access中有什么方法可以做到这一点吗?

考虑一个查询来实现您的目标:根据手头的项目,确定我有可能完成哪些项目

选择 pi.project_id, Countpi.item\u id作为NumberOfItems, Sumifi.on_hand='yes',1,0作为数字手 从…起 TBL项目作为pi 内部连接tblItems作为i 关于pi.item\u id=i.item\u id 按pi.project\u id分组 有Countpi.item_id=sumifi.on_hand='yes',1,0; 该查询计算每个项目所需的项目数和手头上的项目数

当这两个数字不匹配时,这意味着该项目至少有一个必需的项目不在手边

因此HAVING子句将这些行从查询结果集中排除,只留下两个数字匹配的行,这些行是所有必需项都在手的项目

我意识到我的描述不是很好。很抱歉我认为,如果同时使用HAVING子句和不使用HAVING子句运行查询,应该更有意义。。。然后再次阅读描述


无论如何,如果这个查询提供了您所需要的,我认为您不需要VBA数组处理。如果您可以将该查询用作表单的记录源或列表或组合框的行源,则可能根本不需要VBA。

考虑一个查询来实现您的目标:根据手头上的项目,确定我可以做哪些项目

选择 pi.project_id, Countpi.item\u id作为NumberOfItems, Sumifi.on_hand='yes',1,0作为数字手 从…起 TBL项目作为pi 内部连接tblItems作为i 关于pi.item\u id=i.item\u id 按pi.project\u id分组 有Countpi.item_id=sumifi.on_hand='yes',1,0; 该查询计算每个项目所需的项目数和手头上的项目数

当这两个数字不匹配时,这意味着该项目至少有一个必需的项目不在手边

因此HAVING子句将这些行从查询结果集中排除,只留下两个数字匹配的行,这些行是所有必需项都在手的项目

我意识到我的描述不是很好。很抱歉我认为,如果同时使用HAVING子句和不使用HAVING子句运行查询,应该更有意义。。。然后再次阅读描述


无论如何,如果这个查询提供了您所需要的,我认为您不需要VBA数组处理。如果可以将该查询用作窗体的记录源或列表或组合框的行源,则可能根本不需要VBA。

最好使用MS Access中的记录集。为什么是两个查询?我如何使用记录集来实现这一点?有没有像PHP的array_diff这样的函数可以找到两个记录集之间的差异?请记住,我正在尝试获取一份项目列表,其中所有必需的项目都在手边。@HansUp-Wow!!我不完全确定我是否遵循了这个查询,但它似乎做到了。谢谢如果你加上它作为答案,我会把它标记为接受。@HansUp是的,我也注意到了。我已经更改了标题并删除了问题中对数组的大部分引用。希望它现在更合适。您最好使用MS Access中的记录集。为什么是两个查询?我如何使用记录集来实现这一点?有没有像PHP的array_diff这样的函数可以找到两个记录集之间的差异?请记住,我正在尝试获取一份项目列表,其中所有必需的项目都在手边。@HansUp-Wow!!我不完全确定我是否遵循了这个查询,但它似乎做到了。谢谢如果你加上它作为答案,我会把它标记为接受。@HansUp是的,我也注意到了。我已经更改了标题并删除了问题中对数组的大部分引用。希望现在更合身。太好了!!我不知道如何让一条SQL语句完成所有这些任务。谢谢你的帮助。太好了!!我不知道如何让一条SQL语句完成所有这些任务。谢谢你的邀请 我需要帮助。