Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ввод


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 вести.


Наверх

Титульная страница Поиск, карта сайта Написать письмо