Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » [SQL][MS Access] От диапазонов к конкретным датам

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Hans Hammer

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возникла задача, прошу помощи клуба.
В MS Access 2010 крутится база, которая оперирует расписанием транспорта. Та печка, от которой танцуют, называется SSIM -- есть такой формат для расписаний. Файл SSIM дешифруется в таблицу, ее особенностью (и формата тоже) является указание диапазона дат и дней недели для каждого рейса. Например, так выглядит запись о рейсе SU320 Москва - Мале:
[Flight] [EffDate] [DisDate] [Freq] [DeptArp] [ArvlArp]    
320 25.06.2014 25.10.2014 ..3..6. SVO MLE

 
Функция соответствия дня недели строке в поле [Freq] написана, с этим проблем нет. Задача же состоит в том, чтобы "распаковать" диапазоны и вместо них получить список рейсов по конкретным датам в заданный промежуток времени. Например, если задать начальную и конечную даты Date1=#01.09.2014# и Date2=#15.09.2014#, то ожидаемый результат должен быть таким:
[Flight] [FDate] [DeptArp] [ArvlArp]    
320 03.09.2014 SVO MLE    
320 06.09.2014 SVO MLE    
320 10.09.2014 SVO MLE    
320 13.09.2014 SVO MLE

 
Какие идеи? Как написать такой запрос?

Всего записей: 27 | Зарегистр. 17-10-2001 | Отправлено: 23:06 18-10-2014
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Самым простым и общим подходом будет написание функции, которая возвращает Recordset, а уже внутри её логику можно реализовать процедурным подходом - перебором всех дат из указанного интервала и еще одной маленькой функцией проверки на наличие рейса по данной дате - условия для неё уже пишутся легко.

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 13:07 02-12-2014 | Исправлено: landy, 13:07 02-12-2014
rrromano



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Получить последовательные дни и соединить джоином с датами дней недели.

Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 18:51 01-01-2015
Ded0k



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hans Hammer
Создать отдельную таблицу-справочник, где хранить все дни по дням недели за интересующий интервал (например за текущий год), по необходимости его пополнять, генерируя новые значения (раз в год добавлять значения на следующий год).
Далее написать функцию, которая распарсит значение "..3..6." на две строки и связать их с созданной таблицей-справочником, на которую уже наложить ваше условие WHERE Date between (#01.09.2014# and #15.09.2014#)
 
Добавлено:
Для генерации таблицы-справочника можно использовать функцию Weekday()

Всего записей: 87 | Зарегистр. 02-11-2004 | Отправлено: 14:54 10-04-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » [SQL][MS Access] От диапазонов к конкретным датам


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru