عمر ضاحى قام بنشر يناير 18, 2022 قام بنشر يناير 18, 2022 السلام عليكم اهل الرأي والخبره بعد اذن حضرتكم انا معايا مشكلة فى عمل كشف رواتب المشكله هي عاوز اجمع اكثر من استعلام تجميعي معا 1- عندي جدول فيه رقم الموظف واسمه ومفردات الراتب 2- عندي استعلام تجميعي بيجمعلى البيانات من الحضور والانصراف للغياب 3- عندي استعلام تجميعي بيجمعلى البيانات من الحضور والانصراف للاضافى عاوز اربط بينهم كيف ممكن الربط بينهم ؟ فى استعلام واحد علشان اقدر اعتمد عليه فى عمل الرواتب الشهريه وايه هي الطرق المتاحه وافضلهم فى هذه النقطه ولكم جزيل الشكر
jjafferr قام بنشر يناير 18, 2022 قام بنشر يناير 18, 2022 وعليكم السلام 🙂 الطريقة هي عمل استعلام توحيد ، بهذه الطريقة : Select ID, Full_Name, Income, Position From tbl_Directors union all Select ID, Full_Name, Income , P:"" From tbl_Players union Select I:0, Full_Name, Income:"" , Pos:"Not applicable" From tbl_Others union SELECT "", tblSection.sname, Sum(tblSection.Allowances) AS SumOfshead, "مدراء" As P FROM tblSection WHERE (((tblSection.snumber1)<>123)) GROUP BY tblSection.sname ORDER BY tblSection.sname; . هنا جمعت 4 استعلامات (نسميها استعلامات اولية) (اعمل كل استعلام بالطريقة العادية ، وبعد التأكد انه يعمل بطريقة صحيحة ، وان حقول الاستعلام في نفس ترتيب حقول بقية الاستعلامات (كذلك يمكنك اضافة هذه الحقول في استعلام التوحيد مباشرة) ، ضع الاستعلام في وضع SQL ، ثم انسخ الجملة كاملة وضعها في استعلام التوحيد ، هذا اللي عملته في الاستعلام الرابع اعلاه) ، الشرط الوحيد في استعلام التوحيد هو ، ان يكون عدد الحقول نفسها لجميع الاستعلامات ، فإذا احد الاستعلامات ما فيه هذه الحقل ، يجب ان تضع قيمة معينة له ، سواء صفر او "" (فراغ) او "المدراء" ، وطبعا الحقول التي تريدها لنفس العمود يجب ان تكون بنفس ترتيبها في الاستعلام (انا تركت مسافات بين الحقول في المثال اعلاه فقط لتوضيح هذه النقطة) ، يجب الانتباه في الحقول الاضافية ، فإذا اردت ان تجمع هذا الحقل لاحقا ، فاعطيه القيمة 0 ، اسم الحقل يُؤخذ من اول استعلام (بغض النظر عن تغيّر اسماء الحقول في الاستعلامات لنفس العمود) ، والفرز يُؤخذ من آخر استعلام ، union all معناها ، اضف جميع السجلات ، مع المتكررات بين الاستعلامات ، union معناها ، اضف جميع السجلات ، بدون المتكررات بين الاستعلامات. وهناك اوقات اخرى ، حيث الاستعلامات الاولية لإستعلام التوحيد ، فيها نفس عدد الحقول وبنفس الترتيب ، فيمكن تسهيل استعلام التوحيد الى: Select * From qry_1 union Select * From qry_2 union all Select * From qry_3 union Select * From qry_4 . او الخلط بين الطريقتين: Select * From qry_1 union Select * From qry_2 union all Select * From qry_3 union Select * From qry_4 union SELECT "", tblSection.sname, Sum(tblSection.Allowances) AS SumOfshead, "مدراء" As P FROM tblSection WHERE (((tblSection.snumber1)<>123)) GROUP BY tblSection.sname ORDER BY tblSection.sname; بعض الاوقات هذه الاستعلام سيعطيك البيانات المطلوبة ، ولكن قد تحتاج الى فرز او تصفية اضافية ، او تجميع سجلات في سجل واحد ، فما عليك إلا ان تعمل استعلام آخر ، ثم تستعمل استعلام التوحيد كمصدر بيانات هذا الاستعلام الجديد ، ثم تعمل فيه المطلوب 🙂 جعفر 1 1
عمر ضاحى قام بنشر يناير 18, 2022 الكاتب قام بنشر يناير 18, 2022 استاذي ومعلمي الجليل جعفر @jjafferr انا حاولت كثير لكن فشلت ف كل محولاتي (اول مره اجرب الاستعلام التوحيدي - قراءة عنه لكنى لم اجربه من قبل) جربت انى اضع اعمدة توازى العدد للاستعلام الاخر برضه منفعش اما ان يصدر لى بيانات مكرر او لا يصدر شئ انا ارفقت ملف هل اذا سمح وقت حضرتك تنظر فى الاستعلامات الاتيه وتخبرني ايه سبب عدم نجاحي فى الدمج الاستعلمات هي : -ForSalary1 التى سوف يتم تجميع البيانات فيها -ForSalary1Appsen الطرف الاول -ForSalary1OT الطرف الثاني -Emp_Info (هذا اسم جدول به جميع الاسماء والرواتب سوف احتاجه للحصول على الاسماء وباقى المعلومات الاخري) اريد ان اصنع استعلام يحتى على ارقام الموظفين واسمائهم وبيانات الراتب واجمالى الغياب لكل موظف ان وجد له غياب او الاضافى ايضا ولك جزيل الشكر حضور وانصراف موظفينV47.rar
jjafferr قام بنشر يناير 18, 2022 قام بنشر يناير 18, 2022 اول خطوة هي جعل الحقول المتشابهة تحت نفس العمود . عملنا استعلام جديد Query1 (وهو استعلام التوحيد) ودخلنا في وضع SQL ، ثم نسخنا جملة SQL الاستعلام الاول اليه ، ثم كتبنا union ، ثم نسخنا جملة SQL الاستعلام الثاني اليه: . والنتيجة . ولكننا نريد ان ندمج السجلات المتشابهة مع بعض ، حتى تكون على سجل واحد ، لذا ، يجب ان نعمل استعلام تجميع ، نجمع فيها قيم الحقول حسب المجموعات ، فنعمل استعلام جديد ، ويكون استعلام التوحيد السابق هو مصدر بياناته : . عند تشغيل الاستعلام الجديد ، نحصل على خطأ ، معناه ان انواع الحقول غير متشايهة !! واذا دققنا النظر في اول صورة ، سنجد انه في نفس الحقل عندنا ارقام و Null و "" ، وهذا ينطبق على الحقول الثلاثة التي نريد مجموعها ، يعني في كل حقل ، لازم نجمع قيمها: الارقام ، و Null ، و "" . اول فكرة تجي على البال حتى نستبدل Null و "" الى صفر ، هو استخدام الامر NZ (مع انه غير محبذ استخدام امر VBA في الاستعلام ، حيث انه سيجعله بطيءً نوعا ما) ، والنتيجة . الخطأ هنا لأن الامر NZ ومعناه Null to Zero ، اي تحويل الحقل الذي قيمته Null الى صفر ، بينما عندنا في الحقل نفسه قيمة اخرى وهي "" ، والتي يجب التعامل معاها كذلك وتحويلها صفر ، والامر NZ لا يعرف التعامل معاها ، انا استعمل الكود التالي لإحتواء الطريقتين : If Len([SumAbsentYes] & "")=0 then او هكذا في الاستعلام SumAbsentYes_1: IIf(Len([SumAbsentYes] & '')=0,0,[SumAbsentYes]) . . والنتيجة . او الطريقة الاخرى للتغلب على Data Type Missmatch ، بأن نحتفظ بقيمة Null ، ولكن قيمة "" نحولها الى صفر في الاستعلامات الاصل: . بإختصار ، خطواتك كانت صحيحة ، ولكن كان يحتاج لها خطوة اخرى 🙂 المرفق فيه Query2 و Query4 للطريقتين 🙂 جعفر 1451.حضور وانصراف موظفينV47.accdb.zip 1 1
عمر ضاحى قام بنشر يناير 18, 2022 الكاتب قام بنشر يناير 18, 2022 منذ ساعه, jjafferr said: اول خطوة هي جعل الحقول المتشابهة تحت نفس العمود . عملنا استعلام جديد Query1 (وهو استعلام التوحيد) ودخلنا في وضع SQL ، ثم نسخنا جملة SQL الاستعلام الاول اليه ، ثم كتبنا union ، ثم نسخنا جملة SQL الاستعلام الثاني اليه: . والنتيجة . ولكننا نريد ان ندمج السجلات المتشابهة مع بعض ، حتى تكون على سجل واحد ، لذا ، يجب ان نعمل استعلام تجميع ، نجمع فيها قيم الحقول حسب المجموعات ، فنعمل استعلام جديد ، ويكون استعلام التوحيد السابق هو مصدر بياناته : . عند تشغيل الاستعلام الجديد ، نحصل على خطأ ، معناه ان انواع الحقول غير متشايهة !! واذا دققنا النظر في اول صورة ، سنجد انه في نفس الحقل عندنا ارقام و Null و "" ، وهذا ينطبق على الحقول الثلاثة التي نريد مجموعها ، يعني في كل حقل ، لازم نجمع قيمها: الارقام ، و Null ، و "" . اول فكرة تجي على البال حتى نستبدل Null و "" الى صفر ، هو استخدام الامر NZ (مع انه غير محبذ استخدام امر VBA في الاستعلام ، حيث انه سيجعله بطيءً نوعا ما) ، والنتيجة . الخطأ هنا لأن الامر NZ ومعناه Null to Zero ، اي تحويل الحقل الذي قيمته Null الى صفر ، بينما عندنا في الحقل نفسه قيمة اخرى وهي "" ، والتي يجب التعامل معاها كذلك وتحويلها صفر ، والامر NZ لا يعرف التعامل معاها ، انا استعمل الكود التالي لإحتواء الطريقتين : If Len([SumAbsentYes] & "")=0 then او هكذا في الاستعلام SumAbsentYes_1: IIf(Len([SumAbsentYes] & '')=0,0,[SumAbsentYes]) . . والنتيجة . او الطريقة الاخرى للتغلب على Data Type Missmatch ، بأن نحتفظ بقيمة Null ، ولكن قيمة "" نحولها الى صفر في الاستعلامات الاصل: . بإختصار ، خطواتك كانت صحيحة ، ولكن كان يحتاج لها خطوة اخرى 🙂 المرفق فيه Query2 و Query4 للطريقتين 🙂 جعفر 1451.حضور وانصراف موظفينV47.accdb.zip 463.86 kB · 0 downloads الله يزيدك من علمه فى حاجات كنت اتعامل معاها كال حافظ ولم افهم معناها والان فهمت معناها زي ان منذ ساعه, jjafferr said: الخطأ هنا لأن الامر NZ ومعناه Null to Zero ، اي تحويل الحقل الذي قيمته Null الى صفر ، ما كنت اعرف هذه المعلومه غير الخطوات التاليه ولما كنت اوصل للخطأ فى الاغلب ما كنت افهم سببه فكنت ارجع كل حاجه زي ما كانت لاني كنت اظن انى امشي فى طريق خطأ الان عرفت انى كنت على بداية الطريق الصحيح لكنى لم ادخله لانى كنت اجهل ما فيه او اخشي ان اخرب الدنيا فوق انك حليت مشكلتى الا انك علمتني درس جيدا اسأل الله الكريم رب العرش العظيم ان يبارك لك فى عمرك وصحتك ومالك ودنياك وان يغفر لك ويجعلك من اهل الجنه وان يزيدك من علمه جزاك الله كل خير عنا ❤️
عمر ضاحى قام بنشر يناير 18, 2022 الكاتب قام بنشر يناير 18, 2022 استاذي الجليل جعفر @jjafferr ايضا واجهتني مشكلة اخرى لما حبيت اضيف التاريخ لاني محتاج التاريخ فى عمليت الفتلتره فكرت انى استخدم الجدول OT فى انى اعمل استعلام الحاقى ويكون مصدره الاستعلام التوحيدي ومن ثم اعمل استعلام اخر يضيف لى باقى الناس للجدول حتى يكون معي سجل الموظفين كامل للشهر لكن وجدت ان اسماء الموظفين تضاعفت ل 5 مرات (تكرار) رجعت قولت ابدأ من جديد كما هو فى شرح حضرتك غير ان عمليت الفلتره الرئيسيه لكشف الرواتب بتعتمد على ثلاث نقاط مصدر البيانات للحضور والانصراف والاضافى والغياب وهو جدول ( Dwam_Emp_ALL ) ==> منه اعمل عمليت فلتره للغياب ==> منه باعمل عمليت فلتره هل الموظف نشط ام لا =========> كل ما سبق بيعتمد على محور من محاور الاساس وهو التاريخ بدون وضع فلتره على الفتره الزمنيه وقتها هيكون صعب بل مستحيل ان احسب اى رواتب فتنصحنى اجعل عامل التاريخ والتفعيل يظهرو معي باى وسيله ام ان كل ما بنيته كان خطأ
jjafferr قام بنشر يناير 18, 2022 قام بنشر يناير 18, 2022 عندك طريقتين لإضافة اي حقول/فرو/تصفية ، يا في اول استعلام توحيد (طبعا في احد او جميع الاستعلامات اللي فيه ، والافضل تجهز الاستعلامات وتجهز كل واحد منها بالنتائج الصحيحة ، ثم تضيفها في استعلام التوحيد) ، او في آخر استعلام. قد يكون الاسهل لك ان تضيف معيار التاريخ في الاستعلام الاول : 1. كمعيار (سواء لإستعلام واحد او عدة استعلامات) دون إظهاره في السجلات (إزالة علامة الصح تحت الحقل ، او استخدام Where في الاستعلام التجميعي) ، وعادة المعيار يشير الى حقل التاريخ في النموذج مثل Forms!frm_Main!Date_From ، 2. او اذا ما عمل لك مشكلة ، فيمكن اظهاره في السجلات. اذا استعملته كمعيار فقط ، ولكنك تريد اظهاره في الاستعلام الاخير ، فيمكنك عمل حقل جديد في الاستعلام الاخير للتاريخ ، هكذا: myDate: Forms!frm_Main!Date_From جعفر 1
ابوخليل قام بنشر يناير 18, 2022 قام بنشر يناير 18, 2022 السلام عليكم معلومات قيمة عن استعلام التوحيد ، تستحق موضوعا مستقلا .. بارك الله فيك استاذنا وبارك في جهودك انا اعتقد ان السائل يمكنه اظهار الغياب والاضافي ابتداءً في استعلام واحد 2
jjafferr قام بنشر يناير 18, 2022 قام بنشر يناير 18, 2022 وعليكم السلام اخوي ابوخليل 🙂 10 دقائق مضت, ابوخليل said: 1. معلومات قيمة عن استعلام التوحيد ، تستحق موضوعا مستقلا .. بارك الله فيك استاذنا وبارك في جهودك 2. انا اعتقد ان السائل يمكنه اظهار الغياب والاضافي ابتداءً في استعلام واحد 1. نعم فكرت في الموضوع ، لهذا السبب كنت دائما انقح وازيد في مشاركتي الاولى حتى اشمل كل شيء عن الموضوع ، واحتاج لها بعض الامثلة مع صور علشان تكمل ، 2. في الواقع ما نظرت للموضوع عن كيفية حل السؤال بطريقة اخرى ، فطريقة السؤال كانت توجهني في اتجاه استعلام التوحيد 🙂 جعفر 1
عمر ضاحى قام بنشر يناير 19, 2022 الكاتب قام بنشر يناير 19, 2022 11 ساعات مضت, jjafferr said: عندك طريقتين لإضافة اي حقول/فرو/تصفية ، يا في اول استعلام توحيد (طبعا في احد او جميع الاستعلامات اللي فيه ، والافضل تجهز الاستعلامات وتجهز كل واحد منها بالنتائج الصحيحة ، ثم تضيفها في استعلام التوحيد) ، او في آخر استعلام. قد يكون الاسهل لك ان تضيف معيار التاريخ في الاستعلام الاول : 1. كمعيار (سواء لإستعلام واحد او عدة استعلامات) دون إظهاره في السجلات (إزالة علامة الصح تحت الحقل ، او استخدام Where في الاستعلام التجميعي) ، وعادة المعيار يشير الى حقل التاريخ في النموذج مثل Forms!frm_Main!Date_From ، 2. او اذا ما عمل لك مشكلة ، فيمكن اظهاره في السجلات. اذا استعملته كمعيار فقط ، ولكنك تريد اظهاره في الاستعلام الاخير ، فيمكنك عمل حقل جديد في الاستعلام الاخير للتاريخ ، هكذا: myDate: Forms!frm_Main!Date_From جعفر اولا بعتذر لحضرتك على التأخير فى الرد لظروف طارئه سوف اجرب فكرة حضرتك وارد عليك بالنتيجه
عمر ضاحى قام بنشر يناير 19, 2022 الكاتب قام بنشر يناير 19, 2022 (معدل) للاسف معرفتش اعملها 100% فحبيت اني اسهل على نفسي واعمل طريقة جديده لجمع المعلومات فعملت جدول مؤقت للرواتب وسوف اعمل استعلمات الحاق (حوالى 4 الى 6 استعلمات الحاق لنفس الجدول) وارسل فيه البيانات المختلفه من الاستعلمات الى الجدول انا الان واقع فى مشكله اخرى عندي استعلام التسجيل ووظيفته ان يسجل لى وقت تسجيل الرواتب و الرواتب من تاريخ الى تاريخ والاثنين الاخاره بيحصل بياناتهم من الفورم لكنه لا يعمل مش عارف ليه (الفورم بيكون مفتوح وفيه التواريخ مسجله) وعندي مشكلة فى تسجيل اجمالى الاضافى والتأخير والغياب لكل شخص يعنى عندي فى الاستعلام خمس اشخاص مثلا عندهم غياب متفوتين فى العدد الايام اريد ان ارسل لجدول الرواتب البيانات على حسب رقم الوظيفي يضعلى فى العمود بتاعه اجمالى الغياب ان وجد او يضعلى 0 او يتركها فارغ (افضل ان تكون صفر علشان الاخطأ التى من الممكن ان تحدث مستقبليا ) اعتقد انى لو عرفت احل دول كله هيكون دون مشاكل تم تعديل يناير 19, 2022 بواسطه عمر ضاحى
عمر ضاحى قام بنشر يناير 19, 2022 الكاتب قام بنشر يناير 19, 2022 المشكله ان الاستعلام مش بيشوف البيانات غير لو انا واقف عليها
عمر ضاحى قام بنشر يناير 19, 2022 الكاتب قام بنشر يناير 19, 2022 الى حد ما نجحت انى اجمع المعلومات لكنى فى خطأ معايا اسم الاستعلام ال بيجمع ويرحل لجدول الرواتب 1_infoEmp الخطأ هو *مرفق ملف 1451.حضور وانصراف موظفينV48.rar
jjafferr قام بنشر يناير 20, 2022 قام بنشر يناير 20, 2022 17 ساعات مضت, عمر ضاحى said: المشكله ان الاستعلام مش بيشوف البيانات غير لو انا واقف عليها احذف كلمة [Text]. من الحقول .
عمر ضاحى قام بنشر يناير 20, 2022 الكاتب قام بنشر يناير 20, 2022 57 دقائق مضت, jjafferr said: احذف كلمة [Text]. من الحقول . جربت كده برضه وما نفع لكن اطريت اعملها معادلة واشتغلت فهذا انتها امرها الحمد لله لكن مع مشكله اخرى ^_^ عاوز اعمل استعلام تحديثي علشان اضيف بيه الاضافى والغياب والتأخير والمرضي لجدول الرواتب المؤقت هذا ما قمت به لغرض الاستعلام التحديثي لكن النتيجه كانت لا شئ لماذا ! لا ادري
تمت الإجابة jjafferr قام بنشر يناير 20, 2022 تمت الإجابة قام بنشر يناير 20, 2022 في الواقع مثل ما قال ابوخليل في مشاركته ، انت محتاج استعلام واحد ويحل جميع مشاكلك ، بس لأن سؤالك كان عن مجموعة من الاستعلامات ، فاتجهت في اجابتي نحو استعلام التوحيد!! ولا محتاج جدول مؤقت ، ولا ولا ، إلا هذا الاستعلام 🙂 هذا الاستعلام اللي تريده: . SELECT Dwam_Emp_ALL.Emp_No_A, Emp_Info.Emp_Ar_Name, Sum(IIf([Emp_ABSCENT]=Yes,1,0)) AS SumAbsentYes, Sum(IIf([sick]=Yes,1,0)) AS SumsickYes, Sum(Dwam_Emp_ALL.OTH) AS SumOfOTH FROM Emp_Info INNER JOIN Dwam_Emp_ALL ON Emp_Info.Emp_No = Dwam_Emp_ALL.Emp_No_A WHERE (((Dwam_Emp_ALL.Dwam_Date) Between [Forms]![frmPrintSalary]![txtdate1] And [Forms]![frmPrintSalary]![txtdate2])) GROUP BY Dwam_Emp_ALL.Emp_No_A, Emp_Info.Emp_Ar_Name HAVING (((Dwam_Emp_ALL.Emp_No_A)=IIf([Forms]![frmPrintSalary]![OP]=1,[Emp_No_A],[Forms]![frmPrintSalary]![cbEmpNo]))); . . والتقرير: . ما عليك من التقرير الآن ، لأنه تحصيل حاصل ، رجاء استعمل الاستعلام اللي اعطيتك ، واخبرني اذا عندك مشكلة فيه 🙂 جعفر 1
Moosak قام بنشر يناير 20, 2022 قام بنشر يناير 20, 2022 (معدل) بالصدفة وأنا أتجول في المنتدى وجدت هذا 🙂 تم تعديل يناير 20, 2022 بواسطه Moosak
عمر ضاحى قام بنشر يناير 20, 2022 الكاتب قام بنشر يناير 20, 2022 منذ ساعه, jjafferr said: في الواقع مثل ما قال ابوخليل في مشاركته ، انت محتاج استعلام واحد ويحل جميع مشاكلك ، بس لأن سؤالك كان عن مجموعة من الاستعلامات ، فاتجهت في اجابتي نحو استعلام التوحيد!! ولا محتاج جدول مؤقت ، ولا ولا ، إلا هذا الاستعلام 🙂 هذا الاستعلام اللي تريده: . SELECT Dwam_Emp_ALL.Emp_No_A, Emp_Info.Emp_Ar_Name, Sum(IIf([Emp_ABSCENT]=Yes,1,0)) AS SumAbsentYes, Sum(IIf([sick]=Yes,1,0)) AS SumsickYes, Sum(Dwam_Emp_ALL.OTH) AS SumOfOTH FROM Emp_Info INNER JOIN Dwam_Emp_ALL ON Emp_Info.Emp_No = Dwam_Emp_ALL.Emp_No_A WHERE (((Dwam_Emp_ALL.Dwam_Date) Between [Forms]![frmPrintSalary]![txtdate1] And [Forms]![frmPrintSalary]![txtdate2])) GROUP BY Dwam_Emp_ALL.Emp_No_A, Emp_Info.Emp_Ar_Name HAVING (((Dwam_Emp_ALL.Emp_No_A)=IIf([Forms]![frmPrintSalary]![OP]=1,[Emp_No_A],[Forms]![frmPrintSalary]![cbEmpNo]))); . . والتقرير: . ما عليك من التقرير الآن ، لأنه تحصيل حاصل ، رجاء استعمل الاستعلام اللي اعطيتك ، واخبرني اذا عندك مشكلة فيه 🙂 جعفر ههههههههههههههههههههههههههههههه انا ليه ثلاث ايام مش عارف احلها وعمال اتحايل عليها محايلها وفى الاخر يكون كده حلها الله يسترك دنيا واخره ويريح بالك مثل ما ارحت بالى لك منى كل الشكر والتقدير والعرفان بارك الله فيك
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.