sandanet قام بنشر مارس 26, 2016 قام بنشر مارس 26, 2016 السلام عليكم ورحمة الله تعالى وبركاته أما بعد .. اساتذتي الكرام في المرفق مثال عن كيفية حذف السجلات من جدول leave عند تواجدها في جدول record بنفس التاريخ هنالك مشكلة في كود الحذف ارجو الاطلاع عليه تحياتي New Microsoft Office Access Application.zip
سعيد صواب قام بنشر مارس 26, 2016 قام بنشر مارس 26, 2016 عليكم السلام والرحمة جرب هذا السطر وقم بتغيير الحقل date الى مسمى اخر لأنه من الكلمات المحجوزة في المثال انا غيرته الى ddate DoCmd.RunSQL "DELETE leave.* FROM leave WHERE d IN ( SELECT ddate FROM record)" بالتوفيق 3
jjafferr قام بنشر مارس 26, 2016 قام بنشر مارس 26, 2016 وجرب هذا الكود ايضا CurrentDb.Execute ("DELETE DISTINCTROW leave.* FROM leave INNER JOIN record ON leave.d = record.Date") 8 دقائق مضت, سعيد صواب said: عليكم السلام والرحمة جرب هذا السطر وقم بتغيير الحقل date الى مسمى اخر لأنه من الكلمات المحجوزة في المثال انا غيرته الى ddate DoCmd.RunSQL "DELETE leave.* FROM leave WHERE d IN ( SELECT ddate FROM record)" بالتوفيق كلام صحيح ، وهذا ينطبق على الحقل name كذلك ولكن للتخلص من هذه المشكلة ، ضع الحقل بين قوسين مربعين ، بهذه الطريقة يعرف الاكسس انه حقل docmd.runsql "DELETE leave.* FROM leave WHERE d IN (SELECT [date] FROM record)" جعفر 2
سعيد صواب قام بنشر مارس 26, 2016 قام بنشر مارس 26, 2016 5 دقائق مضت, jjafferr said: وجرب هذا الكود ايضا CurrentDb.Execute ("DELETE DISTINCTROW leave.* FROM leave INNER JOIN record ON leave.d = record.Date") جعفر كلام صحيح ، وهذا ينطبق على الحقل name كذلك ولكن للتخلص من هذه المشكلة ، ضع الحقل بين قوسين مربعين ، بهذه الطريقة يعرف الاكسس انه حقل docmd.runsql "DELETE leave.* FROM leave WHERE d IN (SELECT [date] FROM record)" جعفر جزاك الله خير استاذ جعفر والأفضل ان نتخلص من المشكة من اساسها ولا نستخدم الكلمات المحجوزة . شكرا 1
sandanet قام بنشر مارس 27, 2016 الكاتب قام بنشر مارس 27, 2016 اشكركم جزيل الشكر اساتذتي الكرام على معلوماتكم القيمة هذه وهنا احب ان استفسر منكم على بعض النقاط 1. بالنسبة لكود الأخ سعيد docmd.runsql "DELETE leave.* FROM leave WHERE d IN (SELECT [date] FROM record)" كيف يتم اضافة شرط اخر مثلاً الاسم في الجدول الاول = الاسم في الجدول الثاني بالاضافة الى الشرط السابق؟ 2. ماهو الفرق بين الكودين من الناحية العلمية (كود الاستاذ سعيد وكود الاستاذ جعفر) اي لماذا الاول يستخدم عبارة sql بينما الكود الثاني يستخدم CurrentDb.Execute 3. كيف يتم انشاء كود الاستاذ جعفر؟ اي من اين جائت عباة INNER JOIN ارجو منكم توضيح تلك النقاط وبارك الله فيكم على مجهوداتكم الرائعة
jjafferr قام بنشر مارس 27, 2016 قام بنشر مارس 27, 2016 وعليكم السلام 3. انا درايتي بـ SQL قليلة ، لذا دائما استعين بالاستعلام لعمل SQL لي ، هنا ترى كيف حصلت على الكود الاصل ، وسترى في النهاية كيفية إضافة شرط اخر مثلاً الاسم في الجدول الاول = الاسم في الجدول الثاني بالاضافة الى الشرط السابق: . 2. الطريقة الافضل لعمل الكود ، هو معرفة الخطأ الذي يمكن ان ينتج اذا كان في الكود خطأ ، لذا docmd.runsql سيعطيك رسائل انذار ، ورسائل خطأ اذا وُجدت ، ولما كل شئ يكون تمام ، فانت لا تريد المستخدم ان يرى هذه الرسائل ، لذا تطلب من الاكسس عدم إظهار هذه الرسائل: docmd.setwarnings false docmd.runsql docmd.setwarnings true بينما currentdb.execute تُنفذ الامر ، واذا في اخطاء ، فإنك لا تراها ، لذا يجب ان لا تستخدمها إلا بعد التأكد ان الكود يعمل كما يجب وبدون رسائل خطأ 1. الظاهر ان اخي سعيد بارع في SQL ، فاعطاك الحل باستعلام فرعي ، وإضافة شرط جديد معناه إضافة استعلام فرعي آخر ، يعني عندك استعلامك الرئيسي واستعلامين: . جعفر 2
sandanet قام بنشر مارس 27, 2016 الكاتب قام بنشر مارس 27, 2016 ماشاء الله عليك أستاذي الكريم جعفر شرح ولا اروع بارك الله فيك
jjafferr قام بنشر مارس 27, 2016 قام بنشر مارس 27, 2016 حياك الله وتكملة لما قلته: في الكود ، فهناك الكثير من المبرمجين يستخدمون On Error Resume Next وهذا معناه ، ان الكود سيواصل العمل عند حصوله على خطأ (وطبعا النتيجة قد تكون خطأ) ، لذا ، وعند عمل الكود ، يجب ان نعرف رقم الخطأ ، ونصطاده ، ونطلب من الكود اعطاء بقية الاخطاء ، إن وُجدت مثل الكود التالي ، يصطاد الخطأ رقم 2501 فنحن لا نستطيع حفظ ملف ، اذا كانت نسخة اخرى منه بنفس الاسم مفتوحة ، فنعطي رسالة للمستخدم بإغلاق الملف ، اما اذا لم توجد سجلات ، ورقم الخطأ هنا 3021 ، فنقول للكود ، لا تبالي ، وانتقل لتنفيذ السطر التالي من الكود ، وذلك بالامر Resume Next : Private Sub cmd_rpt_pdf_close_Click() On Error GoTo err_cmd_rpt_pdf_close_Click DoCmd.Hourglass True ....... DoCmd.Hourglass False Exit Sub err_cmd_rpt_pdf_close_Click: If Err.Number = 2501 Then 'pdf file is open MsgBox "رجاء اغلاق ملف pdf" & vbCrLf & _ "Please close the PDF file" elseif err.number=3021 then 'لا توجد سجلات ، واصل العمل Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub . طيب السؤال هنا ، وكيف اعرف رقم الخطأ ؟ الاكسس يعطيك رسالة خطأ ، وفيها رقم الخطأ ، هكذا: او . ولكن هناك من الاكواد ، نعرف انه سيعطينا خطأ معين ، ولسنا بحاجة الى اصطياده ، ونعرف انه لن يكون هناك اي نوع آخر من الاخطاء ، فنستعمل On Error Resume Next جعفر
كرار صبري _ أبو جنى قام بنشر مارس 27, 2016 قام بنشر مارس 27, 2016 9 دقائق مضت, jjafferr said: جعفر ما شاء الله عليك استاذي الجميل جعفر ... نفذت مني اللايكات ... 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.