اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

jjafferr

أوفيسنا
  • Posts

    9920
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    404

كل منشورات العضو jjafferr

  1. اول خطوة هي جعل الحقول المتشابهة تحت نفس العمود . عملنا استعلام جديد 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
  2. ما فهمت🥺 الظاهر ان القهوة بو شربتها الصبح بعدها ما داقه فراسي ، فياريت تشرح القصد من هذا الطلب 🙂 جعفر
  3. وعليكم السلام 🙂 الطريقة هي عمل استعلام توحيد ، بهذه الطريقة : 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; بعض الاوقات هذه الاستعلام سيعطيك البيانات المطلوبة ، ولكن قد تحتاج الى فرز او تصفية اضافية ، او تجميع سجلات في سجل واحد ، فما عليك إلا ان تعمل استعلام آخر ، ثم تستعمل استعلام التوحيد كمصدر بيانات هذا الاستعلام الجديد ، ثم تعمل فيه المطلوب 🙂 جعفر
  4. حيا الله اخوي موسى 🙂 اعطني امثلة ، وما يصير خاطرك إلا طيب 🙂 جعفر
  5. وعليكم السلام ورحمة الله وبركاته 🙂 اخي حافظ ، في المرات القادمة ، رجاء مراعاة وضع اسم صحيح للموضوع ، يدل على محتواه 🙂 انت لم تقل للكود ان يظهر لك رسالة Msgbox او MessageBox بهذه المعلومة ، رجاء قم بإضافة الامر MessageBox الى الماكرو (كما في الصورة) : . جعفر
  6. مقترح صحيح 100% 🙂 جعفر
  7. وعليكم السلام 🙂 طريقة تعرّف المواقع على مكان تواجدك عند الدخول اليها ، هو عن طريق IP الكمبيوتر ، وهذه طريقة لمعرفة IP الكمبيوتر : . جعفر
  8. في هذه الحالة يجب ان يكتب تنسيق الحقل في الجدول كالتالي: dd/mm/yyyy وإلا فإنه سياخذ تنسيق الوندوز ، وتنسيق الوندوز عندي هو dd/mmm/yyyy ، فسيعطيه رسالة خطأ كذلك !! جعفر
  9. انظر الى نوع حقل التاريخ الهجري في الجدول 🙂 الدالة UmDate_AfterUpdate هي المسؤولة عن طريقة عرض التاريخ ، فاذا اردت تغيير التنسيق ، فلا انصحك ان تغير في الدالة اعلاه ، ولكن خلينا نغير نتيجة الدالة: Private Sub date_h_AfterUpdate() UmDate_AfterUpdate If Not IsNull(date_h) Then 'Debug.Print Right(date_h, 2) 'Debug.Print Mid(date_h, 6, 2) 'Debug.Print Left(date_h, 4) Me.date_m = Um2Greg(Right(date_h, 2), Mid(date_h, 6, 2), Left(date_h, 4)) ''Me.date_m = Um2Greg(Right(date_h, 4), Mid(date_h, 6, 2), Left(date_h, 2)) 'Me.t_day = Format(Me.date_m, "dddd") Me.date_h = Right(Me.date_h, 2) & "/" & Mid(Me.date_h, 6, 2) & "/" & Mid(Me.date_h, 1, 4) '<== هذا السطر الاضافي لتغيير التنسيق End If End Sub . جعفر
  10. المفروض ان تظهر لك ارقام فقط ، لهذا السبب تحصل على خطأ عندما تنادي الدالة Um2Greg !! في الواقع المشكلة عندك في الجدول ، حيث ان حقل IqamaExpDateH هو تاريخ ، بينما يجب ان يكون نص . وبالتالي يتم حذف الاشارة الى ان الحقل تاريخ (احذف Short Date) . . وبعدها شوف النتائج 🙂 جعفر
  11. السلام عليكم 🙂 يجب ان نرى ما يراه الكمبيوتر ، ثم نتخذ قرار التصحيح ، اضف الاسطر الثلاثة في الكود ، ثم انظر في اسفل صفحة الكود immediate windows ، واخبرنا النتيجة: Private Sub date_h_AfterUpdate() UmDate_AfterUpdate If Not IsNull(date_h) Then Debug.Print Right(date_h, 2) Debug.Print Mid(date_h, 6, 2) Debug.Print Left(date_h, 4) Me.date_m = Um2Greg(Right(date_h, 2), Mid(date_h, 6, 2), Left(date_h, 4)) ''Me.date_m = Um2Greg(Right(date_h, 4), Mid(date_h, 6, 2), Left(date_h, 2)) 'Me.t_day = Format(Me.date_m, "dddd") End If End Sub . . جعفر
  12. لما تكون عندي معادلة بهذا التعقيد ، على طول وبدون تفكير ، اعمل وحدة نمطية واضع فيها المعادلة بطريقة مبسطة وبعدة اسطر ، ثم اناديها من الاستعلام 🙂 ننادي الدالة fOver_Time في الوحدة النمطية ، ونرسل لها البيانات المطلوبة OverTime: fOver_Time([ThisDay], [Dwam_Start], [Dwam_End], [txtStanderTimeOut1], [txtStanderTimeOut2]) . وهذه هي الدالة fOver_Time ، والتي يمكن تعديلها ببساطة : Public Function fOver_Time(TD, DS, DE, STO1, STO2) 'TD = [ThisDay] 'DS = [Dwam_Start] 'DE = [Dwam_End] 'STO1 = [txtStanderTimeOut1] 'STO2 = [txtStanderTimeOut2] If TD = "Friday" Then fOver_Time = DateDiff("n", DS, DE) \ 60 & ":" & DateDiff("n", DS, DE) Mod 60 ElseIf TD = "Thursday" Then fOver_Time = DateDiff("n", STO2, DE) \ 60 & ":" & DateDiff("n", STO2, DE) Mod 60 ElseIf TD <> "Friday" Or TD <> "Thursday" Then fOver_Time = DateDiff("n", STO1, DE) \ 60 & ":" & DateDiff("n", STO1, DE) Mod 60 End If End Function . جعفر
  13. اخي عمر هذه تجربتي في البرنامج ، ومع روزنامة الوندوز: 1-1-2020 . 1-1-2021 . 1-1-2022 . جعفر
  14. الله يطول في عمرك ، المشكلة في اي نموذج ، واي حقل ؟
  15. لهذا السبب ، لا استغنى عن البرنامج في الرابط ، كلما عملت اضافات على البرنامج اللي اشتغل عليه ، استعمل برنامج الرابط حتى اعرف انه لا توجد به اخطاء ، ويعمل نسخة منه ، خطوة بخطوة 🙂 . جعفر
  16. السلام عليكم 🙂 زميلنا واخونا @ابو جودي بالاضافة الى كونه خبير ، اصبح احد اعضاء فريق عمل الموقع 🙂 1. شاركونا في تهنئته ، 2. وخلينا نساعده في مهمته الجديدة 🙂 ابو جودي ، اهلا وسهلا بك معنا مرة اخرى 🙂 جعفر
  17. وعليكم السلام 🙂 نعم ممكن عن طريق القائمة المختصرة ، وبأي اوامر تريد ، وبأي ترتيب كذلك ، وبقوائم جاهزة 🙂 : جعفر
  18. حيا الله اخوي يوسف 🙂 حجم البرنامج صفر ميغا ، يعني معطوب وبدون اي محتويات !! جعفر
  19. هل عندك نموذج ، وفي النموذج حقل الباركود؟ هل عندك حقل آخر يتم الانتقال اليه بعد ادخال البيانات في حقل الباركود؟ هل الحقل التالي له رقم تسلسل Tab Index اكبر من رقم حقل الباركود : . ويكون من المستحسن ان ترفق لنا هذه الجزئية من برنامجك 🙂 جعفر
  20. قصدي ، هل هناك ماكرو او كود لأي حدث في الحقل ؟
  21. وعليكم السلام 🙂 اهلا وسهلا بك في المنتدى 🙂 للإستفادة القصوى من المنتدى ، رجاء قراءة قوانين المنتدى: اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة جهاز الباركود يعمل التالي: 1. يقرأ الباركود ، 2. ويضع قيمته في الحقل (او البرنامج، قد تكون فاتح الاكسل او Notepad) الذي هو فيه ، 3. ثم يعطي امر للإنتقال للحقل/السطر التالي (عن طريق الامر CR LF ، او كأنما تضغط على زر Enter) . فمشكلتك معناها ، انه هناك كود على حقل الباركود ، يعمل بعد ادخال الباركود ويفتح نموذج آخر ، فيجب تعديل هذا الكود 🙂 جعفر
  22. نعم اخي موسى ، وعادة نذكر ونساعد صاحب الموضوع لما ينسى ، طبعا اذا كنا متواجدين 🙂 جعفر
  23. وعليكم السلام 🙂 بطريقتين : DoCmd.OpenReport "rpt_j", acViewPreview, , Forms!frm_j.Filter او DoCmd.OpenReport "rpt_j", acViewPreview Reports!rpt_j.Filter = Forms!frm_j.Filter Reports!rpt_j.FilterOn = true جعفر
  24. شكرا جزيلا اخوي ابوخليل على التذكير ، وقمت بتثبيت الموضوع 🙂 الطريقة صعبة في بداية الامر ، ولكن بعد حين ، ستكون سلسه 🙂 جعفر
×
×
  • اضف...

Important Information