Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
3 / 3 / 1
Регистрация: 02.04.2013
Сообщений: 115
MS Access

Delphi/access. Работа с datetimepicker, подсчет времени

02.07.2014, 21:30. Показов 1582. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
1. В программе производится расчет времени: datetimepicker2-datetimepicker1=datetimepicker3;
Подробнее: 13:52-12:34=01:18;
Это число записывается в базу access из datetimepicker.
В базе, в поле стоит формат дата/время, маска ввода 00:00;;_ . "Краткий формат времени".
В ADOQuery в дисплейформат: HH:mm и эдитмаск: !90:00;1;_
Но в итоге в базе записывается не только время, но и дата, к примеру: 10.06.2014 01:18, когда нужно только 01:18 потому что в итоге это время будет суммироваться с другим числом.
Как можно решить проблему?
2. При суммировании времени, допустим 23:00+23:00+23:00+23:00+23:00 должно получится 115:00, это число собираюсь выводить допустим в MaskEdit. Но выводит число не полностью: 15:00.
С вариантом 23:00+23:00+23:00+23:00 получается правильно: 92:00
В Edit выводит верно при условии, если в поле сохраняется чисто число "01:18", а не "10.06.2014 01:18"
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.07.2014, 21:30
Ответы с готовыми решениями:

Смена даты в datetimepicker при смене времени в другом поле datetimepicker
есть два поля date time picker, одно для изменения времени второе для изменения даты... нужно при попадании часов до 00 ночи, чтобы...

Работа с jasmine подсчет времени выполнения теста
Народ помогите посчитать время выполнения теста Есть например такой тест , как посчитать время его выполнения? ...

Подсчет времени выполнения процесса и работа с ProgressBar
Как подсчитать с помощью таймера, за какое время выполнилась процедура и привязать это все еще к ProgrssBar?

7
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
02.07.2014, 21:48
Неважно какой формат установлен в Аксессе - эта установка действует внутри среды Аксесса и к Дельфи никакого отношения не имеет.
Дата и время в базах данных (БД Аксесса не исключение), как правило храняться одним вещественным числом и хотите вы или нет, но дата будет присутствовать даже если она равна нулю.

Выход в ситуации, когда нужно хранить только время, записывать значения времени в текстовом формате.
В виде строки, например, "0900", "0118".
При этом использование дататаймпикеров не отменяется, а запись нужно осуществлять SQL запросами,
где можно преобразовать время в строковое представление.
Такое хранение времени никакого криминала не несет, а только облегчает работу со значениями времени.
Да, нужно будет для расчетов преобразовывать строку, содержащую время в тип TDataTime, но это тоже не сложно.
0
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
03.07.2014, 02:18
Цитата Сообщение от ul_mralex Посмотреть сообщение
Но в итоге в базе записывается не только время, но и дата, к примеру: 10.06.2014 01:18, когда нужно только 01:18
Значит неправильно записываешь.
Цитата Сообщение от Скандербег Посмотреть сообщение
Выход в ситуации, когда нужно хранить только время, записывать значения времени в текстовом формате.
Ну почему? ТС эти записи в БД нужны не столько сами по себе, сколько для арифметических расчётов. Так почему бы ему и не записывать время с нулевой датой?
0
3 / 3 / 1
Регистрация: 02.04.2013
Сообщений: 115
03.07.2014, 10:29  [ТС]
Вот вот, нужна нулевая дата желательно.
В базе в столбцах отображается естественно только время, но когда начинаешь редактировать, сразу появляется дата.
northener, Как же правильно тогда записывать?

Добавлено через 1 час 9 минут
Сам подсчет времени.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TPVP_V_DEPO.itogClick(Sender: TObject);
var a,b,e,f,g,a1,b1,e1,f1,g1,r: TDateTime;
begin
a:=zah.time;
a1:=zah_ispr.time;
 
b:=vih.time;
b1:=vih_ispr.time;
 
e:=shod.time;
e1:=shod_ispr.time;
 
f:=vihod.time;
f1:=vihod_ispr.time;
 
g:=plv.time;
g1:=plv_ispr.time;
 
g:=(b+f)-(a-e);
g1:=(b1+f1)-(a1-e1);
r:=g+g1;
 
plv.time:=(g);
plv_ispr.Time:=(r);
PLV_NUM.Text:=FloatToStrf((PLV.DateTime-Trunc(PLV.Time))*24,fffixed,5,2);
PLV_NUM_ispr.Text:=FloatToStrf((PLV.DateTime-Trunc(PLV.Time))*24,fffixed,5,2);
end;
Затем сам PLV.Time суммируется по дням и записывается в отчет.
PLV.TIME свойство Time 0:00:00 Date 10.06.2014
Необходимо, что бы дата в данном случае совсем не записывалась в БД.
Опять же повторюсь-в adoquery в свойствах plv стоит дисплейформат HH:mm.
Выше прописывал в креатеформ TDateTimeField(DM.ADO_PZP_V_DEPO.FieldBy Name('plv')).DisplayFormat:='HH:mm'; не помогло
0
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
03.07.2014, 11:15
Цитата Сообщение от ul_mralex Посмотреть сообщение
northener, Как же правильно тогда записывать?
А как ты сейчас записываешь?
0
3 / 3 / 1
Регистрация: 02.04.2013
Сообщений: 115
03.07.2014, 11:25  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TPVP_V_DEPO.ADDClick(Sender: TObject);
begin
try
DM.ADO_PZP_V_DEPO.open;
DM.ADO_PZP_V_DEPO.append;
.....
DM.ADO_PZP_V_DEPO.FieldByName('PLV').Value:=plv.Time;
.....
DM.ADO_PZP_V_DEPO.Post;
except
on e:Exception do
end;
SHOWMESSAGE('ИНФОРМАЦИЯ ДОБАВЛЕНА!');
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
03.07.2014, 11:35
Цитата Сообщение от ul_mralex Посмотреть сообщение
должно получится 115:00
Это не формат времени, а твоя персональная выдумка, поэтому в каком бы формате ты не хранил эти данные, для их визуализации в таком виде придется делать соотв. преобразования.

Добавлено через 1 минуту
А хранить их можно как в формате TDataTime, так и Integer (кол-во минут, например).
0
3 / 3 / 1
Регистрация: 02.04.2013
Сообщений: 115
04.07.2014, 13:20  [ТС]
northener, Есть варианты?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.07.2014, 13:20
Помогаю со студенческими работами здесь

Сколько времени нужно для написания формы на delphi под готовую БД MS Access?
Сколько времени нужно для написания формы на delphi под готовую БД MS Access чтобы была без глюков? Имеется очень простая база,...

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

БД Access работа с данными в Delphi
Как получить доступ из таблицы к конкретной записи? или проверить например совпадает ли введенный текст в Edit1 с конкретной записью?

Delphi + Access работа по сети
Очередной вопрос к Гуру. В программке через ADO реальзована работа с базой в MS Access. Хотелось бы не переходя на MS SQL (благо...

Работа с фреймами В Delphi (БД Access)
Доброго времени суток, уважаемые форумчане! Я в Delphi новичок, и к тому же студент. Обращаюсь к Вам, потому как хочу получить опыт в...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru