Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
127 / 25 / 1
Регистрация: 07.02.2016
Сообщений: 238

Работа с текущим временем

22.03.2016, 19:13. Показов 3731. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Подскажите пожалуйста ,как можно реализовать операцию с проведением подсчёта показаний приборов учета(два раза в сутки утро и вечер) согласно текущему времени Now()?
Более понятно.
Пример:
При снятии замера оператор профукал время и записал показания в 10:10(обычно заносится в 9:00"+-" 5 минут) к примеру 23.03.2016г.
Предыдущий замер был на 9:05 "22.03.2016". С подсчётом и разработкой БД для замеров очень помогла Техник-Сан. Как пересчитать получившийся значение за 25:35мин на 24 часа(суточный приведённый). На калькуляторе без проблем(делим и умножаем в минутах или в часах в числовом формате), в БД тоже наверное требуется форматировать разницу в числовое значение. Как?

Добавлено через 20 минут
Косяк: за 25:05 мин в 24:00. Простите
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.03.2016, 19:13
Ответы с готовыми решениями:

Работа со временем (не с датой)
Здравствуйте Ребята) задача: посчитать цену за переговоры с условием скидки в период с 18:01-21:00 цена=цена*0,95 ну и тд как это можно...

Работа с Датой/временем в запросах
Допустим у нас есть год (в виде обычного числового формата). Необходимо посчитать количество дней до наступления даты...

Определить интервал между текущим временем и временем до звонка
Написать программку отсчитывающую время от текущего времени до конца урока

47
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
22.03.2016, 19:40
Поле типа Дата/Время это число с плавающей запятой (Double). Целая часть число дней с 30 декабря 1899 года, дробная часть (мантисса) число секунд с начала суток в долях от полного числа секунд в сутках, т.е. N секунд деленное на 86400. Таким образом всегда можно пересчитать (добавить, отнять) нужный период к заданному времени.
Есть множество функций даты/времени, позволяющие выделить отдельные части даты или задать определенный интервал. Например Hour(ПолеДатыВремени) даст число часов, функция Minute число минут в часе, Second число секунд в часе, Day день месяца и прочая, и прочая. В хелпе есть подробное описание всех датных функций. Помимо описанных, к ним относятся DatePart, DateDiff, DateAdd, DateSerial, TimeSerial, Date, Now, DateValue, TimeValue, Week, WeekDay. Датные возможности есть у функции Format. Надеюсь ничего не забыл :-)

Добавлено через 19 минут
Нет есть еще. Забыл про Year, Month, MonthName, Time, Timer
2
127 / 25 / 1
Регистрация: 07.02.2016
Сообщений: 238
22.03.2016, 19:48  [ТС]
Спасибо. С учётом текущего времени и разницей я наверное разберусь, как подставить данную функцию в запрос SQL?
T-SQL
1
2
3
4
5
6
7
8
9
SELECT Сегодня.Дата,
 Сегодня.КодСкважины,
 Сегодня.[Замер СКЖ(УТРО)],
 Сегодня.[Замер СКЖ(УТРО)]-Вчера.[Замер СКЖ(УТРО)] AS РасходУтроУтро,
 Сегодня.[Замер СКЖ(ВЕЧЕР)],
 Сегодня.[Замер СКЖ(ВЕЧЕР)]-Вчера.[Замер СКЖ(ВЕЧЕР)] AS РасходВечерВечер
FROM Замер AS Сегодня
 INNER JOIN Замер AS Вчера
  ON (Сегодня.КодСкважины=Вчера.КодСкважины) AND (Сегодня.Дата=Вчера.Дата+1);
Хотя наверное он не будет работать в с текущим временем.
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
22.03.2016, 19:58
Цитата Сообщение от Stalker73i Посмотреть сообщение
Хотя наверное он не будет работать в с текущим временем.
Да, не будет. В запросе нет ни текущей даты Date(), ни текущего времени Time() или Now(). Из текста запроса неочевидно как туда вставить текущие дату/время
0
127 / 25 / 1
Регистрация: 07.02.2016
Сообщений: 238
22.03.2016, 20:05  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
Да, не будет. В запросе нет ни текущей даты Date(), ни текущего времени Time() или Now(). Из текста запроса неочевидно как туда вставить текущие дату/время
Придётся мудрить с самой структурой БД (учёт замера с привязкой к текущему времени). Ладно на работе попробую как-нибудь разобраться. Книг надо только побольше скачать.
0
127 / 25 / 1
Регистрация: 07.02.2016
Сообщений: 238
29.03.2016, 20:43  [ТС]
Здравия всем!
С запросами с использованием расчётов на основе текущего времени я разобрался, mobile спасибо за направление потока мыслей. А вот с построителем выражений в поле формы для аналогичного расчёта пока туго. Как используя встроенные функции проделать подобное, но уже в поле формы. Пример БД во вложении.
Замеры разделены сознательно, не научился ещё отделять текущие временные промежутки на до обеда и после и не знаю возможно ли это провернуть в запросе. Подкиньте пожалуйста какой-нибудь подобный пример, что бы колеса закрутились и форме
С Уважением.
Вложения
Тип файла: 7z Замеры.7z (33.9 Кб, 3 просмотров)
0
127 / 25 / 1
Регистрация: 07.02.2016
Сообщений: 238
30.03.2016, 08:04  [ТС]
Проблему решил. Теперь нарисовалась другая. Как отсечь(округлить) в получаемых данных поля "ФорматДата" таблиц "ЗамерУтро", "ЗамерВечер" числа до 3-его знака после запятой. Получаемый Дебит стал бы более читаемый и укладывался в стандарт измерения с точностью до 1-го килограмма? Не могу никак... Либо, Если шанс провернуть подобное в запросе или в свойствах поля "Дебит" форм "Замеры....."?
0
127 / 25 / 1
Регистрация: 07.02.2016
Сообщений: 238
30.03.2016, 08:05  [ТС]
Пример:
Вложения
Тип файла: 7z Замеры.7z (27.8 Кб, 4 просмотров)
0
127 / 25 / 1
Регистрация: 07.02.2016
Сообщений: 238
30.03.2016, 17:07  [ТС]
Опять косячу. В данных поле "Дебит" подчиненной формы "ЗамерыВечер" поправил формулу. Теперь данные из формы и запроса совпадают.

Добавлено через 8 часов 49 минут
С отображением в форме проблему решил, в поле таблицы тоже. Осталось додумать округление до заданного формата в запросе. Подскажите кто нибудь, хоть что нибудь..
0
 Аватар для VinniPuh
9131 / 6136 / 593
Регистрация: 27.03.2013
Сообщений: 19,988
30.03.2016, 17:29
Stalker73i, а так не пробовали?

ОкруглитьДо2ЗнаковПослеЗапятой: Round(([ИмяПоля]);2)
0
127 / 25 / 1
Регистрация: 07.02.2016
Сообщений: 238
30.03.2016, 17:42  [ТС]
Цитата Сообщение от PuhKMV Посмотреть сообщение
ОкруглитьДо2ЗнаковПослеЗапятой: Round(([ИмяПоля]);2)
В запросе прокатит сие или нет?
0
 Аватар для VinniPuh
9131 / 6136 / 593
Регистрация: 27.03.2013
Сообщений: 19,988
30.03.2016, 17:45
Цитата Сообщение от Stalker73i Посмотреть сообщение
...В запросе прокатит сие или нет?...
Если мне нужно округлить в запросе, то всегда так делаю (в режиме конструктора)
Если число к примеру
1234,021458
то после
1234,02
Ну или сколько вы захотите знаков после запятой, 1 или 10
1
127 / 25 / 1
Регистрация: 07.02.2016
Сообщений: 238
31.03.2016, 07:33  [ТС]
Цитата Сообщение от PuhKMV Посмотреть сообщение
Если мне нужно округлить в запросе, то всегда так делаю (в режиме конструктора)
Если число к примеру
1234,021458
то после
1234,02
Ну или сколько вы захотите знаков после запятой, 1 или 10
Спасибо за "вектор" мыслей. Вчера я не мог ответить, зато с утра после перезагрузки мозга, проделал это действие и в запросе. Получилось "много" ,но работает. Кстати кавычки ( при использовании данной функции в запросе не работают, с запятой всё закрутилось в нужном направлении. Подправил ещё "Значение по умолчанию" в свойствах поля "ФорматДата" установив Round(Time();3).
Вот сам запрос.
T-SQL
1
2
SELECT СегодняУтро.Дата, СегодняУтро.КодСкважины, Round((СегодняУтро.[ЗамерСКЖ(9:00)]-ВчераУтро.[ЗамерСКЖ(9:00)])*(СегодняУтро.ФорматДата+(1-ВчераУтро.ФорматДата))/1000 , 3) AS ДебитУтро
FROM ЗамерУтро AS СегодняУтро INNER JOIN ЗамерУтро AS ВчераУтро ON (СегодняУтро.Дата=ВчераУтро.Дата+1) AND (СегодняУтро.КодСкважины=ВчераУтро.КодСкважины);
Пример БД во вложении. Может кому и пригодится.
Ещё несколько вопросов по этой БД.
1. Как сделать , чтобы при переходе в поле со списком "Скважины" в форме список раскрывался автоматически, без нажатия на стрелку? В виду того что напарники по работе даже до этого додуматься немогут.
2. При ошибке набора данных , получать сообщение "набранное лично" с более полной инструкцией к исправлению? опять же для тех же товарищей.
Вложения
Тип файла: 7z Замеры.7z (27.6 Кб, 5 просмотров)
0
 Аватар для VinniPuh
9131 / 6136 / 593
Регистрация: 27.03.2013
Сообщений: 19,988
31.03.2016, 07:41
Цитата Сообщение от Stalker73i Посмотреть сообщение
...Получилось "много" ,но работает...
Это я затупил, думал вы про число как закруглить. а вы про время.
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
31.03.2016, 07:50
Цитата Сообщение от Stalker73i Посмотреть сообщение
1. Как сделать , чтобы при переходе в поле со списком "Скважины" в форме список раскрывался автоматически, без нажатия на стрелку? В виду того что напарники по работе даже до этого додуматься немогут.
На событии Получение фокуса полем КодСкважины раскрыть список - метод Dropdown
Visual Basic
1
2
3
Private Sub КодСкважины_GotFocus()
    Me.КодСкважины.Dropdown
End Sub
Цитата Сообщение от Stalker73i Посмотреть сообщение
2. При ошибке набора данных , получать сообщение "набранное лично" с более полной инструкцией к исправлению?
Подходящее событие До обновление (BeforeUpdate) поля. Сравнивать ошибочное значение с возможным. При ошибке давать сообщение (Msgbox) и задать параметру Cancel значение True. Типа такого
Visual Basic
1
2
3
4
5
6
Private Sub ЗамерСКЖ_9_00__BeforeUpdate(Cancel As Integer)
    If Me.ЗамерСКЖ_9_00_ = "Неправильное значение" Then
        MsgBox "введено неверное значние. Сделайте то-то - то-то"
        Cancel = True
    End If
End Sub
0
127 / 25 / 1
Регистрация: 07.02.2016
Сообщений: 238
31.03.2016, 08:03  [ТС]
mobile
PuhKMV
Спасибо большое. Доработаю БД наверное уже непосредственно за "рабочим" компом.
На данном этапе теперь хоть представления имею что и куда, ну и с функциями стало попонятнее.
0
127 / 25 / 1
Регистрация: 07.02.2016
Сообщений: 238
04.04.2016, 08:26  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
На событии Получение фокуса полем КодСкважины раскрыть список - метод Dropdown
T-SQL
1
2
3
Private Sub КодСкважины_GotFocus()
   Me.КодСкважины.Dropdown
End Sub
Возникла проблема если после раскрытия списка перейти мышью на замер, выкидывает ошибку о потере фокуса. Как я понимаю надо прописать и процедуру "потери фокуса"?
Пока я просто изменил событие на открытие списка. Вместо события "Получение фокуса" поставил в событие "Вход", теперь список открывается "автоматически" при переходе на это поле после внесения первого замера и т.д.
В подчинённой форме работает прекрасно, но в главной список раскрывается при открытии формы, что и было задано в событии.

И ещё вопрос: Возможно ли прописать процедуру выпадающего значения из списка в данном поле? При выборе одно из значении список уменьшался бы на выбранное в следующей записи и так до нуля. Я как понимаю необходим о написать динамический запрос на выбывания из списка. Помогите примером плиз.

Добавлено через 12 часов 50 минут
Цитата Сообщение от Stalker73i Посмотреть сообщение
Возникла проблема если после раскрытия списка перейти мышью на замер, выкидывает ошибку о потере фокуса. Как я понимаю надо прописать и процедуру "потери фокуса"?
Косяк видимо версии Аксесс 2000 в рабочем компе, дома стоит 2003 - работает без проблем.

Как сделать чтобы при открытии формы выделенная область указывала к примеру на кнопку "Выход"? ,а не на раскрывающийся список скв.(в архиве раскрывающий список неудобен к восприятию в отличии от текущей сводки). Проконсультируйте пожалуйста.
И по этому вопросу:
Цитата Сообщение от Stalker73i Посмотреть сообщение
И ещё вопрос: Возможно ли прописать процедуру выпадающего значения из списка в данном поле? При выборе одно из значении список уменьшался бы на выбранное в следующей записи и так до нуля. Я как понимаю необходим о написать динамический запрос на выбывания из списка. Помогите примером плиз.
Если решение или нет?
0
127 / 25 / 1
Регистрация: 07.02.2016
Сообщений: 238
04.04.2016, 10:25  [ТС]
Цитата Сообщение от Stalker73i Посмотреть сообщение
Как сделать чтобы при открытии формы выделенная область указывала к примеру на кнопку "Выход"? ,а не на раскрывающийся список скв.(в архиве раскрывающий список неудобен к восприятию в отличии от текущей сводки). Проконсультируйте пожалуйста.
Покрутил ,повертел и сделал как надо для своих работников-юзеров.
В текущей при открытии всплывает список работающих скважин, а в архиве работает только прокрутка даты. Что и нужно было. Всем спасибо. Бд во вложении.

P.S.По второму вопросу хоть намекните кто-нибудь на решение задачи.
Вложения
Тип файла: 7z Замеры.7z (33.2 Кб, 4 просмотров)
0
 Аватар для VinniPuh
9131 / 6136 / 593
Регистрация: 27.03.2013
Сообщений: 19,988
04.04.2016, 10:58
Цитата Сообщение от Stalker73i Посмотреть сообщение
...выделенная область указывала к примеру на кнопку "Выход"...
Откройте в режиме конструктора например основную форму - Замеры текущая, нажмите правой кнопкой мыша на форму и в контекстном меню выберите - Последовательность перехода.
Переместите строку с кнопкой "Выход" , (у вас это кнопка10), в самый верх.
Теперь при открытии формы фокус будет падать первым делом не на Подчиненную форму, а на кнопу выхода.
Миниатюры
Работа с текущим  временем  
Вложения
Тип файла: rar Замеры-2.rar (44.8 Кб, 5 просмотров)
1
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
04.04.2016, 12:14
Цитата Сообщение от Stalker73i Посмотреть сообщение
При выборе одно из значении список уменьшался бы на выбранное в следующей записи и так до нуля.
Я предлагаю другой вариант, еще менее затратный для ввода. При переходе на новую запись значением по умолчанию для кода скважины становится первая же незаполненная скважина на выбранную дату. Тогда и дропдаун не нужен. Если все скважины заполнены, то ввод данных запрещен.
Код на событиях Текущая запись (Current) форм ЗамерУтро и ЗамерВечер.

При заполнении записи будет на следующей строке высвечиваться тот же номер скважины, что и на текущей. Не обращайте на это внимание. При переходе на новую строку код скважины встанет правильный. Это связано с задание значения по умолчанию и расчетом его на событии Текущая записи.
Вложения
Тип файла: rar Замеры.rar (49.8 Кб, 8 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2016, 12:14
Помогаю со студенческими работами здесь

Всплывающие сообщение в трее с текущим временем
При нажатии на кнопку выходило сообщение в трее с текущим временем

Копирование файла в каталог с текущим временем в имени
доброго времени суток! почитал по форуму, может плохо искал, но искал! есть задача, проверить доступность сетевого диска и если...

Необходимо заполнять столбец в таблице БД текущим временем
задача такая(Visual C#): необходимо заполнять столбец в таблице БД текущим временем, подскажите пожалуйста как это сделать, литературе так...

Поиск по базе данных записей с текущим временем на ПК
Помогите пожалуйста сделать поиск по базе данных. Есть столбец в котором указано дата и время, и нужно вывести в DataGrid только те строки,...

Найти разницу между текущим и заданным временем
привет всем. требуется найти разницу во времени между текущим временем и заданным. использую этот код, все работает отлично: ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru