Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2011, 11:34   #1
ketrik5
 
Регистрация: 26.11.2009
Сообщений: 9
По умолчанию отображение даты последних изменении

привет всем!, подскажите пожалуйста как прописать код,чтобы на форме отображалась дата последних изменений данных.
И еще вопрос? как задать условие, чтобы из текущей даты вычесть дату рождения ребенка и при наступлении 18 лет, автоматически перебрасывался он в другую таблицу. заранее всем благодарна
ketrik5 вне форума Ответить с цитированием
Старый 09.08.2011, 15:01   #2
satka
Форумчанин
 
Регистрация: 17.07.2011
Сообщений: 145
По умолчанию

1.Думается надо создать поле типа DateUpdate и при внесении изменений
DateUpdate = Now()
2. Два запроса
- первый добавление записей в таблицу взрослых; условие Year(Now()) - 'поле где указан год рождения' >= 18
- второй на удаление с таким же условием
Запускать оба запроса при загрузке базы например, только не перепутать сначала первый потом второй
satka вне форума Ответить с цитированием
Старый 09.08.2011, 15:46   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

по первому вопросу согласен.

а по второму - нет! Предложенный вариант не годится!
я Вам настоятельно для решения второго вопроса рекомендую сходить в тему:
Подсчет возраста
там в пост #3 есть готовый запрос для решения задачи.


ну и последнее.
Цитата:
автоматически перебрасывался он в другую таблицу
Это скорее всего говорит о плохой (неправильной организации данных!!)
не должны данные перебрасываться из одной таблицы в другую по мере изменения их статуса.. списки нужно получать запросом на любой заданный срез времени. и с любым статусом.. Подумайте, что произойдёт, если дату на компьютере переставят на 10 лет вперёд и запустят Вашу программу... Разгребёте после этого, кто куда неправильно перенёсся?!!
но, впрочем, поступайте так, как считаете нужным - это уже воля Ваша, как разработчика...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.08.2011, 15:55   #4
satka
Форумчанин
 
Регистрация: 17.07.2011
Сообщений: 145
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а по второму - нет! Предложенный вариант не годится!
согласен что вариант не слишком изящный, так что был не прав
насчёт организации полностью согласен с Serge_Bliznykov, отделить взрослых от детей довольно просто, но что если "детская" таблица имеет гораздо меньше полей, то есть обединение в одну таблицу взрослых и детей, должно увеличить размер таблицы, и соответственно базы, думается мне что пустые поля всё же занимают определённое место на диске
и всё же имея год рождения нет так сложно "перекинуть" из одной таблицы в другую, даже если системная дата резко изменится.

Последний раз редактировалось satka; 10.08.2011 в 02:29.
satka вне форума Ответить с цитированием
Старый 09.08.2011, 18:07   #5
ketrik5
 
Регистрация: 26.11.2009
Сообщений: 9
По умолчанию

[quote=satka] Думается надо создать поле типа DateUpdate и при внесении изменений
DateUpdate = Now()
по первому вопросу не поняла.ну создала я поле,вывела его на форму,а как прописать чтоб прогр понимала,что при внесение изменения,на форме отображалась дата последнего редактирования данных.

Последний раз редактировалось ketrik5; 09.08.2011 в 18:14.
ketrik5 вне форума Ответить с цитированием
Старый 09.08.2011, 18:12   #6
ketrik5
 
Регистрация: 26.11.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от satka Посмотреть сообщение
1.Думается надо создать поле типа DateUpdate и при внесении изменений
DateUpdate = Now()
по первому вопросу не поняла.ну создала я поле,вывела его на форму,а как прописать чтоб прогр понимала,что при внесение изменения,на форме отображалась дата последнего редактирования данных.
ketrik5 вне форума Ответить с цитированием
Старый 09.08.2011, 23:46   #7
satka
Форумчанин
 
Регистрация: 17.07.2011
Сообщений: 145
По умолчанию

Цитата:
Сообщение от ketrik5 Посмотреть сообщение
по первому вопросу не поняла.ну создала я поле,вывела его на форму,а как прописать чтоб прогр понимала,что при внесение изменения,на форме отображалась дата последнего редактирования данных.
Когда открывается форма для внесения изменений поле просто можно отображать, внесли изменения —> закрываете форму или просто кнопка сохранить, на событие пишите
If Me.Dirty then DateUpdate = Now()
и поле обновится, даже не занаю как лучше объяснить, давайте базу поправлю
satka вне форума Ответить с цитированием
Старый 10.08.2011, 09:24   #8
ketrik5
 
Регистрация: 26.11.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от satka Посмотреть сообщение
Когда открывается форма для внесения изменений поле просто можно отображать, внесли изменения —> закрываете форму или просто кнопка сохранить, на событие пишите
If Me.Dirty then DateUpdate = Now()
и поле обновится, даже не занаю как лучше объяснить, давайте базу поправлю
добавила всё как вы написали, и что то не идет, опять наверно я не так что то сделала. вот выкладываю базу. Сначала заходим на форму Общие сведения, 2 раза нажимаем на любую фамилию, появляется форма Подробно о семье, и в самом внизу добавила поле ну и на него событие, может что то не так сделала.
Вложения
Тип файла: rar 1 (1).rar (1.95 Мб, 45 просмотров)
ketrik5 вне форума Ответить с цитированием
Старый 10.08.2011, 13:33   #9
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Если я всё правильно понял и данные вносятся в таблицу Famili то лучший вариант это добавить в данную таблицу поле с датой последих изменений по каждой семье (+ я бы добавил дату добавления семьи в справочник).... и просто по каждому обновлению обновлять значение даты
gluk_fm вне форума Ответить с цитированием
Старый 10.08.2011, 15:48   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
форма Подробно о семье, и в самом внизу добавила поле ну и на него событие,
1) Вам нужно добавить не только поле на форму, но и поле в ту таблицу, где Вы хотите отслеживать изменения!!
Например, в данном случае (если я правильно понял), нужно добавить в таблицу family поле DateUpdate
но и этого ещё мало.
Поле на форме не должно быть редактируемым! Надо обязательно ЗАКРЫТЬ ввод данных в него!
А данные должны записываться в событиях изменения...
я абсолютное не знаю формы MS Access и их события... но я бы начал изучать/искать/пробовать с событий формы "Изменение данных" или "Изменение набора данных" (см. рисунок)
и в этом событии и надо присваивать Family.DateUpdate = Now()

по второму вопрос (с переносом записей я ещё разбираюсь).
Но сразу не могу не отметить БОЛЬШОЙ просчёт в организации таблицы Children!
Зачем Вы храните (и вводите) день, месяц и год рождения - как отдельные числовые поля?!
Ведь Вам туда легко забьют не только 29.02.2011 но и 35.47.2012!
Есть же тип DateTime (в русском MS Access он называется "Дата/время") - вот его и надо использовать для хранения даты рождения ребёнка!!!



p.s. А Вы всё это самостоятельно разработали?!!

Последний раз редактировалось Serge_Bliznykov; 10.08.2011 в 15:53.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отображение даты в DateTimePicker Desha Компоненты Delphi 3 17.10.2010 16:25
Отображение даты Айгуля Общие вопросы Delphi 2 11.06.2010 22:38
Отображение даты Айгуля Общие вопросы Delphi 2 11.06.2010 18:24
FastReport отображение даты в длинном формате! R11 Помощь студентам 5 26.03.2010 23:37
Автоматизация заполнения даты и зависимость ячейки времени к ячейке даты. Каравай Microsoft Office Excel 14 11.03.2010 18:11