出来了,我在规范数据库时犯了一个错误。 再次标准化后,我的问题现在消失了。 非常感谢你的帮助,我非常感谢。
因此,以下问题不再需要回答。
=============================================== ===================
我在Access中遇到了一个愚蠢的问题而无法在我的项目中继续,我将尝试解释它并希望你能帮助我。也许我认为复杂,因为我以前没有使用过Access。一切都可以提供帮助,如果您需要更多信息,请告诉我。谢谢!
我有tblForecastList
PlanningCycle
和CalendarCategory
。
CalendarCategory
无效。
PlanningCycle
- 数字(plcNumber
)如下所示:
201406
,这意味着2014年第3季度
根据这个数字,我想用预测过程所需的接下来的18个月来填充tblForecastList
。这看起来像这样(我将使用IDRefs的正确值而不是ID本身,因为它们无助于解释)
fclID fcl_plcIDRef fcl_calcIDRef Month1 Month2 .... Month18
-----------------------------------------------------------------------------
12 201406 (not relevant) 2014June 2014July 2015December
在查询预测列表时,我尝试使用基于DLookups
的嵌套plcNumber
来获取表tblCalendar
中的CalendarID,看起来像这样,但它不起作用
DLookUp( [tblCalendar]![calID], "tblCalendar", "cal_calmIDRef = " & DLookUp( [tblCalendarMonths]![calmID], "tblCalendarMonths","calmMonthNo = 06") AND DLookUp( [tblCalendarYears]![calyID], "tblCalendarYears", "calyYear = 2014'))
*如果您已经阅读过这一点,那就太棒了,如果您可以帮助我解决问题,那么您就更加精彩了。 *
非常感谢你的时间。
答案 0 :(得分:3)
假设calmMonthNo和calyYear都是文本类型,你可以改用它:
DLookup("[calID]", "tblCalendar", "[calID] = " & _
"(SELECT tblCalendar.calID " & _
"FROM (tblCalendar INNER JOIN tblCalendarMonths " & _
"ON tblCalendar.cal_calmIDRef = tblCalendarMonths.calmID) " & _
"INNER JOIN tblCalendarYears ON tblCalendar.cal_calyIDRef = tblCalendarYears.calyID " & _
"WHERE (((tblCalendarMonths.calmMonthNo)='06') AND ((tblCalendarYears.calyYear)='2014')))")
如果将其称为子查询,则可以在DLookup的WHERE子句中填充实际查询。 imo,比嵌套的DLookups更容易看到发生了什么。这里唯一的东西是calmMonthNo和calyYear的数据类型;我假设它们是文本,因此它们在查找术语周围有单引号。如果它们是数字类型,只需删除单引号即可。