2014-07-02 46 views
3

它出来了,我在规范化数据库时犯了一个错误。 再次正常化后,我的问题现在消失了。 非常感谢您的帮助,我非常感激。MS Access在两张桌子上查找

因此,下面的问题不需要再回答。

============================================== ====================

我在Access中有一个愚蠢的问题,无法继续在我的项目中,我会尽力解释它,希望您能够帮助我。也许我觉得很复杂,因为我之前从未使用过Access。一切都可以帮助,让我知道如果你需要更多的信息。谢谢!

我有一个tblForecastListPlanningCycleCalendarCategoryCalendarCategory不相关。

PlanningCycle的-Number(plcNumber)看起来像这样,例如:
201406,这意味着2014 Q3

基于该数我要填充的tblForecastList与需要用于预测在接下来的18个月-处理。这应该是这样的(我将用于IDREFS代替的ID自理正确的价值观,因为他们不会有助于解释)

fclID fcl_plcIDRef fcl_calcIDRef Month1 Month2 .... Month18 
----------------------------------------------------------------------------- 
12   201406  (not relevant) 2014June 2014July   2015December 

在为forecastlist查询我试着使用嵌套DLookups基于plcNumber从表tblCalendar获得CalendarID,看起来像这样,但它不起作用。

DLookUp([tblCalendar]![calID], "tblCalendar", "cal_calmIDRef = " & DLookUp([tblCalendarMonths]![calmID], "tblCalendarMonths","calmMonthNo = 06") AND DLookUp([tblCalendarYears]![calyID], "tblCalendarYears", "calyYear = 2014'))

*如果您已经阅读了这一点,你真棒,如果你能帮助我解决这个问题,你是更真棒。 *

非常感谢您的时间。

enter image description here

+0

难道你不想创建一个基于其他表中的数据而不是新表的查询吗?如果您说您尝试为预测列表创建查询,那么DLookups从哪里来?我对你在这里试图完成的事情感到困惑。 – Jens

回答

2

假设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')))") 

可以在东西真正的查询与WHERE在使用DLookup条款,如果你把它作为一个子查询。比嵌套的DLookups,imo更容易看到发生了什么。这里唯一的是calmMonthNo和calyYear的数据类型;我假设他们是文本,所以他们有单引号围绕查找条款。如果它们是数字类型,只需删除单引号。

+0

再次嗨。现在到了我真正需要你的代码的地步。我将其复制/粘贴到我的代码中,并立即生效。非常感谢你。 – Flouks

+0

@Flouks:不客气!很高兴帮助你! – VBlades