اذهب الي المحتوي
أوفيسنا

ابوخليل

أوفيسنا
  • Posts

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

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

  • Days Won

    290

كل منشورات العضو ابوخليل

  1. هذا يعمل 100% totalPaid = Nz(DSum("[Payment_Made]", "[tbl_Loans]", "[EmployeeID] =" & EmpID & "And [annee] <>" & Year(Date) & "and [Loan_ID] =0"), 0)
  2. طيب انتظرني سافحص الكود لوحده خارج المنظومة
  3. اسف قدمت وأخرت في المعيار يكون مثل هذا totalPaid = Nz(DSum("Payment_Made", "tbl_Loans", _ "Loan_ID= 0 AND EmployeeID=" & EmpID And "annee <> " & Year(Date)), 0) لعله يعمل .. المشكلة ان وجدت فهي في تقديم وتأخير علامة التنصيص
  4. لم اجد شرطا مناسبا قد يحقق المطلوب الا السنة جرب استبدل الكود بهذا فلعله يعمل .. اضفت ان السنة الحالية لا تساوي السنة الموجودة في الجدول totalPaid = Nz(DSum("Payment_Made", "tbl_Loans", _ "Loan_ID= 0 AND EmployeeID=" & EmpID And "year(date)<> " & annee), 0) على اعتبار انك تعمل في سنة 2026
  5. اخي العزيز انا لا اعرف اعمل الا على شيء انا افهمه العمل الذي امامي غامض .. فارجوا ان تعذرني لا اريدك ان تحزن فهذا هو فهمي قد اتمكن من مساعدتك لو اعطيتني قصة السجل كاملة من مولده وحتى يصل الى التقرير ما لون بالاحمر يدل على وجود اشياء غائبة يتم عملها منفصلة عن الجزء المرفق ................................. اعيد واكرر لو انا من صمم هذا العمل سأعمل على طريقة يفهمها اي مبرمج ومصمم وهي طريقة منطقية سهلة بدون اي تعقيد والتعديل عليها يسير +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ الطريقة : اذا دخل شهر3 من كل سنة .. في الفورم زر يعمل تصفية لمن يشمله هذا الاجراء .. يتم من خلاله الحاقهم في الجدول .. وزر آخر يتم اجراء الاقتطاع حسب ما نضعه من شروط ونكرر هذا الاجراء عند دخول شهر 7 ... اوغيره من الشهور للحالات الخاصة هنا يستحيل ظهور اي خطأ ... بمعنى انه يجب ان يكون لكل نوع من الأنواع عملياته الخاصة المنفصلة عن الاخرى الاقتطاع يتم تصفيته لوحده / القروض كذلك / ... الخ كل ذلك من خلال هذين الزرين وفورم واحد +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ اما مسألة كود واحد يقوم بجميع الاجراءات وآليا ايضا .. هذا يجب اعادة النظر فيه .. العجيب ان الكود يعمل عمل التقرير فيعرض رسالة احصائية . اكتب لك هذا وانا لم افهم بعد طريقة تحصيل المبالغ .. لأني لم افهم اصلا طريقة العمل على البرنامج
  6. طيب .. انا فتحت الملف الذي هو الفورم خرجت رسالة معنونة بشهر ديسمبر 2025 .. تقول تم التوزيع بنجاح .. دخلت الجدول ولم اجد شيئا دخلت الى الكود افهمه وجدت اول شرط ان يكون الجدول يشتمل على تاريخ مساو للتاريخ على النموذج وطبعا يوجد في الجدول بيانات لسجلات قديمة فقط وانت تريد اقتطاع شهر 3 و 7 من سنة 2026 اليس من المفترض وجود هذه التواريخ في الجدول قبل فتح النموذج ؟ ( لأن الكود يعمل بمجرد فتح النموذج) انا اتصور لو قمت انا بتصميم هذه الجزئية ان يكون هناك 2 ازرار .. واحد لالحاق البيانات الرئيسية مع التواريخ المختارة والثاني لعملية الاقتطاع
  7. اخي الكريم ذكرت انظر في الكود في فورم FrmTransfer1 بينما البرنامج يفتح على FrmTransfer والكود cmd_Pay_installments موجود في النموذجين لا اخفيك تهت .. اذا العمل على FrmTransfer1 لماذا FrmTransfer موجود ؟ اذا يوجد ازرار غير مهمة احذفها .. هذا مجرد مثال
  8. اخي طاهر .. خذني على قد فهمي اريدك ترفع مرفق يكون الجدول الخاص بالاقتطاعات خالي اعتقد انه الجدول tbl_Loans كما اظن وتشرح لي بالخطوات اعمل ايه من خلال النموذج .. خطوة خطوة وصورة للنتيجة المفترض الحصول عليها
  9. السلام عليكم اخي طاهر انا ربما اختلف قليلا عن بقية اخوتي الخبراء والاعضاء هنا الغالب هنا يختصرون عليك وعليهم الوقت ويعطونك حل للمشكلة التي تواجهك مباشرة .. ولكن في بعض الاحيان المشكلة اذا لم تعالج من الاصل .. فإنها تولد مشكلات واخطاء تتبعها حينما استعرض مثالك لا يمكنني فهم آلية العمل : خذ ما دار في بالي : اولا لماذا الاقتطاع وتخصيصه شهري 3 و 7 فقط ... يجب ان نفهم لماذا؟ يجب ان يكون الجواب مقنع علما انه ومن خلال الجدول يوجد اقتطاعات في اشهر اخرى لا يخفى عليك . معظم .. بل كل .. عمليات القروض التي تخص العاملين والموظفين في كل الأنظمة يتم اقتطاعها من المرتب شهريا .. الى ان يتم تسديد كامل القرض مثلا اذا الموظف مطالب بتسديد 3000 دينار سنويا .. ستكون الحصة الشهرية 250 دينار تخصم من مرتبه آليا حتى لو هناك قروض اخرى يضاف استحقاقها الشهري في عمود يخصها .. والنتيجة ان الموظف يستلم مرتب شهري صافي بعد اقتطاع المستحق هنا العملية تكون انسيابية ولسنا بحاجة الى اكواد فقط استعلام واحد يقوم بالمهمة . ثانيا لاحظت ان نوع الوظيفة او رقمها يختلف من موظف الى آخر .. الى هنا صحيح ولكن حالاات الموظف تختلف فمسمى الوظيفة يجب ان يكون ثابتا ولا يتغير الا في حال الترقية .. وغالبا مسمى الوظيفة يرتبط فقط في المرتب الاساسي والعلاوات وانت جعلت الوظيفة حالاات يجب ان تكون الحالة في حقل منفصل لا دخل للوظيفة بها مثلا مدير توفي يبقى المسمى مدير ولكن الحالة متوفى وهنا تطبق المزايا والضوابط على الحالة وليس على مسمى الوظيفة ظهر لي هذا الخلل عندما غيرت الرقم في Nr من 1 الى 15 تحولت جميع السجلات الى 15 وهذا ايضا خطأ لأن الواجب ان ما سبق تسديده وقت حياته لا يتغير
  10. تفضل المشكلة لديك ان نوع حقل الترقيم في الجدول لديك رقمي وحينما رغبنا في اضافة رمز توجب علينا تحويله الى نصي Serial number_zero1.rar
  11. الامثلة المعدلة اعلاه كثيرة لو ارفقت الملف الموجود به المشكلة .. ننظر فيه
  12. جزيت خيرا مؤكد لن نعدم فائدة .. فجزاك الله خيرا سوف نتصفحه و نقتبس اجمل ما فيه .. وندعوا لك ولن نستغني عن تفاعلك ومشاركتك معنا
  13. جزيت خيرا اخ علي في جهازي امتنع برنامج الحماية عن فتحه و حيث ان امتداده EXE اعتقدت انه ملف تنفيذي .. ولم يخطر ببالي انه ملف مضغوط .. لأن امتدادات الضغط معروفة شكرا لك
  14. الف شكر استاذنا الغالي على الجهد وعلى البذل والعطاء .. فجزاك الله خيرا عني وعن رواد هذا المنتدى خير الجزاء عن نفسي .. انتظر الاخراج .. أقف على اصابع قدمي .. لأستبدل فكرتك وعملك الاول بهذا المخرج الجميل لدي مشروع صغير خاص بالاطفال
  15. تم فتح موضوع جديد هنا
  16. مشاركة مع اخي خليفة ههههههههه ما لها دار لقمان ؟؟ اخي طاهر انت وجدت الجزء الرئيسي في المشكلة .. وهو حقل Nr فضلا اقرأ التالي بتمعن كلمة كلمة : في الاصل وبغض النظر عن كون نوع الحقل نصي وهو يحمل قيمة رقمية 1 ،2 ، 3 الخ .. هنا يمكن تغيير النوع من الجدول ويمكن ايضا تغيير النوع داخل الكود فمثلا اذا رقم 8 موجود في حقل نصي يمكننا تحويله داخل الكود الى قيمة رقمية . ولكن في جدولك الحقل يحمل قيمة نصية صريحة فرقم الوظيفة (متقاعد) الظاهر = 8 ولكن هذه الـــ 8 مجرد صورة وليست قيمة فالقيمة التي يحملها الحقل هي متقاعد هنا يتضح لك الخطأ بوضع الشرط داخل الكود : >= Nr 5 في الاصل غير موجود علاوة على انك تقارن قيمة نصية بصيغة خاصة بالارقام
  17. تم عمل التعديلات على النحو التالي : - اضافة جدول وسيط يحمل درجة الاجابة - تغيير كود الحاق الاجابة واستبداله باستعلام الحاق - اضافة بعض الضوابط مثل : الاغلاق بعد الحفظ منع اعادة الاختبار ( آلية مرنة يمكن للمسؤول تمكينه من اعادة الاختبار حيث اضفت حقل نعم/لا يمكن التحكم من خلاله) بعض اللمسات على نموذج الاجابة ....................................................... لترتيب هذا العمل .. مهم جدا العمل على آخر مثال تم التعديل عليه من قبل الاخوة الكرام وحبذا يراعى في الامثلة الترتيب الرقمي .. فالمرفق الجديد سميته Exam1 فيا ليت يكون التالي Exam2 .. وهكذا ... انتظر منكم الملاحظات او اي تعديلات قبل الانتقال للخطوة والمطلب التالي Exam1.rar
  18. شكرا استاذ عمر على المشاركة الجميلة تحقق من الخطوة الأولى 1- ضبط الوقت .. وغلق النموذج عند انتهائه 2- حفظ الاجابة في جدول tbl_Answers 3- عمل جدول اعدادات عامة ملاحظة : بعد التجربة اتضح لي وجوب ايجاد جدول وسيط لرصد الاجابة المبدئية في الوضع الحالي سيتم حفظ الفقرة الأخيرة اي اجابة سؤال واحد فقط انتظروني سأعمل على ذلك
  19. GenerateID = Year(Date) & "-" & Format(iNext, "000000") سبق وبينت لك انه يمكنك وضع اي فاصلة تريدها .. انظر السطر ادناه فقط غير علامة الناقص بما تريد مع الانتباه لعدم التعرض لعلامتي التنصيص يعني غير فقط : - بـــــ //
  20. السلام عليكم هذا برنامج لإجراء اختبارات القبول والمنافسة وقياس الثقافة والمعرفة للمتقدمين لوظائف معينة احببت ان افرد له موضوعا يتم بناؤه وفقا لمقترحات الاعضاء ولمسات وتوجيهات الخبراء الموضوع ملك الجميع لمن اراد ان يدلي بدلوه في المرفق حاليا تم عمل أساسات البرنامج : اولا - الجداول : 1- جدول اسماء الموظفين الذين يتقدمون لاداء الاختبار 2- جدول فرعي للمجموعات 3- جدول لمفاتيح الأسئلة 4- جدول الاسئلة ويشتمل على خيارات الاجابة ورقم الاجابة الصحيحة 5-جدول الاجابات ثانيا - الاستعلامات .. اثنان : واحد لتصفية المفاتيح حسب المجموعة .. والآخر لتصفية الاسئلة حسب المفاتيح ثالثا - النماذج : 1- نموذج دخول المتقدم .. يدخل الرقم القومي ورقم الهاتف لينقله الى : 2- نموذج الاسئلة واختيار الاجابة الصحيحة سجلت اثنين ، محمد .. الرقم القومي =1111 والهاتف = 1234 سعيد .. الرقم القومي = 2222 والهاتف = 1234 محمد في مجموعة المدراء وسعيد في مجموعة المعلمين وطبعا كل مجموعة لها اسئلتها التي تخصها ويمكنهم التغيير عشوائيا واختيار ما يرونه مناسبا من خلال تغيير المفتاح والبحث العشوائي عند النقر على السؤال تظهر خيارات الاجابة في الاسفل الى هنا كل شيء تمام التمام الخطوة او الخطوات القادمة المطلوبة كالتالي : 1- تفعيل الوقت ( العداد ) دقائق وثواني مثلا 10 دقائق في اعلى النموذج اذا انتهت تظهر رسالة بانتهاء الوقت ويتم غلق النموذج 2-لا يمكن الحفظ حتى تكتمل اجابات جميع الاسئلة 3- حفظ الحلول في جدول الاجابات tbl_Answers مع مراعاة اكتمال تعبئة جميع الحقول في الجدول 4- من قدم اختبار لا يمكن له ان يعيد الاختبار مرة اخرى .. ويتم حجبه من فورم الدخول new_test2.rar
  21. السبب هو ان نوع الحقل في الجدول رقمي ومنطقي يظهر معك خطأ فأنت بين خيارين : اما تحول الحقل في الجدول الى نصي ( من اجل يقبل الفاصلة) وإما تبقى على وضعك ولا تدخل الفاصلة في الكود وهذا مثالك بعد تحويله الى نصي وايضا تنسيق الارقام جعلتها 5 فلا اتوقع انك ستصل في سنة الى 99999 مائة الف الا واحد ولكن ان كانت هناك اكواد هو المعيار فيها فسوف تضطر الى تعديلها numero2.rar
  22. الدالة ستكون هكذا : التغير في مكانين .. بداية الرقم اصبح 6 بدلا من 5 والسطر الأخير يمكنك وضع الفاصلة التي تريد بدلا من "-" Public Function GenerateID(TableName As String, fieldName As String) As String on error resume next Dim vLastY As Variant Dim iNext As Integer vLastY = DMax(fieldName, TableName, fieldName & " LIKE '" & Year(Date) & "*'") If IsNull(vLastY) Then iNext = 1 Else iNext = Val(Mid(vLastY, 6)) + 1 End If GenerateID = Year(Date) & "-" & Format(iNext, "000000") End Function
  23. اهلا اخي العزيز صاحب الموضوع مشغول .. ولا اخفيك الفكرة راقت لي .. وعملت اضافات .. منها دالة لاختيار رقم عشوائي لذا دعنا نعمل عليه انت وأنا كبرنامج اختبار وقياس قابل لأكثر من رغبة سوف افتح موضوعا جديدا واطرح آخر تعديل ثم انتظر اضافاتك ولمساتك وهكذا حتى يخرج بثوب مناسب ما رأيك ؟
  24. نعم كأقصى عدد على الدالة الحالية هو 9999 جرب التعديل على الدالة بطريقة مختلفة نوعا .. ستبقى الخانات 6 ولكن يمكن ان يتم الترقيم الى 5 أو 6 خانات استغرب لماذا تريد ان يبقى صفرين بعد السنة لا فائدة منهما الدالة التالية الصفران موجودان ولكن متاح استخدامهما ويمكن لو اردت الفصل بين السنة والترقيم بفاصلة معينة مثل (-) او (/) او اي فاصلة Public Function GenerateID(TableName As String, fieldName As String) As String on error resume next Dim vLastY As Variant Dim iNext As Integer vLastY = DMax(fieldName, TableName, fieldName & " LIKE '" & Year(Date) & "*'") If IsNull(vLastY) Then iNext = 1 Else iNext = Val(Mid(vLastY, 5)) + 1 End If GenerateID = Year(Date) & Format(iNext, "000000") End Function
×
×
  • اضف...

Important Information