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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2014, 10:15   #1
nastena_r_v
Пользователь
 
Регистрация: 22.05.2012
Сообщений: 30
Вопрос Ограничения на ввод времени в поле

Всем здравствуйте, подскажите, как можно реализовать ограничение на ввод данных в поле. Т.е. у меня есть поле "prihod", типа float, нужно чтоб вводились данные с 00,00 до 23,59, не больше, чтоб часы были до 23 и минуты до 59. База Access, компоненты для подключения базы - ADO, для вывода полей используется ADOQuery, т.е. возможны запросы. Для отображения базы используется DBGrid.
nastena_r_v вне форума Ответить с цитированием
Старый 29.05.2014, 10:29   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

зачем вы float выставили, если туда время хотите совать? где логика?
eval вне форума Ответить с цитированием
Старый 30.05.2014, 11:16   #3
nastena_r_v
Пользователь
 
Регистрация: 22.05.2012
Сообщений: 30
По умолчанию

Логика в том, что потом данное поле будет учавствовать в процедуре вычисляемого поля, Вам нужно все объяснение? И время вводится не через ":", а через ",". Что очень удобно для данного типа. Иначе с типом "время", Вы не сможете делать никакие вычисляемые процедуры.
Так может у Вас есть какие-нибудь предложения????
nastena_r_v вне форума Ответить с цитированием
Старый 30.05.2014, 11:25   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,542
По умолчанию

Цитата:
данное поле будет учавствовать в процедуре вычисляемого поля, Вам нужно все объяснение?
Да желательно, иначе предвижу проблему.
float (11,30 + 2,30) /2 =7,20
time (11:30 + 2:30) /2 =7:00
P.S. большинство СУБД имеет вычислительный аппарат (функции!) для операций со временем.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 30.05.2014 в 11:34.
evg_m вне форума Ответить с цитированием
Старый 30.05.2014, 11:27   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Откуда сведения, что с полями типа дата-время нельзя вычислений делать? Это будет лучше и надежней, чем ваше псевдо-время. По вопросу - не чего его в гриде вводить, берите время из DateTimePicker, и чего хошь с ним делайте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.05.2014, 11:34   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Так может у Вас есть какие-нибудь предложения????
да, перестаньте заниматься непойми чем, а лучше почитайте что к чему, тогда такие вопросы отпадут сами собой

Цитата:
float (11,30 + 2,30) /2 =7,20
time (11:30 + 2:30) /2 =7:00
а заставят людей в уме столбиком переводить минуты и секунды в доли часа
правда люди будут долго ругаться, потеряется точность, ну так это все не важно, у нас мега идея

Последний раз редактировалось Stilet; 30.05.2014 в 12:24.
eval вне форума Ответить с цитированием
Старый 30.05.2014, 12:18   #7
nastena_r_v
Пользователь
 
Регистрация: 22.05.2012
Сообщений: 30
По умолчанию

Если я поменяю тип поля на время, то проблемы с вычислением не будет?
Т.Е грубо у меня такое вычисление с полями:
Всего := (Уход На Обед -Приход) + (Уход - Приход С обеда)
И если поменяю тип с float на time, то ошибки в этом вычислении не будет?
nastena_r_v вне форума Ответить с цитированием
Старый 30.05.2014, 12:21   #8
superedward
Форумчанин
 
Аватар для superedward
 
Регистрация: 27.11.2012
Сообщений: 190
По умолчанию

Интересная идея для юзабилити )))
Использовать в базе однозначно тип поля ДатаВремя
После ввода данных, подменять запятые на стандартный DateSeparator, т.е. 11,00 -> 11:00 перед занесением данных в базу
superedward вне форума Ответить с цитированием
Старый 30.05.2014, 12:37   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

superedward, че за ахинея?

nastena_r_v, вот пример расчета отработанных часов на переменных, на полях таблицы почти также. Только учитывать, что не ходил на обед, или вообще домой не ушел (а вдруг), или пришел 30-05-2014 23:00:00, а ушел 31-05-2014 09:00:00
Код:
procedure TForm1.Button4Click(Sender: TObject);
var t1,t2,t3,t4: TDateTime;
begin
  t1:=EncodeTime(7,55,0,0);  //пришел на работу 07:55
  t2:=EncodeTime(12,10,0,0); //ушел на обед 12:10
  t3:=EncodeTime(13,15,0,0); //пришел с обеда 13:15
  t4:=EncodeTime(17,20,0,0); //ушел с работы 17:20
  Label1.Caption:=Format('Всего отработал %s',[FormatDateTime('hh:nn',(t2-t1)+(t4-t3))]);
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.05.2014, 12:38   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

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

Цитата:
Format('Всего отработал %s',[FormatDateTime
хватит и одной таблетки
eval вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ограничения на ввод,Паскаль lialia Паскаль, Turbo Pascal, PascalABC.NET 4 11.03.2013 20:52
Ограничения на ввод-вывод данных Olga Sharik Помощь студентам 0 02.05.2012 11:49
упрощенный ввод времени bize Microsoft Office Excel 4 23.01.2012 00:31
SQL. Создание ограничения на ввод werser SQL, базы данных 3 10.12.2010 21:47
Ввод времени с точкой hh.mm СергейНиколаев Microsoft Office Excel 5 15.10.2008 23:08