hane75 قام بنشر مارس 20, 2016 قام بنشر مارس 20, 2016 السلام عليكم اخواني عندي برنامج اكسس عملت له تقسم للبيانات وشغلته على الشبكه وشغال ممتاز وتم ادخال تقريبا 12000 حقل بس واجهتني مشكله ارجو احصل على حل لديكم البرنامج شغال على شبكه من عدة مناطق مربوطه عن طريق واير ليس في الشبكة تعبد المنطقة الواحده عن المركز الرئيسي 30كم الشكله = عندما تقطع الشبكه لا تعطي اشارة للمستخدم ان الشبكة مقطوعة وعند الضغط على زر جديد يقوم بإضافة حقول لا كن فارغة اريد طريقة عند انقطاع الشبكة يقوم بإعلام المستخدم بذلك ارجاء افادتي بالحل مع تفاصيل عمله حتى يسهل علي تركيبه وشكرا
سعيد صواب قام بنشر مارس 20, 2016 قام بنشر مارس 20, 2016 حياك الله اخي الكريم هنا مثال للتحقق من الاتصال بالإنترنت 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 1
سعيد صواب قام بنشر مارس 20, 2016 قام بنشر مارس 20, 2016 بعد التعمق في الموضوع ... هنا يمكن طرح اكثر من سؤال هل تقصد بالشبكة... .الشبكة التي عليها القاعدة الخلفية .. ... ام الاتصال بشبكة الإنترنت ... ام الاتصال بقاعدة البيانات نفسها ولو فرضنا انه لايوجد اي منها .... فستظهر رسالة خطاء .. (( خطاء وقت التنفيذ ... التطبيق يجب اغلاقة )) لا اعلم كيف تتم اضافة حقول فارغة !!! التساؤلات قابله للبحث والنقاش بالتوفيق جميعا
hane75 قام بنشر مارس 21, 2016 الكاتب قام بنشر مارس 21, 2016 شكرا اخوي سعيد صواب اقصد بالشبكه الاتصال بقاعدة البيانات اريد مثلا عمل حقل يعمل خفي يقوم على استحضار اسم معين مثال ( بسم الله الرحمن الرحيم ) موجوده في قاعدة البيانات بشكل متكرر من قاعدة البيانات وقوم بتكرار هذه الطريق كل عدد من الثواني وعد فقد الاتصال بقاعدة البيانات تظهر رساله له ان الاتصال مقطوع حتى يقوم بالتوقف من الادخال اتمنا ان وضحت ما اريد وعمل لي مثال حتى اعرف طريقة توظيفه وعمله واكرر شكري للاستاذ الكبير سعيد صواب
سعيد صواب قام بنشر مارس 21, 2016 قام بنشر مارس 21, 2016 (معدل) حياك الله اخي الكريم اذا كان هذا مطلبك بإمكانك استخدام دالة dlookup او dcount للعلم .. لم يسبق وان جربت هذا الحل بالتوفيق تم تعديل مارس 21, 2016 بواسطه سعيد صواب
jjafferr قام بنشر مارس 21, 2016 قام بنشر مارس 21, 2016 في 3/20/2016 at 10:21, hane75 said: البرنامج شغال على شبكه من عدة مناطق مربوطه عن طريق واير ليس في الشبكة تعبد المنطقة الواحده عن المركز الرئيسي 30كم الشكله = عندما تقطع الشبكه لا تعطي اشارة للمستخدم ان الشبكة مقطوعة وعند الضغط على زر جديد يقوم بإضافة حقول لا كن فارغة اريد طريقة عند انقطاع الشبكة يقوم بإعلام المستخدم بذلك السلام عليكم :) لا يُنصح بإستخدام الاكسس في شبكة وايرلس ، لأن الشبكة حتى لما تعمل بالطريقة الصحيحة ، فإنها تكون متقطعة ، فعليه تكون مشكلة في تواصل البيانات :( احد الطرق اللي ممكن تستعملها هي ، ان تكون نماذجك غير مضمنه / غير مربوطه بجدول او استعلام ، ويكون عندك زر لحفظ البيانات ، وقبل حفظ البيانات في الجدول ، يجب ان تقرأ من الجدول (تقرأ اي شئ ، فقط للتأكد ان الشبكة موجودة) ، وعندها تحفظ البيانات ، الطريقة الاخرى اللي على بالي هي ، ان تكون بياناتك محلية ، وبين كل فترة ، يقوم البرنامج ، وبعد التأكد من وجود الشبكة ، بنقل البيانات الى قاعدة البيانات الاصل :) جعفر 2
سعيد صواب قام بنشر مارس 21, 2016 قام بنشر مارس 21, 2016 (معدل) حياك الله اخي الكريم وهنا تعديل .. وكذلك نستشير فيه الاستاذ جعفر لا يمكن استخدام دالة dlookup او dcount لانه لن نكون على اتصال بالقاعدة بالأصل حتى نتحقق من وجود القيمة او عدمها . الا اذا استخدمنا رقم الخطاء ... بالتوفيق تم تعديل مارس 21, 2016 بواسطه سعيد صواب 1
jjafferr قام بنشر مارس 21, 2016 قام بنشر مارس 21, 2016 17 دقائق مضت, سعيد صواب said: حياك الله اخي الكريم وهنا تعديل .. وكذلك نستشير فيه الاستاذ جعفر لا يمكن استخدام دالة dlookup او dcount لانه لن نكون على اتصال بالقاعدة بالأصل حتى نتحقق من وجود القيمة او عدمها . الا اذا استخدمنا رقم الخطاء ... بالتوفيق هذا الكلام صحيح ، والطريقة الاصح هي استخدام Recordset لقراءة المعلومة ، وهناك كود لربط الواجهة FE بالجداول BE ، اعتقد يمكن استعماله بتغيير بسيط للتأكد من وجود الشبكة :) انا على سفر ولا املك برامجي لوضع مثال :) جعفر وهناك طريقة سهلة وهي عمل ping للكمبيوتر الذي به الجداول ، ومعرفة اذا كان متصل :-) 2
سعيد صواب قام بنشر مارس 21, 2016 قام بنشر مارس 21, 2016 منذ ساعه, سعيد صواب said: الا اذا استخدمنا رقم الخطاء ... هنا مثال ... رأيك استاذ جعفر On Error GoTo myerr Me.ab = Nz(DFirst("fld1", "tbl1"), 0) myerr: If Err.Number = 3024 Then MsgBox "عفوا .. لايوجد اتصال بقاعدة البيانات", vbExclamation, "تنبيـــه" End If رقم الخطاء هذا يقول تعذر العثور على قاعدة البيانات هل تراه حل مناسب شكرا
jjafferr قام بنشر مارس 21, 2016 قام بنشر مارس 21, 2016 انا لا اعرف رقم الخطأ ، ولكن الطريقة صحيحة ، حيث انك تقرأ اي معلومة من اي جدول ، واذا لم تصل المعلومة الى الكود ، فتعرف ان الاتصال انقطع :) طيب واذا في انقطاع ، ماذا يجب على البرنامج عمله ؟؟ انا كان اقتراحي وجود جداول محلية ، وعند وجود الشبكة ، يتم تصدير البيانات :) جعفر 1
سعيد صواب قام بنشر مارس 21, 2016 قام بنشر مارس 21, 2016 54 دقائق مضت, jjafferr said: انا كان اقتراحي وجود جداول محلية ، وعند وجود الشبكة ، يتم تصدير البيانات :) جعفر شكرا لك استاذ حعفر ولكن حتى عند نقل الجداول المحلية .. فهو يحتاج الى التحقق من الاتصال بالقاعدة عند تنفيذ اي اجراء شكرا مرة أخرى
hane75 قام بنشر مارس 22, 2016 الكاتب قام بنشر مارس 22, 2016 استاذ جعفر و سعيد صواب تحيه تطيب لكم على تفاعلكم مع مشكلتي انا لم اصل الى 25% من خبرتكم ولم افهم ما افعله مما قلتم اتمنا ان اجد منكم برنامج صغير تطبيقي استطيع تطبيقه على برنامجي وشكرا
سعيد صواب قام بنشر مارس 22, 2016 قام بنشر مارس 22, 2016 (معدل) 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 : هو اسم الجدول ضع الشرط هذا مثلا ... في حدث الحفظ للبيانات ... بمعنى قبل لا يحفظ البيانات يتأكد ان كان فيه اتصال اولا .. ونرجع لنصيحة الأستاذ جعفر بعدم استخدام الوايرلس .. اذكر جربت الطريقة هذي في مكتب فيه ثلاثة اجهزة لا تبعد عن بعضها المترين .. والشبكة كانت ذات سرعة عالية بين فترة واخرى كان يظهر خطاء بتوقف البرنامج عن العمل ... قمنا بتغييرها الى شبكة محلية عادية. بالتوفيق تم تعديل مارس 22, 2016 بواسطه سعيد صواب 1
jjafferr قام بنشر مارس 23, 2016 قام بنشر مارس 23, 2016 السلام عليكم تذكرت اني في يوم من الايام ساعدت احد الشركات في مشكلة تختلف قليلا عن هذ المشكلة ، وقد عملت كود لهم ، فالرجاء النظر في الكود (سهل) ، ثم عمل شئ مماثل لمشكلتنا التي تنكلم عنها في هذا الموضوع ، والموضوع بإختصار ، هو إعادة محاولة حفظ السجل كل نصف ثانية (ولمدة 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 جعفر 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.