#ms-access #vba #ms-access-2010
#ms-access #vba #ms-access-2010
Вопрос:
Оказалось, что я допустил ошибку при нормализации моей базы данных. После повторной нормализации мои проблемы исчезли. Большое вам спасибо за вашу помощь, я действительно очень ценю это.
Поэтому на приведенный ниже вопрос больше не нужно отвечать.
==================================================================
У меня глупая проблема в Access, и я не могу продолжить свой проект, я попытаюсь объяснить это и надеюсь, что вы сможете мне помочь. Может быть, я думаю, что это сложно, потому что я никогда раньше не работал с Access. Все может помочь, дайте мне знать, если вам нужна дополнительная информация. Спасибо!
У меня есть tblForecastList
с PlanningCycle
и CalendarCategory
. CalendarCategory
Не имеет значения.
PlanningCycle
-Число ( plcNumber
) выглядит так, например:
201406
, что означает 3 квартал 2014 года
На основе этого числа я хочу заполнить tblForecastList
следующие 18 месяцев, которые требуются для процесса прогнозирования. Это будет выглядеть следующим образом (я буду использовать правильные значения для IDREFS вместо самих идентификаторов, потому что они не помогут объяснить)
fclID fcl_plcIDRef fcl_calcIDRef Month1 Month2 .... Month18
-----------------------------------------------------------------------------
12 201406 (not relevant) 2014June 2014July 2015December
В запросе для списка прогнозов я попытался использовать вложенный, DLookups
основанный на plcNumber
, чтобы получить calendarId из таблицы tblCalendar
, который выглядел следующим образом, но он не работает.
DLookUp( [tblCalendar]![calID], "tblCalendar", "cal_calmIDRef = " amp; DLookUp( [tblCalendarMonths]![calmID], "tblCalendarMonths","calmMonthNo = 06") AND DLookUp( [tblCalendarYears]![calyID], "tblCalendarYears", "calyYear = 2014'))
* Если вы дочитали до этого места, вы потрясающий, и если вы можете помочь мне решить проблему, вы еще более потрясающий. *
Большое вам спасибо за ваше время.
Комментарии:
1. Не лучше ли вам создать запрос на основе данных из ваших других таблиц вместо новой таблицы? И если вы говорите, что пытаетесь создать запрос для списка прогнозов, откуда берутся DLookups? Я немного запутался в том, чего вы пытаетесь достичь здесь.
Ответ №1:
Предполагая, что calmMonthNo и calyYear являются текстовыми типами, вы можете использовать это вместо:
DLookup("[calID]", "tblCalendar", "[calID] = " amp; _
"(SELECT tblCalendar.calID " amp; _
"FROM (tblCalendar INNER JOIN tblCalendarMonths " amp; _
"ON tblCalendar.cal_calmIDRef = tblCalendarMonths.calmID) " amp; _
"INNER JOIN tblCalendarYears ON tblCalendar.cal_calyIDRef = tblCalendarYears.calyID " amp; _
"WHERE (((tblCalendarMonths.calmMonthNo)='06') AND ((tblCalendarYears.calyYear)='2014')))")
Вы можете поместить реальный запрос в свое предложение WHERE в DLookup, если вы вызываете его как подзапрос. имо, гораздо проще увидеть, что происходит, чем вложенные DLookups. Единственное, что здесь есть, это типы данных calmMonthNo и calyYear; Я предполагаю, что они являются текстовыми, поэтому они заключены в одинарные кавычки вокруг терминов поиска. Если это числовые типы, просто удалите одинарные кавычки.
Комментарии:
1. Еще раз привет. Теперь я подошел к тому моменту, когда мне действительно понадобился ваш код. Я скопировал / вставил это вслепую в свой код, и это сработало мгновенно. Большое вам спасибо.