|
|
|
| Имеется таблица 5 полей
1 дата начала события
2 дата окончания события
3 событие
4 место события
надо вывести на экран таблицу,
где на одном месте события(4) (критерий отбора) -
произошли события в одно и тоже время(1)-(2).
То есть периоды свершения событий перекрыли друг друга. | |
|
| |
|
|
|
| А нет ли таблицы в базе, связанной с таблицей Событий, где детали события расписаны по дням? | |
|
| |
|
|
|
| по дням нет
есть только такая, хотя......
помните вопрос по датам....
можно создать , но время на это уйдёт немерянно
потому как общий интервал - как минимуи год ~ 365 дней | |
|
| |
|
|
|
| сердцем чую надо пару битвин ов, а вот практически как это реализовать......... вопрос не решается............ | |
|
| |
|
|
|
| может, если обрисовать задачу немного иначе - будет решение
Надо проверять лишь вновь вводимую запись со всеми имеющимися в таблице и если есть наложение - тода сказать юзеру - это извините не пройдёт Вам даром!
счас у меня там минимум 4 ункции, рекодсеты, даты значения - ногу сломит.
В результате выводиться - всё чё нужно конечно, но это ...... ..... | |
|
| |
|
|
|
| Так попроще, тогда можно обойтись циклом дат от Начала до Конца новой записи с проверкой на вхождение в интервал дат старых записей. | |
|
| |
|
|
|
| На BeforeUpdate формы обратиться к таблице (например - DLookup) с условием отбора:
DateStart <= DateEndNew AND Table1.DateEnd >= DateStartNew
Посмотреть все пересекающиеся записи можно так:
SELECT *
FROM Table1 INNER JOIN Table1 AS Table1_1 ON (Table1.DateStart <= Table1_1.DateEnd AND Table1.DateEnd >= Table1_1.DateStart)
WHERE Table1.ID <> Table1_1.ID | |
|
| |
|
|
|
| СПАСИБО!!!
попробую.....
или погожу........... | |
|
| |
|
|
|
| чё та Table1.DateStart <= Table1_1.DateEnd
"не могу себе представить как можно представить это в конструкторе " - говорит access | |
|
| |
|
|
|
| Такую связь между таблицами можно нарисовать только в режиме SQL. | |
|
| |
|
|
|
| А я, наивный, - хотел в режиме конструктора сварганить
| |
|
| |
|
|
|
| я попросил :
DoCmd.RunSQL "SELECT * FROM Table1 INNER JOIN Table1 AS Table1_1 ON (Table1.Date_First_Air <= Table1_1.Date_Last_Air AND Table1.Date_Last_Air >= Table1_1.Date_First_Air) WHERE Table1.ID <> Table1_1.ID"
|
А в ответ:
Для макрокоманды ЗапускЗапроса SQL требуется аргумент, состоящий из инструкции SQL
Эт наверное шутка Access .(Фссуыы) | |
|
| |
|
|
|
| У вас запрос на выборку, а DoCmd.RunSQL выполняет запросы на изменение.
Нужно в конструкторе нового запроса перейти в режим "SQL", вставить выражение, выполнить (что бы проверить) и сохранить.
Ну или на базе этого выражения открывать Recordset. | |
|
| |
|
|
|
| Да спасибо, я догадался........ | |
|
| |
|
|
|
| Красота!
Спасибо Анатолию(Киев)! | |
|
| |
|
|
|
| Удалено.
Если неправ, более опытные форумчане меня поправят, надеюсь. | |
|
| |