اذهب الي المحتوي
أوفيسنا
سلمان الشهراني

تمت الإجابة جلب التاريخ من السيرفر وليس من جهاز المستخدم

Recommended Posts

ابشر بسس ممكن مساعدتك

وين يوضع الكود

هل عند تحميل النموذج الرئيسي

والف شكر لك

تم تعديل بواسطه سلمان الشهراني

شارك هذه المشاركه


رابط المشاركه
شارك

الله يسعدك ويعطيك الف عافيه 
مبدع كالعاده ماشالله تبارك الله
طبعا نزلته وجربته على جهازين موصل بينهم شبكه
الجهاز الرئيسي SALMAN1
الجهاز الفرعي SALMAN2
 
لمى اختار ادخل اسم السيرفر تظهر لي الرساله الموجوده بالمرفق 
على انه طلب الاذن مرفوض


لمى اغيره الى SALMAN1
يعمل صحيح

2020-03-07_00-48-36.png

شارك هذه المشاركه


رابط المشاركه
شارك
9 ساعات مضت, سلمان الشهراني said:

جربته على جهازين موصل بينهم شبكه

 

سؤالك كان عن جلب التاريخ من السيرفر 🙂

 

جعفر

 

 

شارك هذه المشاركه


رابط المشاركه
شارك

هذا بيخلينا نفكر في طريق آخر 🙂

هل جداول قاعدة البيانات موجودة على هذا الجهاز ؟

 

جعفر

  • Like 1

شارك هذه المشاركه


رابط المشاركه
شارك

السلام عليكم 🙂

 

الفكرة هي ، انه الجداول موجودة في الواجهة الخلفية BE ، واللي موجودة على السيرفر ، واللي نريد نحصل على وقته ،

نضع هذه الوحدة النمطية فيه:


Public Function Server_Date_Time() As Date

    Server_Date_Time = Now()
End Function

.

 

ثم في برنامج الواجهة FE نضع هذه الوحدة النمطية :

Public Function Call_Server_F()

    Dim apAccess As New Access.Application
     
    apAccess.OpenCurrentDatabase (DLookup("[Database]", "MSysObjects", "[Flags]=2097152"))
    Call_Server_F = apAccess.Run("Server_Date_Time")
    
End Function

 

ثم من النموذج ننادي هذه الوحدة النمطية :

me.Server_Time = Call_Server_F

 

جرب المرفق:

ضع BE على السيرفر ، والـ FE على كمبيوتر آخر ، ثم شغّل FE 🙂

 

جعفر

 

Server Time.mdb.zip

  • Like 1

شارك هذه المشاركه


رابط المشاركه
شارك

وعليكم السلام 🙂

 

الطريقة الجديدة اللي توصلت لها هي عمل وحدة نمطية ، في برنامج الواجهة (ليس على السيرفر) تقوم بالتالي:

- عمل ملف txt صغير على جهاز السيرفر،

- قراءة الوقت الذي تم فيه عمل الملف (من اعدادات الملف) ، وهو الوقت الذي نريده ،

-حذف الملف

Public Function Make_File()

    Dim BE_Path, PauseTime, Start
    
    'get the server path
    BE_Path = DLookup("[Database]", "MSysObjects", "[Flags]=2097152")   'Path and BE name
    BE_Path = Mid(BE_Path, 1, InStrRev(BE_Path, "\"))
    BE_Path = BE_Path & "dummy.txt"
    
    'make the dummy txt file
    Open BE_Path For Output As #1
        Print #1, "No text required"
    Close #1
    
    'pasue for a second, until file is recognized, for slow networks
    PauseTime = 1    ' Set duration.
    Start = Timer    ' Set start time.
    Do While Timer < Start + PauseTime
        DoEvents    ' Yield to other processes.
    Loop
    
    'get the date created
    Make_File = FileDateTime(BE_Path)
    
    'clean up, delete the file
    Kill BE_Path

End Function

.

وننادي هذه الوحدة النمطية هكذا:

Me.srver_Time = Make_File()

.

وبما ان ملف الجداول يكون في مجلد يسمح فيه بإنشاء/تعديل/حذف ملف ، فهذه الطريقة المفروض انها تشتغل 🙂

 

طريقة العمل هي ان تضع ملف my_BE.mdb على السيرفر ، وملف my_FE.mdb على كمبيوترك ، ثم تربط جدول الواجهة مع جدول الخلفية (سيسألك البرنامج عن فتحه) 🙂

 

جعفر

Server Time.zip

  • Like 3
  • Thanks 1

شارك هذه المشاركه


رابط المشاركه
شارك

استاذي

هل ممكن اضافة 

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

اذا وجد اختلاف يظهر رساله تنبيه

طبعا التاريخ فقط دون الوقت

شارك هذه المشاركه


رابط المشاركه
شارك

يمكنك استخدام مثل هذا الكود :

    Me.srver_Time = Make_File()

    if format(Make_File(),"dd-mm-yyyy") <> format(date(),"dd-mm-yyyy") then
        msgbox "تاريخ السيرفر غير عن تاريخ الجهاز"
    end if

.

جعفر

  • Like 3

شارك هذه المشاركه


رابط المشاركه
شارك

سهله 🙂

 

بدل ما نأخذ اسم ملف الجداول ومساره من
BE_Path = DLookup("[Database]", "MSysObjects", "[Flags]=2097152")   'Path and BE name
  
انت اكتبه يدويا، هكذا
BE_Path = "D:\myDB\my_BE.mdb"   'Path and BE name  
  
	او

BE_Path = application.currentdb.path & "\myDB\my_BE.mdb"   'Path and BE name    

 

جعفر

  • Like 3

شارك هذه المشاركه


رابط المشاركه
شارك

السلام عليكم اخوي سلمان 🙂

الحمدلله 🙂
بس الآن خلينا نجرب نعمل الكود تلقائي ،

لوسمحت تجرب هذا الكود في البيئة اللي عندك ، علشان يكون مرجع لبقية الاعضاء 🙂

 

ضع هذا الكود في وحدة نمطية :

Public Function Get_DB_Path_2()

    Dim rst As DAO.Recordset
    
    Set rst = CurrentDb.OpenRecordset("SELECT Database FROM MSysObjects WHERE (MSysObjects.Database) Is Not Null")
    Get_DB_Path_2 = rst(0)
    
    rst.Close: Set rst = Nothing
End Function

.

وبعدين في النافذة اللي تحت (immediate)  اكتب التالي (تأكد ان الكيبورد انجليزي ، وعلامة الاستفهام بالانجليزي) ، وارفق لنا صورة بالنتيجة :

?Get_DB_Path_2

.

هذه نتيجة العمل على كمبيوتري :

image.png.6e4bbb093f8c43df6c75f7b1a009a154.png

.

جعفر

  • Like 1

شارك هذه المشاركه


رابط المشاركه
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • المتواجدين الان   0 اعضاء متواجدين الان

    لايوجد اعضاء مسجلون يتصفحون هذه الصفحه

×
×
  • اضف...