|
|
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
Уважаемые форумляне. Сделал я программку, фиксирующую время logon и logout. Т.е. контролирующую начало и конец работы сотрудников нашего офиса. Так нашелся умелец, который перед логаутом менял время на своем компе на более позднее (чтобы смыться раньше в работы), и перед выключением компа ставил время на полчаса назад, потому утром мог беззастенчиво опаздывать. Можно ли как-то фиксировать время logon и logout, но не клиентского компа, а самого сервера, к которому такие умельцы доступа не имеют? Чего-то я никак не соображу, с какого угла начинать танцевать. Тех. данные: на сервере лежит аксессовская база (там фиксируется время), а программка (VB6) стоит на каждой машине и отсылает данные в Access. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 07:58 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
ACCESS это не совсем то что Вам нужно, переходите например на MSSQL и не будет у Вас таких "умельцев". Можно будет SELECT GetDate() и получится время сервера всегда. А в ACCESS будет всегда время клиента, т.к. в первом случае обрабатывается ядром сервера, во втором локальным драйвером из набора MDAC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 08:06 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
Спасибо за оперативный ответ. Жаль, что с аксессом не получится. Не знал. К сожалению, MSSQL у нас в офисе нет, есть только лицензионный Access. А может, как-то извернуться, чтобы Access сам вписывал время, когда в таблицу добавлялась запись именно от этого клиента? Есть ли такое событие в VB Access "добавление записи"? Тогда я смог бы навесить на него процедурку и время бы корректировалась в самом Access? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 08:15 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
в поиске, по словам BeforeInsert или AfterInsert в нашем подфоруме access найдёте нужное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 09:17 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
Спасибо. Только BeforeInsert и AfterInsert работают только с формами, а у меня форм в access-е нет, полько таблицы, которые заполняются через VB-приложение на клиентской машине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 10:30 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
4cd6686Спасибо за оперативный ответ. Жаль, что с аксессом не получится. Не знал. К сожалению, MSSQL у нас в офисе нет, есть только лицензионный Access. А может, как-то извернуться, чтобы Access сам вписывал время, когда в таблицу добавлялась запись именно от этого клиента? Есть ли такое событие в VB Access "добавление записи"? Тогда я смог бы навесить на него процедурку и время бы корректировалась в самом Access? насколько я понимаю, все события и процедуры аксеса отрабатывают на клиентской машине. Соответственно, и время тоже будет браться с клиентского компа. Можете на сервер поставить что-то серверное (тот-же SQL, как тут уже писали), из аксеса дергать это что-то(типа Select GetDate() - выше уже писали), а оно будет возвращать дату сервера. Можно конечно попробовать и через DCOM что-то наваять, опять-же серверное. Но геморно это - проще бесплатный MSDE поставить и не мучиться - делов-то на 10 минут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 10:50 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
> Автор: 4cd6686 > Уважаемые форумляне. > > Сделал я программку, фиксирующую время logon и logout. Т.е. > контролирующую начало и конец работы сотрудников нашего офиса. > Так нашелся умелец, который перед логаутом менял время на своем компе > на более позднее (чтобы смыться раньше в работы), и перед выключением > компа ставил время на полчаса назад, потому утром мог беззастенчиво > опаздывать. Попробуй звать net time /set и синхронизировать время его компьютера со временем сервера, прежде чем регистрировать что-либо. Пусть он удивится ;) > Спасибо Да не за что, вообще такие умельцы, если не понимают по человечески, осаждаются административными мерами в виде докладной на имя руководителя, который ввел фиксацию прихода-ухода и по его распоряжению административное лишение прав на изменение системного времени. Потому что он может точно также отбирать у себя права на изменение системного времени, перед выходом и тогда net time /set не сработает Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 10:59 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
в аксе использовал автозаполнение поля дата-время при добавлении новой записи (туда пишется время именно сервера) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 11:49 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
Большое спасибо, Игорь Горбонос. Есть на чем подумать и поучиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 13:09 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
jhonkukв аксе использовал автозаполнение поля дата-время при добавлении новой записи (туда пишется время именно сервера) А как установить автозаполнение поля время? В свойствах поля не нахожу такого. Если не очень затруднит, напишите поподробней. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 13:12 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
В конструкторе открыть таблицу и в "значение по умолчанию" написать Now() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 13:21 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
у объекта ADODB.Recordset есть событие WillChangeRecord и другие . Подойдёт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 13:22 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
НАПИСАЛ АНАЛОГИЧНУЮ ПРОГРАММУ. в Экселе на ВБА. Но для одиночного компьютера... Учитывает опоздания , неучтенные перерывы, дает возможность отработать опоздания, учитывает полные и неполные дни, фиксирует время запуска Экселя и время закрытия, фиксирует факт входа-выхода в основные программы (Экселевские), распечатку документов, которые не положено печатать, сбои электропитания... Все реализовал на формах, чтобы доступа к файлу не было... Запретил доступ для Юзера к времени компьютера. Вопрос закрылся сам. Код: plaintext 1. Пока в офисах сидят девочки прокатывает, как посадим девочку - хакера, будем "посмотреть" Есть идея - для топика на Windows 1.фиксировать факт коррекции времени в ЛОГЕ 2.Сделать кнопки OK Отмена Применить - Inhabled на форме "СВОЙСТВА ДАТА И ВРЕМЯ" (но как реализовать не знаю)... Оставить только крестик на TitleBar. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 16:23 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за помощь. Действительно, самое простое - это решение от shady. Просто в клиентской программе убираю строку записи времени login / logout клиента в базу данных, а в Access-е ставлю в поле "время" default = now(). УРАААА!!! Большое всем спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 16:33 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
> Автор: Dan-K > Есть идея - для топика на Windows > 1.фиксировать факт коррекции времени в ЛОГЕ Это делается настройками аудита ;) > 2.Сделать кнопки OK Отмена Применить - Inhabled на форме "СВОЙСТВА > ДАТА И ВРЕМЯ" (но как реализовать не знаю)... Оставить только крестик на > TitleBar. А это политиками безопастности, правда при этом окно вообще не показывается ;) Когда-же матчасть будем учить, вместо изобретания велосипеда? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 16:40 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
Сорри, не получилось. Даже если access на сервере имеет дефолтное время = Now(), а я никакой команды на изменение его не даю, то он пишет клиентское, а не серверное время. Убиться :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 16:49 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
Логично. Аксес не серверное приложение, просто его файл лежит на серваке. А если вы его положите на флешку, откуда он должен будет взять время? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 17:30 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
FAndrewЛогично. Аксес не серверное приложение, просто его файл лежит на серваке. А если вы его положите на флешку, откуда он должен будет взять время? Сглупил, признаю. Придется пытаться реализовывать вариант Игоря Горбоноса с вебовским временем. Если честно, никогда такого не делал. Я ж самоучка. Не сможет ли кто-нибудь дать ссылки на примеры. Заранее благодарю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 18:56 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
> Автор: 4cd6686 > Придется пытаться реализовывать вариант Игоря Горбоноса с вебовским > временем. Если честно, никогда такого не делал. Я ж самоучка. Да собственно говоря, я металлург по образованию ;) Это жизнь. > Не сможет ли кто-нибудь дать ссылки на примеры. Заранее благодарю Перед сохранением данных Dim dt As Date Запоминаем текущее системное время dt = Now Синхронизируем с сервером, если получится по правам Shell "cmd.exe /c net time \\имя_сервера_где_лежит_база /set /y", vbHide и я-бы вставил Sleep(10) DoEvents Получение точного времени для сохранения данных Перевод времени в исходное Date = dt Time = dt Собственно сохранение данных на сервере Удачи Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 19:22 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
Уважаемый Игорь Горбонос, спасибо за пример, но ничего не получается пока. Dim dt As Date dt = Now Shell "cmd.exe /c net time \\хх.хх.хх.хх/set /y", vbHide Sleep (10) DoEvents Date = dt Time = dt С правами доступа на хх.хх.хх.хх у меня порядок, код ошибки не выдает, но и время не синхронизирует. Пожалуйста, добавьте в свой код строку типа, если это возможно: dNewTime = Время на сервере хх.хх.хх.хх. Чтобы я мог его и записать в таблицу, потому что время на моей машине не синхронизируется с серверным, хоть убей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 10:01 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
у меня, пример Игоря Горбонос, сработал Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 10:44 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
> Автор: 4cd6686 > Уважаемый Игорь Горбонос, спасибо за пример, но ничего не получается > пока. > > Dim dt As Date > dt = Now > Shell "cmd.exe /c net time \\хх.хх.хх.хх /set /y", vbHide Между именем сервера и /set должен быть пробел. > Sleep (10) > DoEvents > Date = dt > Time = dt > > С правами доступа на хх.хх.хх.хх у меня порядок, код ошибки не > выдает, но и время не синхронизирует. Может у тебя на своем компе нет прав на изменение времени? ;) попробуй набрать это: net time \\хх.хх.хх.хх /set /y в командной строке. Ключ /set устанавливает время, а ключ /y говорит автоматическое ДА на вопрос "А действительно ли мы хотим поменять время?" > Пожалуйста, добавьте в свой код строку типа, если это возможно: > dNewTime = Время на сервере хх.хх.хх.хх. > Чтобы я мог его и записать в таблицу, потому что время на моей машине > не синхронизируется с серверным, хоть убей. Добавь модуль и в него вставь код(это немного переделаннный пример из МСДН - HOWTO: Create a Process for Reading and Writing to a Pipe) а потом вызывай: sNewTime = ExecCmd("cmd.exe /c net time \\хх.хх.хх.хх ") В переменной sNewTime будет строка вида: Current time at \\имя сервера is 05.06.2008 9:49 Код: plaintext 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 11:01 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
Еще раз спасибо, что не оставляете без помощи. 1. net time \\IP сервера /set /y. Работает: поменял на компе время и дату, прогнал эту команду, все восстановилось, как на сервере. Значит, тут порядок. 2. Сделал, как было сказано. ЗАРАБОТАЛО!!!!!! Все, проблема решена. Теперь все логины и логауты пишутся с серверным временем. Проверено на нескольких машинах. Огромная признательность всем и персонально Игорю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 13:57 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
> Автор: 4cd6686 > Еще раз спасибо, что не оставляете без помощи. > > 1. net time \\IP сервера /set /y. Работает: поменял на компе время и > дату, прогнал эту команду, все восстановилось, как на сервере. Значит, тут > порядок. Если IP динамический, назначаемый сервером DHCP, то когда нибудь IP может изменится, при правильно настроенной сетке с DNS-server'ом лучше использовать имя компьютера, это из общения с сисадминами. Если адреса статические, тогда лучше использовать IP адрес. > > 2. Сделал, как было сказано. > ЗАРАБОТАЛО!!!!!! > > Все, проблема решена. Теперь все логины и логауты пишутся с серверным > временем. Проверено на нескольких машинах. Ну и чудесненько ;) Удачи Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 14:17 |
|
||
|
Как узнать время на сервере?
|
|||
|---|---|---|---|
|
#18+
авторЕсли IP динамический, назначаемый сервером DHCP, то когда нибудь IP может изменится, при правильно настроенной сетке с DNS-server'ом лучше использовать имя компьютера, это из общения с сисадминами. Если адреса статические, тогда лучше использовать IP адрес. Нет, айпи статический. Так что проблем быть не должно, а на будущее учту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 15:19 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=35353929&tid=2162195]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 257ms |
| total: | 421ms |

| 0 / 0 |
