Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запрос: замена кодов на названия (Access 2000)
 
 автор: Katrin   (08.09.2009 в 13:44)   личное сообщение
 
 

Привет!
Есть таблица, в которой требуется заменить коды регионов РФ на их названия из другой таблички.
Таблицы связаны по полю "КодРегиона".
Добавляю в конструкторе запроса новый столбец:

Регион: IIf(IsNull([2008.КодРегиона]);"неизвестно";[Регионы.ТерриторияРФ])

(т.е. добавить в таблицу "2008" столбец "Регион"; если поле КодРегиона незаполнено, в "Регионе" указать "неизвестно", в противном случае заменить код на название региона - из таблицы "Регионы")

В итоге коды правильно подставляются, но Аксес игнорирует записи с незаполненными кодами, т.е. не подставляет "неизвестно" в пустые поля и не выдает их

Где я туплю?

  Ответить  
 
 автор: osmor   (08.09.2009 в 14:03)   личное сообщение
 
 

а так?
IIf(nz([2008.КодРегиона];"")="";"неизвестно";[Регионы.ТерриторияРФ])

  Ответить  
 
 автор: Katrin   (08.09.2009 в 14:26)   личное сообщение
 
 

Не помогло, к сожалению... "Пустышки" все равно не отображает...

  Ответить  
 
 автор: osmor   (08.09.2009 в 15:19)   личное сообщение
 
 

текст запроса покажите

  Ответить  
 
 автор: Katrin   (08.09.2009 в 15:39)   личное сообщение
 
 

SELECT ...
FROM Регионы INNER JOIN (2008_de INNER JOIN 2008_do ON [2008_de].ND = [2008_do].ND) ON Регионы.КодРегиона = [2008_de].КодРегиона
WHERE IIf(IsNull([2008_de.КодРегиона]),"неизвестно",[Регионы.Территория РФ]);

Это вариант не с добавлением нового стобца, а просто с заменой кодов.

(Cвязи такие нелепые, т.к. работать приходится с объемными, присоединенными к базе DBF-таблицами - 2008_de и 2008_do...)

  Ответить  
 
 автор: osmor   (08.09.2009 в 15:47)   личное сообщение
 
 

почему это в секции Where ?
Это должно быть в select
select ,,,,,,IIf(IsNull([2008_de.КодРегиона]),"неизвестно",[Регионы.Территория РФ]) from ......

или я чего-то не понимаю?

  Ответить  
 
 автор: Katrin   (08.09.2009 в 16:15)   личное сообщение
 
 

Прошу прощения... Запутала вас - да, это в select.
Просто через where я тоже пыталась достигнуть результата...

SELECT ..., IIf(IsNull([2008_de.КодРегиона]),"неизвестно",[Регионы.ТерриторияРФ]) AS Регион, ...

FROM Регионы INNER JOIN (2008_de INNER JOIN 2008_do ON [2008_de].ND = [2008_do].ND) ON Регионы.КодРегиона = [2008_de].КодРегиона

Но погоды это не меняет

  Ответить  
 
 автор: Анатолий (Киев)   (08.09.2009 в 15:59)   личное сообщение
 
 

Вместо INNER JOIN должно быть LEFT JOIN.

  Ответить  
 
 автор: Katrin   (08.09.2009 в 16:17)   личное сообщение
 
 

Анатолий, сейчас попробую!

  Ответить  
 
 автор: Katrin   (08.09.2009 в 16:28)   личное сообщение
 
 

Неа, все то же
Может, это из-за того, что обрабатываются присоединенные дбф-ки... Загадка!

  Ответить  
 
 автор: osmor   (08.09.2009 в 16:42)   личное сообщение
 
 

попробуйте и с leftjoin и с nz(... вместо isnull

  Ответить  
 
 автор: Анатолий (Киев)   (08.09.2009 в 17:32)   личное сообщение
 
 

Покажите последний вариант неработающего запроса с LEFT JOIN-ами.

  Ответить  
 
 автор: Katrin   (16.09.2009 в 13:30)   личное сообщение
 
 

Все нормально работает, проблема оказалась в несоответствии некоторых кодов...
Поскольку таблицы очень большие, не отследила все в начале работы.

А совет с LEFT JOIN-ами помог в других запросах! Функцию Nz также взяла на вооружение. Огромное спасибо!!!

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList