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

الردود الموصى بها

السلام عليكم ورحمة اله تعالى وبركاته

انا بصدد تحديث لاحد قواعد البيانات قمت بتصميمها منذ ما يقارب 6 سنوات وان شاء الله سوف يكون هذا اول تحديث لى عليها

وبأمر الله تباعا سوف اضع بين اياديكم درر وخلاصة افكارى

اولا : اعتذر فى الفترة المقبلة عن التقصير فى الرد على التساؤلات لضيق وقتى 

ثانيا : ان شاء الله اقوم بالبناء خطوة بعد خطوة ومشاركتكم لعملى

-----------------

بسم الله الرحمن الرحيم على بركة الله 

اولا سوف يتم مراعاة ان تعمل قاعدة البيانات على كلا النواتان  X32  , x64

قاعدة البيانات سوف تكون مقسمة لقاعدتان اماية  وخلفية

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

سوف ابدأ بكود جلب الوقت والتاريخ من جهاز السيرفر لاستاذى الجليل و معلمى القدير و والدى الحبيب الاستاذ @jjafferr :fff:

ولكن مع بعض الاضافات التى سوف تندمج بها بعد ذلك مع كود عمل الاكسس والربط بجهاز السرفر 

اولا فى رأس الموديول  يتم الاعلان عن متغير عام 

Public GetsrvDate As Date

بعد ذلك نقوم بعمل الروتين الاتى 

Public Function srvDate()
    srvDate = Nz(GetsrvDate, Null)
End Function

الروتين السابق لكى نستطيع استخدامة فى زوايا التطبيق اينما نريد سوف نسند اليه القيمة التى يحملها المتغير العام الذى قمنا بتعريفه فى رأس الموديول

الروتين الاتى جلب الوقت والتاريخ من جهاز السرفر لاستاذى الجليل و معلمى القدير و والدى الحبيب الاستاذ @jjafferr :fff:

'call By >>--->  Me.srvr_Date_Time = Make_File3(Me.srvr_Domain_Name)
Public Function Make_File3(BE_Path As String)
On Error GoTo err_Make_File3

    Dim PauseTime, Start
    
    'we need the path to have a slash at its end
    If Right(BE_Path, 1) <> "\" Then
        BE_Path = BE_Path & "\"
    End If
    
    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_File3 = FileDateTime(BE_Path)
    
    'clean up, delete the file
    Kill BE_Path

    
Exit_Make_File3:

    Exit Function
err_Make_File3:

    If Err.Number = 75 Then
        MsgBox "Access Denied" & vbCrLf & "You do not have permission to write to the folder"
    ElseIf Err.Number = 53 Then
        Make_File3 = FileDateTime(BE_Path)
        Kill BE_Path
        BE_Path = vbNullString
        Make_File3 = vbNullString
    Resume Next
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
    End If
    
    Resume Exit_Make_File3
    
End Function

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

Public Function AccessToSrv(ByVal ServerShare As String, ByVal UserName As String, ByVal Password As String, ByRef OpenFrmSplash As String)
On Error GoTo Proc_Err
    
    Dim FSO As Object
    Dim Directory As Object
    Dim Filename As Object
    Dim NetworkObject As Object
    
    Set NetworkObject = CreateObject("WScript.Network")
    Set FSO = CreateObject("Scripting.FileSystemObject")

    NetworkObject.MapNetworkDrive "", ServerShare, False, UserName, Password

    Set Directory = FSO.GetFolder(ServerShare)
    For Each Filename In Directory.Files
        'Debug.Print Filename.Name
    Next
    
    'Shell "cmd.exe /c start """" """ & ServerShare & """" ', vbNormalFocus
    'Shell "C:\WINDOWS\explorer.exe """ & ServerShare & "", vbNormalFocus
     
     AccessToSrv = Make_File3(ServerShare)
     GetsrvDate = AccessToSrv
     
     
     DoCmd.Close
     DoCmd.OpenForm OpenFrmSplash
         
    Set Filename = Nothing
    Set Directory = Nothing
    Set FSO = Nothing
    NetworkObject.RemoveNetworkDrive ServerShare, True, False
    Set NetworkObject = Nothing
    
Proc_Exit:
   Exit Function
Proc_Err:
   Resume Proc_Exit
   Resume
   
End Function

يتم وضع الكود الاتى لبدأ روتين الاتصال بالشبكة فى العمل مع مراعاة الاتى 

1- التأكد من عمل مشاركة لمجلد على جهاز السرفر والذى بدوره سوف يحتوى على قاعدة بيانات الخلفية

2- التأكد من بيانات الاتصال لعمل اكسس على جهاز السرفر

كود الاتصال يتم وضعه على زر امر كالاتى 

    Call AccessToSrv(Me.txtShardFolderPathe, Me.txtUserName, Me.txtPassWord, "frmMain")

حيث أن 

txtShardFolderPathe= مسار مجلد المشاركة كاملا مثل 

\\192.168.1.3\DBSharing

txtUserName = اسم المستخدم لفتح جهاز السرفر

txtPassWord= كلمة مرور الولوج لجهاز السرفر

"frmMain" = اسم النموذج الذى نريد لقاعدة البيانات فتحة بعد الولوج للسيرفر من هلال النموذج المعد لذلك

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

call srvDate

 

اترككم مع الاستمتاع بالمرفق :wink2:

LoginServer.accdb

  • Like 2
  • Thanks 1
رابط هذا التعليق
شارك

لسه أحاول أستوعب الموضوع  🧐

ممكن ياباش مهندس تحط لنا صور شاشة لما بيكون شغال كويس يكون شكله ازاي ؟

شكل اللي معايه ما ضبطتشي .. 😅

image.png.778dec3f3083953d5cefcc8f759a2895.png

رابط هذا التعليق
شارك

عندما نحاول عمل اكسس على جهاز السرفر لاول مرة يكون من خلال هذه الشاشة

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

0001.png.85b8e93495d7470d877aeff23cbbce61.png.2da99def08a5a4023348c5921a0cc3c2.png

 

الفكرة فى المرفق هى الاحتفاظ ببيانات تسجيل الدخول للجهاز فى الجدول 

رقم الـ IP  + اسم المجلد المخصص للمشاركة

او اسم الجهاز + اسم المجلد المخصص للمشاركة

لا يكفي ان تكتب رقم IP السرفر او اسم جهاز السرفر ، بينما يجب ان تكتب اسم المجلد الذي لك فيه صلاحية الكتابة Read/Write

وطبعا لاننا سوف نقوم باستخدام مجلد المشاركة الذى يحتوى قاعدة بيانات الخلفية اذا المجلد لابدان تكون فيه صلاحية الكتابة Read/Write

اسم المستخدم لعمل الاتصال 

كلمة المرور الخاصة بالاتصال 

وتم عمل تصوير للشاشة من واقع العمل على المرفق 

DcBl5Ye4yY.thumb.gif.32056ff4739a3e3418211d29b0cc5703.gif

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم روحمة الله وبركاته

أخوانى ما أكرمكم فى علمكم

أود المشاركة فى هذا الموضوع (الجامد جداً)

الاساتذة تفضلوا بتفصيل وتوضيح الموضوع وكيفية تشغيله 

وأرفاق ما هو مرفق للتجربة والتسهيل على باقى أحبتى فى الله

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

وأعتزر مقدما عما إذا وجد به أخطاء

وأليكم التجربة وأترك لكم الملف مرفق للأطلاع والتجربةconnect server.accdb

  • Thanks 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.

×
×
  • اضف...

Important Information