sandanet قام بنشر فبراير 28, 2017 قام بنشر فبراير 28, 2017 السلام عليكم ورحمة الله وبركاته أما بعد،، في المرفق جدولين tbl1 و tbl2 وفي النموذج زر أمر المطلوب فيه هو عند النفر على الزر يقوم بايجاد الاسماء المتكررة في الجدولين بشرط تساوي حقل الـ degree وحذفها من tbl2 ارجو ان تكون الفكرة واضحة تحياتي test.rar
Shivan Rekany قام بنشر فبراير 28, 2017 قام بنشر فبراير 28, 2017 37 دقائق مضت, jjafferr said: وعليكم السلام تفضل جعفر عفوا منك استاذي القدير " جعفر " لكن هناك راح يمسح كل الاسم اللي في جدول تابل2 وحسب فهمي لازم تنطيها الشروط كما مبينة في الصورة وشوف النتائج بعد اعطاء الشروط وشوف النتائج اذا ما ننطي الشروط هذا والله اعلم تحياتي 1
jjafferr قام بنشر فبراير 28, 2017 قام بنشر فبراير 28, 2017 51 دقائق مضت, jjafferr said: وعليكم السلام اخي شفان الرابط بين الجدولين معناه ان Degree يجب ان تكون متساوية بين الجدولين ، فيعرض النتائج تلك فقط واليك طريقة اخرى بالكود ، وبنفس النتائج: Dim rst1 As DAO.Recordset Dim rst2 As DAO.Recordset Set rst1 = CurrentDb.OpenRecordset("Select * From tbl1") Set rst2 = CurrentDb.OpenRecordset("Select * From tbl2") rst1.MoveLast: rst1.MoveFirst RC1 = rst1.RecordCount For i = 1 To RC1 rst2.FindFirst "[degree]='" & rst1!degree & "'" If rst2.NoMatch = False Then rst2.Delete End If rst1.MoveNext Next i rst1.Close: Set rst1 = Nothing rst2.Close: Set rst2 = Nothing جعفر
jjafferr قام بنشر فبراير 28, 2017 قام بنشر فبراير 28, 2017 4 ساعات مضت, sandanet said: في المرفق جدولين tbl1 و tbl2 وفي النموذج زر أمر المطلوب فيه هو عند النفر على الزر يقوم بايجاد الاسماء المتكررة في الجدولين بشرط تساوي حقل الـ degree وحذفها من tbl2 اها ، لم التفت للشرط الاول اذن الاستعلام سيكون: . والكود سيصبح: Dim rst1 As DAO.Recordset Dim rst2 As DAO.Recordset Set rst1 = CurrentDb.OpenRecordset("Select * From tbl1") Set rst2 = CurrentDb.OpenRecordset("Select * From tbl2") rst1.MoveLast: rst1.MoveFirst RC1 = rst1.RecordCount For i = 1 To RC1 rst2.FindFirst "[degree]='" & rst1!degree & "' And [names]='" & rst1!fullnames & "'" If rst2.NoMatch = False Then rst2.Delete End If rst1.MoveNext Next i rst1.Close: Set rst1 = Nothing rst2.Close: Set rst2 = Nothing جعفر 2
Shivan Rekany قام بنشر فبراير 28, 2017 قام بنشر فبراير 28, 2017 9 دقائق مضت, jjafferr said: وعليكم السلام اخي شفان الرابط بين الجدولين معناه ان Degree يجب ان تكون متساوية بين الجدولين ، فيعرض النتائج تلك فقط واليك طريقة اخرى بالكود ، وبنفس النتائج: Dim rst1 As DAO.Recordset Dim rst2 As DAO.Recordset Set rst1 = CurrentDb.OpenRecordset("Select * From tbl1") Set rst2 = CurrentDb.OpenRecordset("Select * From tbl2") rst1.MoveLast: rst1.MoveFirst RC1 = rst1.RecordCount For i = 1 To RC1 rst2.FindFirst "[degree]='" & rst1!degree & "'" If rst2.NoMatch = False Then rst2.Delete End If rst1.MoveNext Next i rst1.Close: Set rst1 = Nothing rst2.Close: Set rst2 = Nothing جعفر انا احبك في الله اخي جعفر الان انا فهمت انو انك ما فهمت السؤال اخينا بالضبط هو طلبت ان يشوف الاسماء اولا واذا بيكون اسماء مكررة وحقل اكري بيكون نفس الشي بعدين بعمل حذف واخوك الصغير شفان بيعتذر منك وبهذا راح يوصل المطلوب ان يتم العلاقة بين حقل الاسماء ايضاً وبالكود اريد اعرف الطريقة سامحني يا استاذ شكرا كثيرا عرفت انك عملت المشاركة لكن ما شفتها قلت خلي انشر وبعدين راح اشوفه وتمام كان مضبوط شكرا لك استاذ 1
jjafferr قام بنشر فبراير 28, 2017 قام بنشر فبراير 28, 2017 25 دقائق مضت, Shivan Rekany said: انا احبك في الله اخي جعفر الان انا فهمت انو انك ما فهمت السؤال اخينا بالضبط هو طلبت ان يشوف الاسماء اولا واذا بيكون اسماء مكررة وحقل اكري بيكون نفس الشي بعدين بعمل حذف واخوك الصغير شفان بيعتذر منك وبهذا راح يوصل المطلوب ان يتم العلاقة بين حقل الاسماء ايضاً وبالكود اريد اعرف الطريقة سامحني يا استاذ حياك الله اخوي شفان وملاحظتك كانت في مكانها لهذا السبب ، انا اقول : اقتباس في اعتقادي ، مشاركة أكثر من شخص في الرد على السؤال ، هو فائدة للجميع ، فمنه نتعلم الطرق الاخرى للإجابة على السؤال ، ونتعلم خبايا البرمجة انت وضعت مشاركتك قبل ان ترى ردي الاخير والذي وضعت فيه الكود ، والكود موجود فيه جعفر 1
sandanet قام بنشر فبراير 28, 2017 الكاتب قام بنشر فبراير 28, 2017 احييكم اخوتي في الله اخي جعفر واخي شافان على هذا الطرح المميز والحلول الرائعة التي اقف مذهولاً اتجاهها فحلولكم هذه تدل على خبرات عميقة لايصل إليها الا ذو حظ عظيم وانا اطالب وبشدة من استاذي جعفر شرح الطلاسم السحرية التي كتبها في الكود لاني اعشق الاكواد ولكن ماكتبه الاستاذ جعفر لم ارتقي لفهمه بعد هههه كما احييك اخي شافان على روح الاصرار والتدقيق العميق في الحلول المطروحة فإنك لم يكتفي بطرح حلك وانا تابعت حل اخي جعفر كذلك فبارك الله فيكم وزادكم من علمه ورفعكم به درجات أعلى ان شاء الله وانتظروني قريبا في موضوع شيق آخر بإذن الله تحياتي
jjafferr قام بنشر مارس 1, 2017 قام بنشر مارس 1, 2017 10 ساعات مضت, sandanet said: وانا اطالب وبشدة من استاذي جعفر شرح الطلاسم السحرية التي كتبها في الكود لاني اعشق الاكواد ولكن ماكتبه الاستاذ جعفر لم ارتقي لفهمه بعد هههه بالعكس اخي أوس ، انا اتعمد فك الكود الى اسطر بالتفصيل ، حتى يكون الكود سهل الفهم (بس الظاهر جبت اسمي وقصدك @رمهان بكوده المختزل) واليك شرح الكود: Dim rst1 As DAO.Recordset Dim rst2 As DAO.Recordset نحتفظ ببيانات الجدول1 في هذا المتغير#1 في ذاكرة الكمبيوتر المؤقته Set rst1 = CurrentDb.OpenRecordset("Select * From tbl1") بينما نحتفظ ببيانات الجدول2 في هذا المتغير #2 في ذاكرة الكمبيوتر المؤقته Set rst2 = CurrentDb.OpenRecordset("Select * From tbl2") من الآن ، تقريبا كل شغلنا على #1 ، حيث سنقرأ سجلات الجدول جميعها ، ثم نقارن حقلي الاسم والشهادة فاذا وجدنا القيم متساوية في #2 ، فاننا نحذف سجل #2 علشان نبدأ من اول سجل ، يجب ان نذهب الى آخر سجل ، ثم نرجع لأول سجل rst1.MoveLast: rst1.MoveFirst الآن نستطيع حساب عدد السجلات الموجودة في #1 RC1 = rst1.RecordCount الآن سنقرأ جميع سجلات #1 For i = 1 To RC1 اسم حقل الاسم يختلف في الجدولين ، فانتبه له ، بينما اسم الشهادة هو نفسه بين الجدولين لذا الذي نعمله هنا هو اننا نقارن حقلي الاسم والشهادة في السجل في #1 ، ونختبر وجودهما في الجدول #2 rst2.FindFirst "[degree]='" & rst1!degree & "' And [names]='" & rst1!fullnames & "'" اذا "عدم المطابقه" خطأ ، معناه انه في مطابقة بين الحقلين في هذا السجل ونستخدم هذه الطريقة ، لأنها الاسهل If rst2.NoMatch = False Then اذن ، احذف هذا السجل من #2 rst2.Delete End If انتقل الى السجل التالي في الجدول #1 rst1.MoveNext Next i هذه الجزئية جدا مهمة ، لأننا جعلنا الجدولين في ذاكرة الكمبيوتر المؤقته ولكي نُخلي الذاكرة ، يجب عمل التالي rst1.Close: Set rst1 = Nothing rst2.Close: Set rst2 = Nothing جعفر 6
أبورحيل قام بنشر مارس 1, 2017 قام بنشر مارس 1, 2017 السلام و عليكم ياريت من الأخوة إعتماد شرح الأكواد فكرة ممتازة حتى يسهل الإستيعاب و التعلم و شكرا
sandanet قام بنشر مارس 1, 2017 الكاتب قام بنشر مارس 1, 2017 اشكرك استاذ جعفر جزيل الشكر على هذا الشرح الرائع جداً وانا اضم صوتي لصوت الاخ ابو رحيل في اعتماد فكرة شرح الأكواد بهذه الطريقة لما لها من دور كبير في تعلم طرق كتابة الدوال البرمجية والتفكير بطريقة العباقرة امثالكم تحياتي
Shivan Rekany قام بنشر مارس 15, 2017 قام بنشر مارس 15, 2017 على الرغم ان السيد @sandanet وصلت الى النتيجة واعطاه السيد @jjafferr طرائق مختلفة بالاكواد و اخرى لكن ساضع هنا هذا الكود هم بيوفي الطلب وهو DoCmd.SetWarnings False DoCmd.RunSQL "DELETE DISTINCTROW tbl2.* FROM tbl1 INNER JOIN tbl2 ON (tbl1.degree = tbl2.degree) AND (tbl1.fullnames = tbl2.names);" DoCmd.SetWarnings True تحياتي للجميع 3
sandanet قام بنشر مارس 15, 2017 الكاتب قام بنشر مارس 15, 2017 جميل جدا أخي شافان على هذا الكود الرائع الذي يختصر الموضوع بشدة واعتقد بانني سوف اعتمده دائماً فبارك الله فيك على كل جهودك معانا لك مني اجمل تحية 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.