اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

مشكلة في الشبكة ارجو المساعدة


hane75

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

السلام عليكم 

اخواني عندي برنامج اكسس عملت له تقسم للبيانات وشغلته على الشبكه وشغال ممتاز وتم ادخال تقريبا 12000 حقل بس واجهتني مشكله ارجو احصل على حل لديكم 

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

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

اريد طريقة عند انقطاع الشبكة يقوم بإعلام المستخدم بذلك 

ارجاء افادتي بالحل مع تفاصيل عمله حتى يسهل علي تركيبه وشكرا 

 

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

حياك الله اخي الكريم

هنا مثال للتحقق من الاتصال بالإنترنت

Private Declare Function InternetGetConnectedState _
   Lib "wininet.dll" (ByRef dwflags As Long, _
   ByVal dwReserved As Long) As Long
Private Const INTERNET_CONNECTION_MODEM As Long = &H1
Private Const INTERNET_CONNECTION_LAN As Long = &H2
Private Const INTERNET_CONNECTION_PROXY As Long = &H4
Private Const INTERNET_CONNECTION_OFFLINE As Long = &H20


Function IsInternetConnected() As Boolean
    Dim L As Long
    Dim R As Long
    R = InternetGetConnectedState(L, 0&)
    If R = 0 Then
        IsInternetConnected = False
    Else
        If R <= 4 Then
            IsInternetConnected = True
        Else
            IsInternetConnected = False
        End If
    End If
End Function

في المرفق تطبيق للمثال 

بالتوفيق

التحقق من الاتصال بالإنترنت.rar

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

بعد التعمق في الموضوع ...  

هنا يمكن طرح اكثر من سؤال

هل تقصد بالشبكة... .الشبكة التي عليها القاعدة الخلفية .. ... ام الاتصال  بشبكة الإنترنت ... ام الاتصال بقاعدة البيانات نفسها

ولو فرضنا انه لايوجد اي منها .... فستظهر رسالة خطاء .. (( خطاء وقت التنفيذ ... التطبيق يجب اغلاقة ))

لا اعلم كيف تتم اضافة حقول فارغة !!!

التساؤلات قابله للبحث والنقاش 

بالتوفيق جميعا

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

شكرا اخوي سعيد صواب

اقصد بالشبكه الاتصال بقاعدة البيانات 

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

وعد فقد الاتصال بقاعدة البيانات تظهر رساله له ان الاتصال مقطوع حتى يقوم بالتوقف من الادخال  

اتمنا ان وضحت ما اريد 

وعمل لي مثال حتى اعرف طريقة توظيفه وعمله 

واكرر شكري للاستاذ الكبير سعيد صواب 

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

حياك الله اخي الكريم

اذا كان هذا مطلبك بإمكانك استخدام دالة dlookup او dcount 

للعلم .. لم يسبق وان جربت هذا الحل

بالتوفيق

تم تعديل بواسطه سعيد صواب
رابط هذا التعليق
شارك

في 3/20/2016 at 10:21, hane75 said:

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

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

اريد طريقة عند انقطاع الشبكة يقوم بإعلام المستخدم بذلك

السلام عليكم :)

 

لا يُنصح بإستخدام الاكسس في شبكة وايرلس ، لأن الشبكة حتى لما تعمل بالطريقة الصحيحة ، فإنها تكون متقطعة ، فعليه تكون مشكلة في تواصل البيانات :(

 

احد الطرق اللي ممكن تستعملها هي ، ان تكون نماذجك غير مضمنه / غير مربوطه بجدول او استعلام ، ويكون عندك زر لحفظ البيانات ،

وقبل حفظ البيانات في الجدول ، يجب ان تقرأ من الجدول (تقرأ اي شئ ، فقط للتأكد ان الشبكة موجودة) ، وعندها تحفظ البيانات ، 

 

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

 

جعفر

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

حياك الله اخي الكريم

وهنا تعديل .. وكذلك نستشير فيه الاستاذ جعفر

لا يمكن استخدام دالة dlookup او dcount 

لانه لن نكون على اتصال بالقاعدة بالأصل حتى نتحقق من وجود القيمة او عدمها .

الا اذا استخدمنا رقم الخطاء ...

 

بالتوفيق

تم تعديل بواسطه سعيد صواب
  • Like 1
رابط هذا التعليق
شارك

17 دقائق مضت, سعيد صواب said:

حياك الله اخي الكريم

وهنا تعديل .. وكذلك نستشير فيه الاستاذ جعفر

لا يمكن استخدام دالة dlookup او dcount 

لانه لن نكون على اتصال بالقاعدة بالأصل حتى نتحقق من وجود القيمة او عدمها .

الا اذا استخدمنا رقم الخطاء ...

 

بالتوفيق

هذا الكلام صحيح ، والطريقة الاصح هي استخدام Recordset لقراءة المعلومة ،

وهناك كود لربط الواجهة FE بالجداول BE ، اعتقد يمكن استعماله بتغيير بسيط للتأكد من وجود الشبكة :)

 

انا على سفر ولا املك برامجي لوضع مثال :)

 

جعفر

وهناك طريقة سهلة وهي عمل ping للكمبيوتر الذي به الجداول ، ومعرفة اذا كان متصل :-)

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

منذ ساعه, سعيد صواب said:

الا اذا استخدمنا رقم الخطاء ...

هنا مثال ... رأيك استاذ جعفر

On Error GoTo myerr
Me.ab = Nz(DFirst("fld1", "tbl1"), 0)

myerr:
If Err.Number = 3024 Then
MsgBox "عفوا .. لايوجد اتصال بقاعدة البيانات", vbExclamation, "تنبيـــه"
End If

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

هل تراه حل مناسب 

شكرا 

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

انا لا اعرف رقم الخطأ ، 

ولكن الطريقة صحيحة ، حيث انك تقرأ اي معلومة من اي جدول ، واذا لم تصل المعلومة الى الكود ، فتعرف ان الاتصال انقطع :)

طيب واذا في انقطاع ، ماذا يجب على البرنامج عمله ؟؟

انا كان اقتراحي وجود جداول محلية ، وعند وجود الشبكة ، يتم تصدير البيانات :)

 

 

جعفر

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

54 دقائق مضت, jjafferr said:

انا كان اقتراحي وجود جداول محلية ، وعند وجود الشبكة ، يتم تصدير البيانات :)

جعفر

شكرا لك استاذ حعفر 

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

شكرا مرة أخرى

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

استاذ جعفر و سعيد صواب

تحيه تطيب لكم على تفاعلكم مع مشكلتي 

انا لم اصل الى 25% من خبرتكم 

ولم افهم ما افعله مما قلتم 

اتمنا ان اجد منكم برنامج صغير تطبيقي استطيع تطبيقه على برنامجي

وشكرا 

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

3 ساعات مضت, jjafferr said:

البركة في سعيد :)

البركة فيك استاذ جعفر 

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

On Error GoTo myerr
Me.ab = Nz(DFirst("fld1", "tbl1"), 0)

myerr:
If Err.Number = 3024 Then
MsgBox "عفوا .. لايوجد اتصال بقاعدة البيانات", vbExclamation, "تنبيـــه"
End If

ab : هو مربع نص يكون في النموذج لديك مثلا.

fld1: هو اسم الحقل من داخل الجدول

tbl1 : هو اسم الجدول

ضع الشرط هذا مثلا ... في حدث الحفظ للبيانات ... بمعنى قبل لا يحفظ البيانات يتأكد ان كان فيه اتصال اولا ..

 

ونرجع لنصيحة الأستاذ جعفر بعدم استخدام الوايرلس ..

اذكر جربت الطريقة هذي في مكتب فيه ثلاثة اجهزة لا تبعد عن بعضها المترين .. والشبكة كانت ذات سرعة عالية 

بين فترة واخرى كان يظهر خطاء بتوقف البرنامج عن العمل  ... قمنا بتغييرها الى شبكة محلية عادية.

 

بالتوفيق

 

تم تعديل بواسطه سعيد صواب
  • Like 1
رابط هذا التعليق
شارك

السلام عليكم :rol:

 

تذكرت اني في يوم من الايام ساعدت احد الشركات في مشكلة تختلف قليلا عن هذ المشكلة ،

وقد عملت كود لهم ، فالرجاء النظر في الكود (سهل) ، ثم عمل شئ مماثل لمشكلتنا التي تنكلم عنها في هذا الموضوع ،

والموضوع بإختصار ، هو إعادة محاولة حفظ السجل كل نصف ثانية (ولمدة 20 ثانية) (والمفروض ان قطع الاتصال يأخذ أقل من هذا):


Private Sub Form_BeforeUpdate(cancel As Integer)
On Error GoTo err_Form_BeforeUpdate


    Dim a, msg As String
    Dim mTries, nTries As Integer
    Dim PauseTime, Start As Double
    
    
'MsgBox "Before update"

TryAgain3:
    DoCmd.RunCommand acCmdSaveRecord
    
    
Exit Sub
err_Form_BeforeUpdate:

    If Err.Number = 3218 Or Err.Number = 3261 Then
        'Could not update; currently locked
        'show the user a busy mouse cursor, which indicates the system is busy
        DoCmd.Hourglass True

        'Maximum allowed tries (seconds)
        mTries = 20
        
        'how many times did we try
        nTries = nTries + 1
        
        'give up if the number of tries equals the maximum allowable tries
        If mTries = nTries + 1 Then
            msg = "The table Phone_Data seems to be busy," & vbCrLf & _
                  "Do you want to try again?"
            If MsgBox(msg, vbYesNo + vbDefaultButton1, "Process taking too long") = vbYes Then
                nTries = 1
                
            Else
                DoCmd.Hourglass False
                a = SysCmd(acSysCmdSetStatus, "Ready")
                Exit Sub
            End If
            
        End If
        
            'pause 1 second
            'PauseTime = 1    ' Set duration.
            PauseTime = 0.5    ' Set duration.
            Start = Timer    ' Set start time.
            Do While Timer < Start + PauseTime
                DoEvents    ' Yield to other processes.
            Loop
        
            a = SysCmd(acSysCmdSetStatus, "Table is busy, number of tries = " & nTries & " of " & mTries)
            
            'ignore the error this time, and start again
            Resume TryAgain3
    
    ElseIf Err.Number = 2115 Then
        'complaints about the SaveRecord command, ignor
'version 5:
'We have to know the error number of the error message
'commented the line below,
'added 4 lines
'commented the endif

        'Resume Next
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
    End If
    Resume Next
    'End If
            

End Sub

 

جعفر

  • 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 اعضاء متواجدين الان

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

Important Information