2013-07-17 4 views
2

У меня есть база данных, которая использует уникальный идентификатор для каждой транзакции. Идентификатор транзакции - это две последние цифры года, за которыми следует четырехзначный последовательный номер (например, от 0100 до 9999). Этот номер сбрасывается до 0100 в начале каждого года. Не все числа используются каждый год. Например, последняя сделка в 2012 году составила 12-0409, в 2011 году она была 11-0500. Эти числа в настоящее время не создаются в базе данных, но создаются вручную. Я пытаюсь переключиться на автоматизацию, но в то же время мне приходится создавать исправления для исправления ошибок.Непревзойденный запрос с ограничениями

В базе данных у меня есть одна таблица и один запрос. Запрос ([Проверка предложения]) содержит идентификатор транзакции ([HL #]) и показывает только последние четыре в двух форматах: один в виде числового формата ([NumList]) и один в текстовом формате ([TextList]). Таблица представляет собой базовую таблицу, в которой перечислены все числа между 0100 и 9999. Я пытаюсь создать запрос, который позволяет мне идентифицировать, какие идентификаторы транзакций отсутствуют, то есть у меня есть 13-0250 и 13-0252, но не 13-0251. Я могу создать запрос, который идентифицирует, какие номера отсутствуют, однако он также перечисляет все числа, прошедшие последний идентификатор транзакции. Как я могу ограничить запрос текущим максимальным идентификатором транзакции?

Это то, что у меня есть до сих пор.

SELECT YearlyOfferIds.YOID 
FROM 
    YearlyOfferIds 
    LEFT JOIN [Offer Check] 
    ON YearlyOfferIds.[YOID] = [Offer Check].[TextList] 
WHERE ((([Offer Check].TextList) Is Null)); 

И я пытаюсь добавить или что-то, что делает то же самое.

SELECT Max([Offer Check].NumList) AS MaxOfNumList 
FROM [Offer Check]; 

ответ

2

Ваш второй запрос, SELECT Max(..., можно перевести в выражение DMax.

DMax("NumList", "Offer Check") 

Моя догадка вы можете использовать, что DMax в WHERE пункте вашего первого запроса, чтобы ограничить строки, возвращаемые из YearlyOfferIds. К сожалению, я не знаю названия поля YearlyOfferIds, которое вы хотите сравнить с максимальным [Offer Check].NumList. Поэтому я просто позвоню этому полю some_field.

WHERE 
     YearlyOfferIds.some_field <= DMax("NumList", "Offer Check") 
    AND [Offer Check].TextList Is Null 
+0

спасибо. Это не совсем сработало, но из-за моих данных. Это привело меня к тому месту, где я мог использовать свои ограниченные знания, чтобы выполнить эту работу. Просто, чтобы вы знали, в таблице YearlyOfferIds было только одно поле. Он называется YOID. – Dragonsen