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

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

قام بنشر

 السلام عليكم

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

DoCmd.Close
On Error GoTo Err:
DoCmd.OpenForm "تذاكر_ادخال"
Err:
    If Err.Number = 3043 Or Err.Number = 3024 Or Err.Number = 3044 Or Err.Number = 3078 Then
        MsgBox "فشل الاتصال بالسيرفر يرجى ابلاغ المسؤول", vbExclamation, "حالة الاتصال بالشبكة"
        Exit Sub
    End If

عند الاغلاق اوالفتح في الفورم  مع العلم انه لدي 60فورم

اثناء انقطاع الشبكة.rar

قام بنشر

استخدم الدالة التالية :

Private Function TableLinkOkay(strTableName As String) As Boolean
'Function accepts a table name and tests first to determine if linked
'table, then tests link by performing refresh link.
'Error causes TableLinkOkay = False, else TableLinkOkay = True
    Dim CurDB As dao.Database
    Dim tdf As TableDef
    Dim strFieldName As String
    On Error GoTo TableLinkOkayError
    Set CurDB = DBEngine.Workspaces(0).Databases(0)
    Set tdf = CurDB.TableDefs(strTableName)
    TableLinkOkay = True
    If tdf.Connect <> "" Then
        '#BGC updated to be more thorough in checking the link by opening a recordset
        'ACS 10/31/2013 Added brackets to support spaces in table and field names
        strFieldName = CurDB.OpenRecordset("SELECT TOP 1 [" & tdf.Fields(0).Name & "] FROM [" & tdf.Name & "];", dbOpenSnapshot, dbReadOnly).Fields(0).Name  'Do not test if nonlinked table
    End If
    TableLinkOkay = True
TableLinkOkayExit:
    Exit Function
TableLinkOkayError:
    TableLinkOkay = False
    GoTo TableLinkOkayExit
End Function

وتستدعيها بهذه الطريقة :

TableLinkOkay(LinkedTableName)

'داخل () تكتب اسم أحد الجداول المرتبطة وبه يتم فحص الاتصال

وسترجع لك الدالة بـ True  إذا كانت متصلة ، و بـ False إذا كانت غير متصلة ..

وعليها ستبني الأمر الذي تريده ..

قام بنشر

اشكرك اخي 

هل المكان الملون بالاصفر اضع اسم الجدول وهل عند فقد الاتصال ستظهر رسالة؟؟

Private Function TableLinkOkay(strTableName As String) As Boolean
'Function accepts a table name and tests first to determine if linked
'table, then tests link by performing refresh link.
'Error causes TableLinkOkay = False, else TableLinkOkay = True
    Dim CurDB As dao.Database
    Dim tdf As TableDef
    Dim strFieldName As String
    On Error GoTo TableLinkOkayError
    Set CurDB = DBEngine.Workspaces(0).Databases(0)
    Set tdf = CurDB.TableDefs(strTableName)
    TableLinkOkay = True
    If tdf.Connect <> "" Then
        '#BGC updated to be more thorough in checking the link by opening a recordset
        'ACS 10/31/2013 Added brackets to support spaces in table and field names
        strFieldName = CurDB.OpenRecordset("SELECT TOP 1 [" & tdf.Fields(0).Name & "] FROM [" & tdf.Name & "];", dbOpenSnapshot, dbReadOnly).Fields(0).Name  'Do not test if nonlinked table
    End If
    TableLinkOkay = True
TableLinkOkayExit:
    Exit Function
TableLinkOkayError:
    TableLinkOkay = False
    GoTo TableLinkOkayExit
End Function
قام بنشر

تضع اسم الجدول هنا فقط :

 

Private Function TableLinkOkay(strTableName As String) As Boolean

أو عندما تنادي الدالة هكذا :

TableLinkOkay("LinkedTableName")

ويمكنك وضع الكود على حدث عند الفتح لأول نموذج يفتح في قاعدة البيانات ...

أو كما أفضل أن تضعه على ماكرو RunCode وتحفظه بـاسم : Autoexec ليعمل لكل بشكل مباشر عندما تفتح ملف الأكسس .

 

قام بنشر

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

اثناء انقطاع الشبكة.rar

قام بنشر (معدل)

هذا تطبيق على برنامجك :

عند الاتصال :  image.png.efc287f0696f785809d1f82c3f5f5d58.png

وعند انقطاع الاتصال image.png.503e1229158a9ac9da4293b53b490c99.png

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

Public Function Autoexec(TableName As String)
    
On Error GoTo errorHandler
    
    Dim Result As Boolean
    
    Result = TableLinkOkay(TableName)
    
    If Result = True Then
    
        MsgBox "القاعدة متصلة بالجداول"
        'هنا تضع الأوامر التي تريدها إذا كانت القاعدة متصلة كفتح النموذج الرئيسي مثلا
        
    ElseIf Result = False Then
        
        MsgBox "القاعدة غير متصلة بالجداول"
        'هنا تضع الأوامر التي تريدها إذا كانت القاعدة غير متصلة كالخروج من البرنامج مثلا أو إعادة الإتصال
    
    End If


AutoexecOutDone:
    Exit Function
errorHandler:
    MsgBox "Error #" & Err.Number & ": " & Err.Description, vbCritical
    Resume AutoexecOutDone


End Function

في الموديول التالي :

image.png.1bbd0fb595d5464bcd459a2228e944be.png

ولتغيير اسم الجدول المراد فحصه تفتح ماكروا ال Autoexec  في وضع التصميم وتغير اسم الجدول من هنا

image.png.96d0e89f64d8442c2f8b8444185e516d.png

 

اثناء انقطاع الشبكة.rar

تم تعديل بواسطه Moosak
قام بنشر
1 دقيقه مضت, ابو جودي said:

وهذا موضوع أ=آخر

 

المدير الجديد يتكلم .. 😄

شرفت وآنست 😁

  • Haha 1
قام بنشر
11 ساعات مضت, ahmus said:

بارك الله فيكم جمبعا

اللهم آمين .. وإياكم

أخي @ahmus  لا تنسى التأشير على أفضل إجابة لتسهل على الآخرين الوصول إليها  🙂 

قام بنشر (معدل)

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

ربما انا اخطات في وضع الاكواد اتمنى مساعدتي بالملف المرفق ووضعها في مكانها .

اثناء انقطاع الشبكة_2.rar

تم تعديل بواسطه ahmus
قام بنشر (معدل)

تم التطبيق على ملفاتك أخي @ahmus 

في حال الاتصال يفتح لك النموذج الرئيسي على طول .

وفي حال عدم الاتصال يظهر لك :

image.png.abf84f9f2bca8858e0187cd222ab2c75.png

لا : يغلق لك البرنامج .

نعم: يفتح لك مستعرض الملفات وتختار منه ملف الجداول :

image.png.70fa2e626266b38bd516afaa196a85a9.png

ثم بعدها تظهر لك رسالة النجاح ... ويفتح لك النموذج الرئيسي :

image.png.f7a48ebfcc2975986b0cb6622edb96f1.png

 

اثناء انقطاع الشبكة - 3.rar

تم تعديل بواسطه Moosak
  • Like 1
قام بنشر (معدل)

السلام عليكم 

اشكرك  Moosak   فعلا الدالة تعمل عند بداية الدخول للبرنامج لكن ليس هذا ما اريد 

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

او حل اخر دالة لكل الفورمات توقف ظهور جميع رسائل الخطأ  نهائيا ومهما كان الخطأ مع العلم انه يوجد لدي اكثر من 60 فورم ولا اريد وضع الكود فيهم

ولك الشكر

تم تعديل بواسطه ahmus
قام بنشر
41 دقائق مضت, ahmus said:

السلام عليكم 

اشكرك  Moosak   فعلا الدالة تعمل عند بداية الدخول للبرنامج لكن ليس هذا ما اريد 

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

او حل اخر دالة لكل الفورمات توقف ظهور جميع رسائل الخطأ  نهائيا ومهما كان الخطأ مع العلم انه يوجد لدي اكثر من 60 فورم ولا اريد وضع الكود فيهم

ولك الشكر

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

للأسف ليس لدي فكرة عن ما تريده ..

  • Like 1
قام بنشر

مشاركه مع اخوانى واساتذتى جزاهم الله كل خير

لدى سؤال استاذ @ahmus ماهو نوع الشبكه الذى تقصده هل هى LAN ام WAN للبحث معكم

وهل اطلعت على المواضيع الذى وضعها لك اخى واستاذى ابوجودى وبالاخص الموضوع التالى

لانى قمت بتجربته وعند تغيير الايبى بالجدول الى اى ايبى آخر وغلق الجدول يخرج من قاعده البيانات بعد 10 ثوانى

بالتوفيق

قام بنشر

اخي الفلاحجى اشكرك 

جربت ماذكرت فهي تعمل عند تغيير الاي بي اما عندمااكون اعمل عى فورم معين وينقطع الاتصال فلا ينجح معي 

  • أفضل إجابة
قام بنشر
2 دقائق مضت, ahmus said:

جربت ماذكرت فهي تعمل عند تغيير الاي بي اما عندمااكون اعمل عى فورم معين وينقطع الاتصال فلا ينجح معي 

الشكر لله ثم لاخواننا واساتذتنا جزاهم الله خيرا

مهو تغيير الايبى يعنى انقطع الاتصال

موضحتش

15 ساعات مضت, الفلاحجى said:

ماهو نوع الشبكه الذى تقصده هل هى LAN ام WAN للبحث معكم

 

قام بنشر
2 دقائق مضت, ahmus said:

نوع الشبكة LAN 

طيب جميل يبقى مثال اخى واستاذى العزيز ابو جودى هيلبى طلبك

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

لان البرنامج بيشيك على الايبى طول مالبرنامج شغال ولاحظ رد اخى العزيز ابوجودى

النقطه رقم 2

في 23‏/12‏/2020 at 01:32, ابو جودي said:

اتفضل :fff:

بعد التجربة والتأكد من ان هذا مرادك 

انقل كل شئ الى قاعدتك ونفذ الاتى 

1- التأكد من ادخال ip  الخاص بالجهاز الرئيسى على الشكة فى الجدول  tblSecurityIP

2- اجعل النموذج  frmChkCon  نموذج فرعى فى اى نموذج تحب لاغلاق القاعدة عند فقد الاتصال ب ip  الجهاز الرئيسى على الشكة

يعنى ممكن تضيفه كنموذج فرعى للنموذج الرئيسى بتاعك لو مفتوح دايما فالبرنامج

او اجعل هذا النموذج فردى كما هو واجعله مفتوح ومخفى دائما طول فتره عمل البرنامج

بالتوفيق

  • Like 2
قام بنشر (معدل)

التحقق من اي بي الشبكة.rarلدي فيديو اوضح فيه مشكلتي  لكن لم استطع ادراجه ؟؟؟

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

التحقق من اي بي الشبكة.rar

0.png

تم تعديل بواسطه ahmus
قام بنشر
10 ساعات مضت, الفلاحجى said:

النقطه رقم 2

في ٢٣‏/١٢‏/٢٠٢٠ at 01:32, ابو جودي said:

اتفضل :fff:

بعد التجربة والتأكد من ان هذا مرادك 

انقل كل شئ الى قاعدتك ونفذ الاتى 

1- التأكد من ادخال ip  الخاص بالجهاز الرئيسى على الشكة فى الجدول  tblSecurityIP

2- اجعل النموذج  frmChkCon  نموذج فرعى فى اى نموذج تحب لاغلاق القاعدة عند فقد الاتصال ب ip  الجهاز الرئيسى على الشكة

Expand  

يعنى ممكن تضيفه كنموذج فرعى للنموذج الرئيسى بتاعك لو مفتوح دايما فالبرنامج

او اجعل هذا النموذج فردى كما هو واجعله مفتوح ومخفى دائما طول فتره عمل البرنامج

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

ولتمام القائدة للجميع 

تم التعامل مع المشكلة لايف ريموت اكسس

لوحظ عدم وجود النموذج frmChkCon  اصلا بالقاعدة 

والقليل من الاكواد التى على بعض النماذج فى الحدث Error والتى لا تثمن ولا تغنى من جوع بيدوا انه تم الدمج بين طريقتين لنفس السبيل

بعد تدارك الموقف وظبط الاكواد كما ينبغى واضافة النماذج اللازمة من المثال الأصلى 

وبعد التجربة 

لوحظ مشكله بعدم اغلاق القاعدة لوجود احد النماذج مفتوحة وبالتالى تم تعليق القاعدة 

تم تلاشى هذه المشكلة باضافة الروتين الاتى ليقوم باغلاق كل شئ اولا :yes:

 

Public Sub Logout()

    Dim F As Access.Form
    Dim i As Long
    
    ' Loop all open forms, from last to first, to avoid problems due to closing forms
    ' (removing them from the Forms collection) in the loop
    For i = Forms.Count - 1 To 0 Step -1
        Set F = Forms(i)
        ' Close all forms except the login form
        If F.Name <> "frmLogin" Then
            DoCmd.Close acForm, F.Name
        End If
    Next i
    
End Sub

 

 

رجاء من الاستاذ @ahmus :fff: فضلا وكرما وليس امرا

ارفاق قاعدة البيانات النهائية بعد التعديلات اللازمة لتعم القائدة على الجميع وشكرا 

  • Like 1
قام بنشر

احسنت اخى ومعلمى العزيز محمد @ابو جودي 💐 وجزاك الله خيرا على تواصلك مع الاخ السائل

8 دقائق مضت, ابو جودي said:

لوحظ عدم وجود النموذج النموذج  frmChkCon  اصلا بالقاعدة 

حسيت بكده لما سالته لذلك ارفقت اقتباس لردك وارفقته ووضحته لينتبه لها

جزاك الله خيرا وان شاء الله فى ميزان حسناتك والشكر موصول للاستاذ موسى جزاه الله خيرا

بالتوفيق اخوانى

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

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information