Доступ к таблице LookUp - PullRequest
3 голосов
/ 02 июня 2011

Мне нужно создать таблицу поиска в Access, где все сокращения относятся к значению, и если сокращение (в основной таблице) равно нулю, то я хочу показать «Неизвестно»

у меня есть работающие значения, но я не могу получить нулевые значения.

моя таблица поиска выглядит так:

REQUEST     REQUEST_TEXT
------------------------
A           Approve
D           Disapprove
NULL        N/A

, но когда я делаю подсчет по запросу, он показывает только значения для A и D, хотя я знаю, что там тоже есть пробелы.

что я делаю не так?

1 Ответ

3 голосов
/ 02 июня 2011

Это должно быть проще, если вы измените tblLookup.

REQUEST     REQUEST_TEXT
------------------------
A           Approve
D           Disapprove
U           Unknown

Затем в tblMain измените поле REQUEST на Required = True и Default Value = "U". При добавлении новых записей они будут иметь U для ЗАПРОСА, если пользователь не изменит их на A или D.

Тогда запрос, который объединяет 2 таблицы в REQUEST, должен дать вам то, что я думаю, вы хотите.

SELECT m.REQUEST, l.REQUEST_TEXT
FROM tblMain AS m
    INNER JOIN tblLookup AS l
    ON l.REQUEST = m.REQUEST;

Вы также должны создать связь между двумя таблицами и выбрать опцию для обеспечения ссылочной целостности, чтобы пользователи не могли добавить ложное значение, такое как «X» для REQUEST.

Редактировать : Если изменение структуры tblMain вне таблицы, и если вы делаете это из сеанса Access, вы можете использовать функцию Nz () в LEFT JOIN.

SELECT m.REQUEST, Nz(l.REQUEST_TEXT, "Unknown")
FROM tblMain AS m
    LEFT JOIN tblLookup AS l
    ON l.REQUEST = m.REQUEST;

Если вы делаете это вне сеанса Access, например из ASP, функция Nz () будет недоступна. Таким образом, вы можете заменить выражение IIf () на Nz ().

SELECT m.REQUEST, IIf(l.REQUEST_TEXT Is Null, "Unknown", l.REQUEST_TEXT)
FROM tblMain AS m
    LEFT JOIN tblLookup AS l
    ON l.REQUEST = m.REQUEST;

Edit2 : Вы не можете напрямую присоединиться к нулевым значениям. Однако со строкой «Неизвестно», которую я предложил для tblLookup, вы можете использовать JOIN, который включает Nz для tblMain.REQUEST

SELECT m.id, m.request, l.request_text
FROM tblMain AS m
    INNER JOIN tblLookup AS l
    ON Nz(m.request,"U") = l.request;

Если вы хотите оставить tblLookup REQUEST как Null для REQUEST_TEXT = Неизвестно, я полагаю, вы можете использовать Nz с обеих сторон выражения JOIN. Однако вся эта идея присоединения к Nulls заставляет меня съеживаться. Вместо этого я бы исправил таблицы.

...