关于vba:MS Access。可编辑选择。根据主键以外的数据对项目进行分组

 2021-04-27 

MS Access. Editable Selection. Grouping of Items based on data other than primary key

我希望我能清楚地解释这一点。我有一个表,叫它Widgets,它包含有关由ID#作为主键指定的许多不同Widget的信息(颜色,大小等)。我还有一个表,称为Tests,它通过一对多关系与Widget相关。该表中的每一行代表一个特定窗口小部件的测试,并具有诸如WidgetID,Date,Info1,Info2等信息。每个WidgetID在表Tests中可能具有多个测试。我正在做的只是显示各种报告,其中包含基于各种查询的两个表中的数据。我没有对这两个表中的任何一个的写特权。
好了,现在我要做的就是在这里设置。我想建立一个新表,其中包含小部件的颜色和我称为"组"的新数据之间的关联。简而言之,我希望能够定义小部件的"组",其中所有蓝色,绿色和红色小部件都在一个组中,而所有黄色和橙色小部件都在另一组中,依此类推(没有重叠...即每种颜色仅对应一个组)我还想设置一些表格,允许用户添加一个组并定义其中使用的颜色,删除一个组或编辑一个组(正确地添加和删除会足够)。
做这个的最好方式是什么?我不一定在寻找代码,而是在寻找方向。最好的情况是,如果每个窗口小部件在窗口小部件表中都有一个包含Groups数据的列,但是我没有写访问权限,并且用户和我都不希望用户可以编辑Group数据。


设置表应该足够简单:

1
2
Colour
Group

用户通过从列表中选择颜色并输入新的或现有的组,通过表单添加数据。整个过程应该是可能的,无需任何编码,只有向导。

然后将新表与彩色小部件连接起来,以创建所需的各种报告。

编辑re评论

如何设置表格取决于要返回的结果,我们可以说仅包含组中的颜色,并且我们有此SQL可以连接到小部件表:

1
2
3
   SELECT WidgetID, GroupID FROM Widgets
   INNER JOIN GroupColour
   ON Widgets.Colour=GroupColour.Colour

列表中仅包含具有GroupColour表中列出的颜色的窗口小部件,这是由于INNER JOIN的缘故。如果SQL是:

1
2
3
   SELECT WidgetID, GroupID FROM Widgets
   LEFT JOIN GroupColour
   ON Widgets.Colour=GroupColour.Colour

您将获得所有返回的小部件,但是当GroupColour中没有匹配项时,GroupID为Null。这可能非常有用。

您可能希望阅读有关MySQL的http://www.devshed.com/c/a/MySQL/Understanding-SQL-Joins/,但对于Jet SQL来说效果很好。