![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ввод
b_baranov © (2002-11-27 22:02:00)В приложении есть необходимость регистрировать много прошедших событий. Иногда известна полная дата события, иногда - месяц и год, иногда - только год. В последующем данные планируется экспортировать в документы: напр. "В январе 1990 года ..., в 1995 году ..., 12.11.2000 - ..." Какие из визуальных инструментов посоветуете использовать? Если поля ввода, то нужно организовывать довольно сложный контроль вводимых данных, если "календарь" то не отразить отсутствие данных дне или месяце. Если кто-нибудь сталкивался с подобной проблемой, поделитесь пожалуйста опытом.
Andrey007 (2002-11-28 10:15:00) [1]>Похоже решение в том что нужно завести еще одно поле и фиксировать в нем факт занесения "даты". И вводить ограничения по этому полю.
Если я правильно понял суть проблемы, то при регистрации записи в таблице нужно отдельно заносить информацию о годе, отдельно о месяце, и отдельно о дне. Т.е. надо сделать 3 поля целого типа (можно и вещественного). Ноль (или Null) означает отсутствие данных.
b_baranov (2002-11-27 23:02:00) [2]Я имею в виду, что при регистрации записи о событии должна одновременно присутствовать информация о событии и времени его свершения, в противном случае запись не может быть занесена, т.к. без одного из составляющих ее в последующем не оценить...
Похоже решение в том что нужно завести еще одно поле и фиксировать в нем факт занесения "даты". И вводить ограничения по этому полю.
Спасибо за помощь
Jeer (2002-11-27 22:49:00) [3]Так это вообще вне алгебры Кодда:))
Да и зачем все усложнять...
В чем проблема-то ?
Скажем есть Combobox с месяцами
Но первым идет знак вопроса ?
Далее Янв...Дек.
В таблицу заносишь индекс Комба.
При выборке указываешь <>0 или наоборот =0
смотря что надо.
Например, легко выбрать данные за нужный квартал, если при занесении даты, вычисляется и заноситься номер квартала.
Впрочем, многое определяется возможностями используемой СУБД (диалектом SQL)
b_baranov (2002-11-27 22:41:00) [4]Для визуализации данных это понятно как сделать, а вот как описать в ограничениях ссылочной целостности пока не представляю (IB6)
Jeer (2002-11-27 22:36:00) [5]Думаю, что не стоит тратить время на спец. компонент, а сделать на основе фреймов
Jeer (2002-11-27 22:35:00) [6]Ввести специальные значения для признака отсутствия содержательности данного поля - ноль, например.
Если присутствует хотя бы один не ноль в дне, месяце, годе значит не дата, иначе - дата значима.
b_baranov (2002-11-27 22:32:00) [7]А как тогда описать целостность базы? Ведь дата должна обязательно присутствовать
День Месяц Год Дата Событие
Кого бы объявить Not Null кроме События?
b_baranov (2002-11-27 22:26:00) [8]Т.е. предлагается иметь возможность ввести дату или ее составляющие по выбору и фиксировать в зависимости от того, что есть? Наверное нормально, тогда для удобства ввода (дат много и в разных Формах - неск. десятков) наверное нужно сделать какой-ннибудь унифицированный визуальный элемент... Или это сложно и не стоит тратить время, а воспользоваться стандартными?
Jeer (2002-11-27 22:17:00) [9]Так а кто мешает отделные контролы ввести для года, месяца, дня и даты (или еще чего)
b_baranov (2002-11-27 22:16:00) [10]Не подскажете хоть приблизительно, где искать?
Jeer (2002-11-27 22:12:00) [11]Да, и в некоторых библ-ках, есть комбинированный календарь именного такого рода (но отдельные контролы)
То ли Soho то ли..
Jeer (2002-11-27 22:10:00) [12]Нда, чего только в говолю не полезет.
Один из методов мной применяемых.
В отдельной таблице регистрируется
дата в формате DATE
год
месяц
неделя
день
рабочий день
воскресный
праздник
В документах - ссылка на id этой таблицы
Тебе придется похоже использовать столько компонентов и таких, чтобы позволить выбрать нужные варианты.
В качестве признака неизвестности - ноль например, а отсчет значимых с 1 вести.