ازهر عبد العزيز قام بنشر يناير 16, 2023 قام بنشر يناير 16, 2023 السبلم عليكم لدي هذا الكود للبحث داخل النموذج DoCmd.FindRecord Me.booknamex, acEntire, False, , True, acCurrent, True المشكلة اذا لم يكن هناك بيانات في النموذج تظهر لي رسالة بالخطا 2137 ارجو منكم المساعدة
ابو جودي قام بنشر يناير 16, 2023 قام بنشر يناير 16, 2023 17 دقائق مضت, ازهر عبد العزيز said: السبلم عليكم لدي هذا الكود للبحث داخل النموذج DoCmd.FindRecord Me.booknamex, acEntire, False, , True, acCurrent, True المشكلة اذا لم يكن هناك بيانات في النموذج تظهر لي رسالة بالخطا 2137 ارجو منكم المساعدة ممكن مرفق من قاعدتك لو تكرمت ؟ 1
أفضل إجابة kkhalifa1960 قام بنشر يناير 16, 2023 أفضل إجابة قام بنشر يناير 16, 2023 ضع أول سطر (On Error Resume Next) 1
ابو جودي قام بنشر يناير 16, 2023 قام بنشر يناير 16, 2023 9 دقائق مضت, kkhalifa1960 said: ضع أول سطر (On Error Resume Next) طبعا سوف يتم تفادى المشكلة باستخدام هذا السطر ولكن لا احبذ استخدامه لانه سوف يتفادى اى خطا أخر غير ذلك وان كانت هناك مشكلة أخرى لن يستطيع المصم معرفة سبب المشكلة بسبب هذا السطر لذلك الافضل استخدام ErrorHandler ولذلك طلبت المرفق وعلى كل حال handler syntax error يكون بالشكل الاتى On Error GoTo ErrorHandler ' Insert code that might generate an error here Exit Sub or Exit Function ErrorHandler: ' Insert code to handle the error here Resume Next 2
ازهر عبد العزيز قام بنشر يناير 16, 2023 الكاتب قام بنشر يناير 16, 2023 23 دقائق مضت, ابو جودي said: طبعا سوف يتم تفادى المشكلة باستخدام هذا السطر ولكن لا احبذ استخدامه لانه سوف يتفادى اى خطا أخر غير ذلك وان كانت هناك مشكلة أخرى لن يستطيع المصم معرفة سبب المشكلة بسبب هذا السطر لذلك الافضل استخدام ErrorHandler ولذلك طلبت المرفق وعلى كل حال handler syntax error يكون بالشكل الاتى جزيل الشكر للاستاذ المبدع @ابو جودي
ابو جودي قام بنشر يناير 16, 2023 قام بنشر يناير 16, 2023 4 دقائق مضت, ازهر عبد العزيز said: جزيل الشكر @ابو جودي الشكر والفضل لله سبحانه وتعالى ثم لاساذتى الكرام الذين اتعلم على ايديهم.. جزاكم الله خيرا ان تعذر عليكم تطبيق كود تصيد الأخطاء ضع مرفقكم اخى الحبيب ليتم التعديل بكتابة الكود المناسب
jjafferr قام بنشر يناير 16, 2023 قام بنشر يناير 16, 2023 السلام عليكم 🙂 ومال سرعة 🙂 on error goto err_Handler DoCmd.FindRecord Me.booknamex, acEntire, False, , True, acCurrent, True .. Exit_Handler: Exit sub err_Handler: if err.number=2137 then msgbox "يا رجال حست وحست وما لقيت بو تدور عليه" resume next else msgbox err.number & vbcrlf & err.description resume Exit_Handler endif جعفر 1
ازهر عبد العزيز قام بنشر يناير 16, 2023 الكاتب قام بنشر يناير 16, 2023 7 دقائق مضت, jjafferr said: msgbox "يا رجال حست وحست وما لقيت بو تدور عليه" ههههههه يعجز اللسان عن الشكر
ابو جودي قام بنشر يناير 16, 2023 قام بنشر يناير 16, 2023 بارك الله فى استاذى الجليل ومعلمى القدير و والدى الحبيب الاستاذ @jjafferr انا وضعت بناء الكود اجمالا ومعلمى الجليل وضعه تفصيلا على تلك الحالة خصيصا وبناء الكود خصيصا لتلك الحالة يمكن استخدامة بهذا الشكل كذلك باستخدام Select Case لانى احب استخدامها اكثر من استخدام IF On Error GoTo ErrorHandler DoCmd.FindRecord Me.booknamex, acEntire, False, , True, acCurrent, True ExitHandler: Exit Sub ErrorHandler: Select Case Err.Number Case Is = 2137 MsgBox "يا رجال حست وحست وما لقيت بو تدور عليه" Resume Next Case Else MsgBox "Error Number : " & Err.Number & vbNewLine & "Error Description : " & Err.Description Resume ExitHandler End Select طبعا تستخدم Exit Function أو Exit Sub حسب الكود
jjafferr قام بنشر يناير 16, 2023 قام بنشر يناير 16, 2023 11 دقائق مضت, ابو جودي said: Select Case لانى احب استخدامها اكثر من استخدام IF واقعا ، المحترفين يستخدمون Select case 🙂 2
ابو جودي قام بنشر يناير 16, 2023 قام بنشر يناير 16, 2023 2 دقائق مضت, jjafferr said: واقعا ، المحترفين يستخدمون Select case 🙂 وهذه ثمار ان نتعلم على يد اساتذة محترفون اسأل الله تعالى لكل اساتذتى الكرام ولكل المسلمين والمسلمات والمؤمنين والمؤمنات البركة فى العمر والعلم والعمل و نوراً فى القلب وضياءً فى الوجه وسعة فى الرزق وصلاحاً يتبعه نجاحاً وفلاحاً ان شاء الله 41 دقائق مضت, jjafferr said: msgbox "يا رجال حست وحست وما لقيت بو تدور عليه" أدامكم الله روح طيبة تسكن القلوب .. ووجه باسم ترتاح له العيون .. ونفس مطمئنة تمتلك النفوس .. وأسأله عز وجل أن يعطيكم من عطــاياه ويمنحكم عفوه ورضاه ويغفر لكم من عمركم ما مضى ويقدر لكم الخير فيما أتى .. وأن يجعل السعادة رفيقتكم في الدنيا والآخره.. اللهم آمين. 1
متقاعد قام بنشر يناير 16, 2023 قام بنشر يناير 16, 2023 1 ساعه مضت, jjafferr said: msgbox "يا رجال حست وحست وما لقيت بو تدور عليه" اعتقد ان هذا الخطأ يكون في حالة عدم وجود بيانات وليس بسبب عدم وجود ما يوافق نتيجة البحث لكون اسلوب عمل الامر FindRecord لايعود برسالة في حالة وجود او عدم وجود قيمة في السجلات تطابق ماتم البحث عنه وتظهر عادة في عدم وجود بيانات في الجدول مصدر النموذج في حالة اننا غيرنا في خصائص النموذج الى ادخال بيانات : نعم في حالة مصدر البيانات استعلام بمعيار غير متوفر في حالة تنفيذ الامر بعد تنفيذ الفلترة في حالة عدم توفر بيانات توافق معيار الفلتر ونفذنا الامر FindRecord قبل ان نلغي الفلترة في حالة فتح النموذج في وضع اضافة بيانات ⬇️ DoCmd.OpenForm "form_name", , , , acFormAdd ربما تكون هذه ابرز حالات ظهور الخطا رقم 2137 مع الامر FindRecord والله اعلم مع تأييدي لرأي الاساتذه جعفر ومحمد تحياتي 2
Ezril قام بنشر يناير 17, 2023 قام بنشر يناير 17, 2023 (معدل) مع كبيرنا الاستاذ jjafferr اعتقد اذا كانت السجلات فارغة لا توجد بيانات تظهر ر رسالة خطأ استخدم الكود Me.J من حقل تجميع =count("*") dim j as string or long j = me. j. value if j=0 then msgbox "اذا تستعمل رسالة عند خطأ تكن فريده اذا كان اكثر من جدول في نموذج.. زود 1مثال" ،!، "" On Error GoTo ErrorHandler1 حتى لا تتضارب الاخطاء ببعض اظن ان نادر استخدام عند الخطأ حسب الغرض exit sub else DoCmd.FindRecord Me.booknamex, acEntire, False, , True, acCurrent, True end if من حقل تجميع Me.J =count("*") dim j as string or long j = me.j.value if j=0 then msgbox "اذا تستعمل رسالة عند خطأ تكن فريده اذا كان اكثر من جدول في نموذج.. زود 1مثال" ،!، "" 'On Error GoTo ErrorHandler1 حتى لا تتضارب الاخطاء ببعض اظن ان نادر استخدام عند الخطأ حسب الغرض exit sub else DoCmd.FindRecord Me.booknamex, acEntire, False, , True, acCurrent, True end if تم تعديل يناير 17, 2023 بواسطه jjafferr لتنسيق الكود: استعمال <> القائمة ، ووضع الكود في نافذته 2
jjafferr قام بنشر يناير 17, 2023 قام بنشر يناير 17, 2023 السلام عليكم اخي Ezril 🙂 ومرحبا بك بيننا مرة اخرى 🙂 للإستفادة من المنتدى ، رجاء قراءة قوانين المنتدى: اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة ورجاء ، عند وضع كود ، اتبع الخطوات التالية ، حتى يكون الكود مقروء بطريقة صحيحة : . ثم الصق الكود في النافذة التالية . جعفر 1
AbuuAhmed قام بنشر يناير 17, 2023 قام بنشر يناير 17, 2023 أنا ضد المفاضلة بين: On Error Resume Next و On Error GoTo وضد المفاضلة بين: If و Select Case فكثير من الأحيان يمكننا الخيار بينهم ولكن كثرة الممارسة سوف نكشف لنا أحيانا أننا مجبرين على اختيار محدد. كما أن اخنيار أحد الخيارين لا يدل على الخبرة ولا الاحتراف. احترم رأيكم وهذا رأيي المستقل وهو غير ملزم لأحد. تذكرت أن هناك فرق السرعة لصالح Select Case عند تعدد القيم (من نوع واحد) وكثرة الأحتمالات حيث لا يتم اختبار القيم السابقة بل يكون الاختيار للقيمة المطلوبة مباشرة بعكس الـ If فهي ستعمل اختبارات للخيارات التي تسبق القيمة المطلوبة وربما للقيم جميعها (تحتاج إلى دراسة). 1
jjafferr قام بنشر يناير 17, 2023 قام بنشر يناير 17, 2023 العفو اخوي ابو احمد ، كلامك صحيح وفي محله ، فهي ليست مفاضلة ، وانما لكل طريقة مكانها 🙂 والامر iif هو الذي يختبر جميع قيم الامر ، وليس if 🙂 جعفر 1
متقاعد قام بنشر يناير 17, 2023 قام بنشر يناير 17, 2023 17 دقائق مضت, AbuuAhmed said: فكثير من الأحيان يمكننا الخيار بينهم ولكن كثرة الممارسة سوف نكشف لنا أحيانا أننا مجبرين على اختيار محدد. اتفق معك ان هناك حالات نكون مجبرين على اختيار محدد ولكن البعض يعتقد ان On Error Resume Next حل لكل رسالة خطا فتجد ان البعض يستخدمه دون معرف سبب الخطا ودون ان يكلف نفسه عناء البحث عن السبب في 16/1/2023 at 18:42, ابو جودي said: لانه سوف يتفادى اى خطا أخر غير ذلك وان كانت هناك مشكلة أخرى لن يستطيع المصم معرفة سبب المشكلة بسبب هذا السطر
AbuuAhmed قام بنشر يناير 17, 2023 قام بنشر يناير 17, 2023 16 دقائق مضت, jjafferr said: والامر iif هو الذي يختبر جميع قيم الامر ، وليس if أنا أقصد عبارة if وليس دالة IIF 10 دقائق مضت, مبرمج متقاعد said: فتجد ان البعض يستخدمه دون معرف سبب الخطا ودون ان يكلف نفسه عناء البحث عن السبب هذه مشكلة البعض 🙂 من غير الخبراء/المحترفين ولكن من يعلم التعامل معهما سوف يستعمل Resume Next أكثر فأكثر الأحيان لا يهم نوع الخطأ كثر ما يهم أن هناك خطأ أو لا وفي حالة معرفة التفاصيل وعمل معالجة لها وإعطاء رسائل بها فبالتأكيد يفضل استخدام GoTo. مع أن Resume Next تستطيع القيام بهذه المهمة أحيانا.
AbuuAhmed قام بنشر يناير 17, 2023 قام بنشر يناير 17, 2023 عملت دراسة لسلوك If و Case وظهر لي أن الإثنين يقومان باختبار/فحص القيم/الخيارات من البداية حتى القيمة المطلوبة. وهذه أول مرة أختبر فيها هذا الأمر في الـ vba ولكن كنت قد عملت هذه التجربة في لغة أخرى قديمة وكانت كما قلت لكم سابقا أن استخدام Case كان لا يعمل فحص من البداية بل يذهب مباشرة للقيمة المطلوبة. للإختبار لا تغطوا Run بل استخدموا زر F8 واستمروا بالضغط المتقطع حتى النهاية. If_and_Case_01.accdb 2
AbuuAhmed قام بنشر يناير 18, 2023 قام بنشر يناير 18, 2023 (معدل) هذا موضوع به مقارنة عبارة If مع عبارة switch في لغة C وهو نفس التعبير في بعض اللغات مثل Case/which/when اللغة التي كنت استخدمها تسلك نفس سلوك لغة سي. في الرد الأول فكرة الوصول السريع والقفز مباشرة للقيمة المطلوبة. .net - Is there any significant difference between using if/else and switch-case in C#? - Stack Overflow تم تعديل يناير 18, 2023 بواسطه AbuuAhmed
ازهر عبد العزيز قام بنشر يناير 18, 2023 الكاتب قام بنشر يناير 18, 2023 17 ساعات مضت, AbuuAhmed said: أنا ضد المفاضلة بين: On Error Resume Next و On Error GoTo اعتقد ان الاساتذه هنا لايستخدمون اي واحدة من هذة في برامجهم ولكن لتسهيل الامر على السائل لانهم لابعرفون طبيعت برنامجه والدليل ما اشار به الاستاذ جعفر في مكان سابق بانة في احد برامجه اضظر لااستخدام هذة الطريقة لكنه رجع ووجد الخطا وانا عملت بنصيحته وبحثت ووجدت طريقة واستخدمت الكود التالي في بداية الحدث وتم حل المشكلة اضغه هنا لكي يستفاد الاعضاء الاخرين If Fbookmain.Form.RecordsetClone.RecordCount = 0 Then
AbuuAhmed قام بنشر يناير 18, 2023 قام بنشر يناير 18, 2023 (معدل) @ازهر عبد العزيز لا تقلق ، هو نقاش علمي عرضي أتى بدون تخطيط ويحدث كثيرا وهو بين أخوة وأعزاء وزملاء ، فمثل هذه النقاشات تزيد من المعرفة والخبرة وتدفعنا للمزيد من التجارب والمقارنات والوصول إلى أفضل الحلول وبجودة عالية ، وتصب في النهاية لصالح الجميع وبالخصوص السائلين ، وهي بلا شك أفضل من المداراة والمجاملات غير المثمرة. تم تعديل يناير 18, 2023 بواسطه AbuuAhmed
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.