انا عندي برنامج يعمل بشكل دقيق على الوقت ولكن تواجهني مشكله ان الاكسس ياخذ الوقت من الاجهزة التي تعمل عليها البرنامج يعني اذا كان عندي ثلاث مستخدمين وواحد من المستخدمين الجهاز حقه الوقت الذي فيه ليس معد مضبوط فانه سوف يحفظ في البرنامج التوقيت الخطا ارجوا المساعده من لديه العلم:confused:
كيف اجعل الاكسس ياخذ التوقيت في السيرفر وليس على الكمبيوتر للمستخدمين
هذا حل لطلبك من الاستاذ خضر ترزي سبق وان نشر في المنتدى ولكنني حاولت أيجاده بالبحث ولم اتمكن من ذلك
ارجو ان يفيدك
الحصول على الوقت من الجهاز المركزي
تحتاج بعض البرامج وخصوصا المخصصة للعمل عبر الشبكات على معرفة الوقت عن طريق الجهاز المركزي وليس عن طريق الجهاز المفتوحة من خلاله ، واليك الكود التالي
ملاحظة : الكود مخصص لاجهزة تعمل عن طريق
Microsoft Windows NT 4.0 or 2000
فقط ، ولن يعمل من خلال غيرهما
كما يفترض وجود مجال ويندوس ن ت في الشبكة
Windows NT Domain
قم بانشاء
Module
وضع به الكود التالي
'*************** Code Start ****************
Private Type TIME_OF_DAY_INFO
tod_elapsedt As Long 'the number of seconds _
since 00:00:00, January 1, 1970.
tod_msecs As Long 'the number of milliseconds _
from an arbitrary starting point _
(system reset).
tod_hours As Long 'current hour (0-23)
tod_mins As Long 'current minute (0-59)
tod_secs As Long 'current second (0-59)
tod_hunds As Long 'the current hundredth second (0-99).
tod_timezone As Long 'TZ of Server in Minutes from GMT
tod_tinterval As Long 'time interval for each tick of the _
clock. Each integral integer _
represents one ten-thousandth _
second (0.0001 second).
tod_day As Long 'the day of the month (1-31).
tod_month As Long 'the month of the year (1-12).
tod_year As Long 'Specifies the year.
tod_weekday As Long 'the day of the week; 0 is Sunday
End Type
Private Declare Function apiNetRemoteTOD Lib "netapi32" _
Alias "NetRemoteTOD" _
(ByVal UncServerName As String, _
BufferPtr As Long) _
As Long
Private Declare Sub sapiCopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(hpvDest As Any, _
hpvSource As Any, _
ByVal cbCopy As Long)
Public Function fGetServerTime(ByVal strServer As String) As String
'*******************************************
'Name: fGetServerTime [NT ONLY] (Function)
'Purpose: Returns Time of Day for NT Server
'Calls: NetRemoteTOD, RtlMoveMemory
'Inputs: Name of NT Server in ServerName format
'Returns: Time of day for the NT Server
'*******************************************
On Error GoTo ErrHandler
Dim tSvrTime As TIME_OF_DAY_INFO, lngRet As Long
Dim lngPtr As Long
Dim strOut As String
Dim intHoursDiff As Integer
Dim intMinsDiff As Integer
If Not left$(strServer, 2) = "" Then _
Err.Raise vbObjectError + 5000
strServer = StrConv(strServer, vbUnicode)
lngRet = apiNetRemoteTOD(strServer, lngPtr)
If Not lngRet = 0 Then Err.Raise vbObjectError + 5001
Call sapiCopyMemory(tSvrTime, ByVal lngPtr, Len(tSvrTime))
With tSvrTime
intHoursDiff = .tod_timezone 60
intMinsDiff = .tod_timezone Mod 60
strOut = .tod_month & "/" & .tod_day & "/" _
& .tod_year & " "
If .tod_hours > 12 Then
strOut = strOut & Format(.tod_hours - 12 - intHoursDiff, "00") _
& ":" & Format$(.tod_mins - intMinsDiff, "00") & ":" _
& Format$(.tod_secs, "00") & " PM"
Else
strOut = strOut & Format(.tod_hours - intHoursDiff, "00") _
& ":" & Format$(.tod_mins - intMinsDiff, "00") & ":" _
& Format$(.tod_secs, "00") & " AM"
End If
End With
fGetServerTime = strOut
ExitHere:
Exit Function
ErrHandler:
fGetServerTime = vbNullString
Resume ExitHere
End Function
'**************** Code End *****************
ومن ثم تستطيع معرفة الوقت عن طريق الامر التالي
x = fGetServerTime("Server Name")
الاخ علي اشكر جزيل الشكر على هذه الملعومه القيمة
هذا الموضوع مغلق.