الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف اجعل الاكسس ياخذ التوقيت في السيرفر وليس على الكمبيوتر للمستخدمين

مغلق
بدأه moody1616 في 14 نوفمبر 2001 · 2 رد · 517 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

انا عندي برنامج يعمل بشكل دقيق على الوقت ولكن تواجهني مشكله ان الاكسس ياخذ الوقت من الاجهزة التي تعمل عليها البرنامج يعني اذا كان عندي ثلاث مستخدمين وواحد من المستخدمين الجهاز حقه الوقت الذي فيه ليس معد مضبوط فانه سوف يحفظ في البرنامج التوقيت الخطا ارجوا المساعده من لديه العلم:confused:

#2

هذا حل لطلبك من الاستاذ خضر ترزي سبق وان نشر في المنتدى ولكنني حاولت أيجاده بالبحث ولم اتمكن من ذلك

ارجو ان يفيدك

الحصول على الوقت من الجهاز المركزي

تحتاج بعض البرامج وخصوصا المخصصة للعمل عبر الشبكات على معرفة الوقت عن طريق الجهاز المركزي وليس عن طريق الجهاز المفتوحة من خلاله ، واليك الكود التالي

ملاحظة : الكود مخصص لاجهزة تعمل عن طريق

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")

#3

الاخ علي اشكر جزيل الشكر على هذه الملعومه القيمة

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…