2013-09-25 3 views
0

Я пытаюсь вычислить анализ аудита FIFO управления запасами. Все это сделано в MS Access 2010.Использование Dlookup или RecordSet для возврата нескольких значений

Единица 1 добавлена ​​в инвентарь Сегодня. Завтра добавляется блок 2.

На следующей неделе, когда устройство выбрано для потребления, в идеале мы используем Единицу 1, но если нет, я создаю запрос, чтобы идентифицировать это. До сих пор я работал, чтобы работать, используя функцию DLookup.

Однако мне нужно определить, на какие конкретные старшие блоки повлиял отказ от выполнения FIFO. Вот где DLookup Fails.

Unit #   In Date    Out Date 
A     1/1/13    1/14/13 
B     1/1/13    1/14/13 
C     1/4/13    1/13/13 
D     1/4/13    1/13/13 

Вышеупомянутое может привести к тому, что мой запрос дважды вычитает блок C дважды, а блок D - в порядке. Тем не менее, каждая запись в запросе возвращает только блок A при использовании Dlookup. Это связано с тем, что Dlookup предназначен только для поиска первого значения, соответствующего критериям, а не для всех записей.

Например:

Inefficiently Used Unit     Overlooked Unit 
C            A 
C            A 
D            A 
D            A 

Это то, что эта функция DLookup выглядит следующим образом:

DLookup ("[Container]", "Контейнер эффективности", "[Carrier] = '" & [Перевозчик ] & "И [Тип контейнера] = '" & [Тип контейнера] &»И [В Дата] < #" & [В Дата] & "# и [Out Date]> #" & [Out Дата] & "#"))

Мне нужно спроектировать его так, чтобы критерии выдавали несколько значений.

Inefficiently Used Unit     Overlooked Unit 
C            A 
C            B 

Я занимался исследованиями, и это похоже на использование Recordsets, а VBA - путь. Я играю с этим сейчас (имея некоторые проблемы с тиражированием синтаксиса и рассматриваю использование FindFirst/FindNext с критериями, а затем цикл), но я получаю противоречивые мнения о том, возможно ли это или как писать код.

ответ

1

Используйте DLookup, если вы хотите вернуть одно значение из одного поля в одной строке. Используйте DCount, если вы хотите вернуть количество записей, соответствующих вашим критериям.

Если вы не можете себе представить, как он работает с одним из них, вам может понадобиться написать свою собственную функцию и использовать набор записей DAO (или ADO, если вы предпочитаете это по какой-то причине).

Ваш вопрос, кажется, не содержит важной информации. Вы хотите подсчет или хотите видеть фактические совпадающие строки? Независимо от того, что ответ, ваш вопрос действительно имеет много общего с вашей структурой таблицы (дизайн вашей базы данных) и SQL. Не зная дизайна ваших таблиц, почти невозможно дать вам SQL, который будет работать.

Ваши последние две диаграммы несколько вводят в заблуждение. Ожидаете ли вы, что ваш запрос вернет две строки, показывая один тип единиц в первом столбце, а другой во втором столбце? Если это так, вам, вероятно, потребуется использовать запрос с перекрестной вкладкой. Стандартные запросы действительно могут группировать, но они не могут разбивать вариации внутри одного поля на отдельные столбцы.

Еще раз попробуйте сделать запрос, который сделает все, что вам нужно, и опубликуйте SQL на свой вопрос с описанием того, что вы действительно ищете. Будут ли данные в отчете или форме? Как вы хотите, чтобы он отображался: сгруппированный, подсчитанный, индивидуальный?

Смежные вопросы