Системное время сервера

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Alex404
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.09.2002 (Вс) 10:58

Системное время сервера

Сообщение Alex404 » 25.04.2003 (Пт) 21:30

Кто нибудь в курсе как с клиентской машины снять системное время сервера (программно естественно) ну или синхронизировать время клиента со временем сервера? Оговорюсь : Сервер - простой писюк с WinXP - просто там база валяется.. :oops: ...Заранее всем спасибо.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 28.04.2003 (Пн) 11:06

Я бы копнул в сторону WMI. Там наверняка есть средства по чтению времени с компа.

SVL
Обычный пользователь
Обычный пользователь
 
Сообщения: 97
Зарегистрирован: 19.12.2002 (Чт) 11:37
Откуда: Russia

Сообщение SVL » 13.05.2003 (Вт) 9:06

По-моему это то, что тебе нужно
Код: Выделить всё
Private Declare Function NetRemoteTOD Lib "Netapi32.dll" ( _
    tServer As Any, pBuffer As Long) As Long
           
Private Type SYSTEMTIME
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
End Type

Private Type TIME_ZONE_INFORMATION
    Bias As Long
    StandardName(32) As Integer
    StandardDate As SYSTEMTIME
    StandardBias As Long
    DaylightName(32) As Integer
    DaylightDate As SYSTEMTIME
    DaylightBias As Long
End Type
'
Private Declare Function GetTimeZoneInformation Lib "kernel32" _
        (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
'
Private Declare Function NetApiBufferFree Lib "Netapi32.dll" _
        (ByVal lpBuffer As Long) As Long
'
Private Type TIME_OF_DAY_INFO
    tod_elapsedt As Long
    tod_msecs As Long
    tod_hours As Long
    tod_mins As Long
    tod_secs As Long
    tod_hunds As Long
    tod_timezone As Long
    tod_tinterval As Long
    tod_day As Long
    tod_month As Long
    tod_year As Long
    tod_weekday As Long
End Type
'
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
                    (Destination As Any, Source As Any, ByVal Length As Long)

Public Function getRemoteTOD(ByVal strServer As String ) As Date
'
    Dim result As Date
    Dim lRet As Long
    Dim tod As TIME_OF_DAY_INFO
    Dim lpbuff As Long
    Dim tServer() As Byte
'
    On Error GoTo err_ob
    tServer = strServer & vbNullChar
    lRet = NetRemoteTOD(tServer(0), lpbuff)
'
    If lRet = 0 Then
     CopyMemory tod, ByVal lpbuff, Len(tod)
     NetApiBufferFree lpbuff
     result = DateSerial(tod.tod_year, tod.tod_month, tod.tod_day) + _
     TimeSerial(tod.tod_hours, tod.tod_mins - tod.tod_timezone, tod.tod_secs)
     getRemoteTOD = result
    Else
     'Err.Raise Number:=vbObjectError + 1001, _
     'Description:="cannot get remote TOD"
    getRemoteTOD = Now()
    End If
    Exit Function
err_ob:
    getRemoteTOD = Now()
'
End Function

Вызов:
ServerTime=getRemoteTOD("servername")

Alex404
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.09.2002 (Вс) 10:58

Сообщение Alex404 » 15.05.2003 (Чт) 19:05

Ну SVL ! Ну выручил! Ну молодец! А я уже и не надеялся... Код качественный!!! Первый раз в жизни вот так из буфера обмена вставил и все поехало как надо (ни буковки не поменял)!!! Спасибо всем ! (SVL - большое спасибо).


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 211

    TopList  
cron