将指定的#记录自动添加到MS Access Table

时间:2013-12-26 22:10:47

标签: sql ms-access

节日快乐。我有两个依赖表,[orders]和[reviews],由“一对多关系”链接。在[Orders]上,PK是[Order#],[#__re_reviews_ordered]有一列。在[评论]表(PK是自动编号)上,链接字段为[order#],记录数(表中的记录)应等于“[Orders]。[#_ of_reviews_ordered]”。 是否有一种简单的方法可以实现这一点,而无需手动将记录添加到[评论]?

1 个答案:

答案 0 :(得分:0)

我认为在没有VBA的情况下做这件事的唯一方法是相当复杂的,并且只有在您的评论数量适合有限(且相当小)的范围内时才会有效。对于我的解释,我将假设评论#将在0到3之间

您需要创建一个名为TemplateReviews的表。这将至少有一个名为“KeyNumber”的字段,它实际上不应该是一个密钥。您还可以从“评论”中重复所需的字段,并使用它们存储要插入的行的默认值。

关于TemplateReviews的重要之处在于,必须事先对其进行设置,以便为KeyNumber的每个可能值赋予N行KeyNumber = N.对于我的例子,我们可以有0到3#的评论。因此TemplateReviews将具有:

  • 0行,KeyNumber = 0
  • KeyNumber = 1
  • 的1行
  • KeyNumber = 2
  • 的2行
  • KeyNumber = 3
  • 的3行

设置TemplateReviews后,需要根据它创建一个Insert查询。该查询将从TemplateReviews中插入行到评论。但您还必须过滤KeyNumber以匹配当前所选订单的值,如

=Forms!Orders![#_of_reviews]

然后,您需要运行插入查询以使用由订单表单上的按钮(等)触发的宏来运行。这仅在您第一次单击按钮时有效...但您可以修改上面的条件表达式以减去现有评论的数量,如

=Forms!Orders![#_of_reviews] - DCount("*","Reviews","OrderId=" & Forms!Orders![order#])

希望这会有所帮助。如果您使用此方法,则可以在Order表单AfterUpdate事件中使用单行VBA代码替换该按钮以触发插入查询。