MS Access dlookup по двум таблицам



Оказалось, что я допустил ошибку при нормализации своей базы данных.
После того, как он снова нормализовался, мои проблемы исчезли.
Большое спасибо за вашу помощь, я действительно очень ценю ее.



Поэтому на следующий вопрос больше не нужно отвечать.



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



У меня есть глупая проблема с доступом, и я не могу продолжать свой проект, я попытаюсь объяснить это и надеюсь, что вы сможете мне помочь. Может Быть, Я ... думайте о сложном, потому что я никогда раньше не работал с доступом. Все может помочь, дайте мне знать, если вам нужна дополнительная информация. Спасибо!

У меня есть tblForecastList с PlanningCycle и CalendarCategory.
CalendarCategory не имеет значения.



PlanningCycle - Число (plcNumber) выглядит так, например:
201406, что означает 2014 Q3



Исходя из этого числа, я хочу заполнить tblForecastList следующими 18 месяцами, которые требуются для процесса прогнозирования. Это будет выглядеть так (я буду использовать правильный значения для IDRefs вместо самих IDs, потому что они не помогут объяснить)



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


В запросе forecastlist я попытался использовать вложенный DLookups на основе plcNumber, чтобы получить CalendarID из таблицы tblCalendar, который выглядел так, но он не работает.



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



*Если вы дочитали до этого момента, вы удивительны, и если вы можете помочь мне решить эту проблему, вы еще более удивительны. *



Большое вам спасибо за ваше время.



Введите описание изображения здесь

507   1  

1 ответ:

Предполагая, что 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; я предполагаю, что они являются текстом, поэтому у них есть одинарные кавычки, окружающие термины поиска. Если это числовые типы, просто удалите одинарные кавычки.

Comments

    Ничего не найдено.