1 / 1 / 0
Регистрация: 07.10.2015
Сообщений: 30
1

Несколько дат в одном поле

07.10.2015, 10:19. Показов 3171. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, искал ответ на свой вопрос не один день так и не нашел.

Ситуация: есть простая база которая отслеживает сроки исполнения мероприятия, грубо: таблица с 3-мя полями:
-название мероприятия,
-контрольный срок и
-дата снятия с контроля

база по запросу выдает просроченные мероприятия, т.е. те у которых "контрольный срок" меньше текущей даты и нет "даты снятия" с контроля

НО! очень часто мероприятие возвращается на доработку (иногда множество раз), тогда контрольный срок меняется.

Вопрос: как сделать, что бы в поле контр. срок хранилось новый контрольный срок и все предыдущие, с полем "дата снятия" тоже самое. Это нужно, что бы отслеживать когда и сколько раз мероприятие возвращалось на доработку.

Тут же возникает еще вопрос: в таком случае выборка просроченных мероприятий по принципу контр. срок меньше текущей даты и дата снятия равна нулю уже работать не будет, поэтому нужна операция которая будет сравнить именно последние даты, и нужна функция которая будет считать количество дат и сравнивать их.

Пробовал MS acceess 2007, там в одном поле можно хранить несколько значений, но только текстовые и из списка, что мне не подходит.

Всем откликнувшимся большое спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2015, 10:19
Ответы с готовыми решениями:

Форма.Несколько записей в одном поле
Дана форма Фильм. Есть поле Жанр,не могу понять,как,вместо одной записи выбирать сразу несколько....

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

Хранение в одном поле нескольких дат, и работа с ними
Здравствуйте. Допустим у меня БД библиотеки. И я хочу хранить все данные по книге, когда её брали...

Несколько значений в одном поле
Подскажите, как сделать, чтобы в 1 поле можно было указывать несколько значений. Например есть...

11
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
07.10.2015, 10:30 2
Сделайте подчиненную мероприятиям таблицу с датами и их типом (контрольная, снятие, ...)
1
Эксперт MS Access
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
07.10.2015, 10:38 3
basil_85,
1. думаю, что можно поступить так: если подошел контрольный срок, то поле Дата снятия с контроля не заполняется и делается новая запись для данного мероприятия в котором в поле контрольный срок вводится дата нового срока.
Поле Дата снятия с контроля продолжает оставаться пустым. Если будет необходимость еще раз перенести срок, то делаете третью запись. При завершении выполнения мероприятия во все три записи в поле Дата снятия с контроля ставите одну и туже дату. Если когда, то Вам надо будет просмотреть историю по данному мероприятию, то фильтр настраиваете по полю название мероприятия и он вам покажет все три записи со всеми продлениями.
2. по второму вопросу, что-то не уловил суть
Цитата Сообщение от basil_85 Посмотреть сообщение
выборка просроченных мероприятий по принципу контр. срок меньше текущей даты и дата снятия равна нулю уже работать не будет
то есть запись блокируется или не выбирается, или не показывается?
0
Модератор
Эксперт MS Access
11957 / 4825 / 779
Регистрация: 07.08.2010
Сообщений: 14,132
Записей в блоге: 4
07.10.2015, 11:10 4
мне кажется, что удобнее иметь 2 таблицы(не считая справочников)

таб1 --мероприятия
-ид1
-название
-назначение
-инициатор
-дата начала
-дата окончания по плану
-дата снятия с контроля
-фио снявшего

таб2--этапы/стадии работы
-ид2
-ид1
-дата начала
-название стадии
-ответственный исполнитель
-дата сдачи
0
1 / 1 / 0
Регистрация: 07.10.2015
Сообщений: 30
07.10.2015, 13:58  [ТС] 5
Сделайте подчиненную мероприятиям таблицу с датами и их типом (контрольная, снятие, ...)
я безусловно думал про вторую таблицу с датами, но если сделать так, то в каждом мероприятии будут все даты из таблицы, а не только "свои", и как посчитать сколько конкретное мероприятие возвращалось на доработку и когда? Можно ли сделать так, что бы для каждой записи автоматически создавалась своя таблица с датами?

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

Добавлено через 5 минут
2. по второму вопросу, что-то не уловил суть
если поле "дата снятия" не будет пустым, то запрос по просроченным мероприятиям работать не будет.
0
8859 / 5904 / 585
Регистрация: 27.03.2013
Сообщений: 19,567
07.10.2015, 14:01 6
Цитата Сообщение от basil_85 Посмотреть сообщение
...в базе за год делается тысячи записей и дублировать каждую запись не совсем удобно и у каждой записи свой уникальный номер...
Если сделаете подчиненную таблицу, то по связи будет присваиваться уникальный код для каждого срока именно этого мероприятия, по нему в запросе группируется и выбирается только даты этого, а не всех мероприятий, о чем вам писалось уже выше, а вы упрямо стоите на своем.
0
1 / 1 / 0
Регистрация: 07.10.2015
Сообщений: 30
07.10.2015, 14:04  [ТС] 7
Цитата Сообщение от Вячеслав Я Посмотреть сообщение
о поле Дата снятия с контроля не заполняется и
Да, после исполнения мероприятия ставится отметка о выполнении и направляется в контролирующий орган и уже оттуда мероприятие приходит либо утвержденным либо на доработку, так, что оставить данное поле пустым нельзя.
0
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
07.10.2015, 14:21 8
Цитата Сообщение от basil_85 Посмотреть сообщение
я безусловно думал про вторую таблицу с датами, но если сделать так, то в каждом мероприятии будут все даты из таблицы, а не только "свои"
Это еще почему? В подчиненной таблице указывается код мероприятия и по нему выбираются записи дат только этого мероприятия. Поэтому и таблица называется подчиненной.
1
451 / 239 / 14
Регистрация: 29.10.2014
Сообщений: 1,009
11.10.2015, 00:02 9
Напрашивается сборка:

Добавлено через 6 минут
Забыл,где кнопка. Короче,4 таблицы:Мероприятия,Даты,ТипДаты и сборка Итоги
0
1 / 1 / 0
Регистрация: 07.10.2015
Сообщений: 30
16.10.2015, 12:55  [ТС] 10
Спасибо всем, просто я не знал какие поля главной и подчиненной таблиц связать, разобрался, помогло. Теперь возник вопрос как сделать запрос по двум таблицам? (раньше я такого не делал)): что бы выдал просроченные мероприятия, т.е. те у которых последняя [дата1] меньше текущей даты и [дата2] напротив пустая, в моем примере должен выдать 1м, 2м, 4м, и сколько раз мероприятие возвращалось на доработку.
Оч. нужно, это не школьное задание, а реальная задача в организации.
Вложения
Тип файла: rar db3.rar (27.3 Кб, 7 просмотров)
0
Эксперт MS Access
26805 / 14484 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
17.10.2015, 01:38 11
Лучший ответ Сообщение было отмечено basil_85 как решение

Решение

Цитата Сообщение от basil_85 Посмотреть сообщение
что бы выдал просроченные мероприятия, т.е. те у которых последняя [дата1] меньше текущей даты и [дата2] напротив пустая
SQL-выражение запроса
SQL
1
2
3
4
SELECT Таблица1.м, Таблица2.дата1, Таблица2.дата2
FROM Таблица1 INNER JOIN Таблица2 ON Таблица1.[код м] = Таблица2.[код м]
WHERE Таблица2.дата1<DATE() AND Таблица2.дата2 IS NULL
ORDER BY Таблица1.м
Цитата Сообщение от basil_85 Посмотреть сообщение
сколько раз мероприятие возвращалось на доработку
В запросе выданы только те мероприятия, которые были в доработке. Число возвратов на единицу меньше числа записей по этому мероприятию
SQL
1
2
3
4
SELECT Таблица1.м, COUNT(*)-1 AS [ВозвратыНаДоработку]
FROM Таблица1 INNER JOIN Таблица2 ON Таблица1.[код м] = Таблица2.[код м]
GROUP BY Таблица1.м
HAVING COUNT(*)>1
1
1 / 1 / 0
Регистрация: 07.10.2015
Сообщений: 30
19.10.2015, 06:22  [ТС] 12
mobile, вы просто волшебник!)) Работает, только простите за тупизну((, я то выложил пример, а база сложнее и SQL коды для меня абра-кадабра, можно ли сделать такие запросы в конструкторе запросов? Если же нельзя скиньте плиз ссылку на простой и понятный учебник по этим самым кодам.
0
19.10.2015, 06:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2015, 06:22
Помогаю со студенческими работами здесь

Несколько ссылок в одном поле
Здравствуйте! Есть бд на mysql. Нужно вывести данные в виде таблицы на странице. В базе есть ссылки...

Несколько значений в одном поле
Имеется таблица в которой в одном из полей содержится сразу несколько значений (ключи полей от...

Datagridview Несколько значений в одном поле
Всем привет.Помогите решить следующую задачу.В Datagridview одно из полей типа...

Несколько полей Table2 в одном поле Table1
Возможно ли сделать так, чтобы в одно поле таблицы1 содержало несколько полей таблицы2? и как это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru