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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    408

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

  1. مبارك إن شاء الله أبو ياسر :-) و إن شاء الله نرى مشاركاتك في مساعدة الأخوة كذلك :-) جعفر
  2. وعليكم السلام ورحمة الله وبركاته 01- فكرة الترتيب تتم لجميع القروض ويكتب 0.00 في الجدول tbl_Loans للأشهر المعفاة لا ليس لجميع القروض ، وإنما للقرض الذي الذي تم اختياره (السجل الذي تكون عليه في Cridi وتضغط على زر اعادة تقسيم الاقتطاع). بعدما وجدت صعوبة في قرض2 الى قرض 4 ما هي هذه الصعوبة ، رجاء اعطني تفاصيل دقيقة بأمثلة لوسمحت ، لأني اخبرتك: فكل شئ يعتمد على هذا النموذج. 02- مالغاية من أنشاء نموذج فرعي FrmCridi_sub_OLD انا عندما اغير شئ في برنامج ، دائما احتفظ بالاصل ، واطلق عليها OLD ، حتى اعرفه ، ويمكن في النهاية حذفه. 03 - الإستعلام qry_Loans ينقصة الباقي الشهري وهذا هو " لب المطلب " الذي تطرقنا له منذ البداية المسألة سهلة ولكننا لم نصل اليها: 1. عند دفع كل شهر ، فسنكتب في خانة Payment_Made في النموذجfrm_Loans ، القيمة المدفوعة لذلك الشهر (وهذا ينطبق على الموظف الذي يريد ان يدفع اي مبلغ يحب في ذلك الشهر) ، 2. عندها ، كل الذي يجب عمله هو جمع حقل Cridi وحقل Payment_Made في الاستعلام qry_Loans ، ونطرحهم من بعض لنحصل على الباقي الشهري Remaining . 04- النموذج الفرعي FrmCridi_sub2 الدي هو دمج بين Cridi و Elec عند فتحة لا نلاحظ شيئا به بالرغم أني سجلت معلومات ب Elec انا صغرت الحقول لكي يتسع المكان لبقية حقول ElectroM الاضافية ، ولكني لم اصل اليها. (ولكني ضبطته بحيث تستطيع استبداله مكان FrmCridi_Sub ، وسيعمل بالطريقة الصحيحة) ، ولكن ، قد نلغي فكرة دمج النموذجين ، فعندها تستطيع ان تنسخ الكود من النموذج Cridi الى النموذج ElectroM لعمل الازم. 05- زر سداد المبلغ بنموذج Cridi لا يعمل هذا الزر يجب ان يفتح النموذج frm_Loans للقرض/السجل الذي تكون عليه في Cridi ، وانت بعد ذلك تدخل مبلغ السداد للشهر المطلوب (لاحظ 03.1 و 03.2 اعلاه لمعرفة طريقة الحساب). 06- عند تجربة قرض ومن بعد يتم حذفه نلاحظ انه يحدف من الجدول Cridi ولا يحذف من الجدول tbl_Loans اعمل علاقة بين الجدول Cridi والجدول tbl_Loans كما في الصورة المرفقة: آمل ان توفق في إنشاء كود للباقي "Remaining" في الإستعلام qry_Loans رجاء مراجعة 03.1 اعلاه أخي كريمو انت الآن تستطيع ان تملئ الفاراغات التي انا لم اكملها ، فالموضوع الآن اصبح واضحا لطريقة عمل الجدول tbl_Loans ، نعم قد نحتاج حقل خاص لـ Payment_Made_Cridi و Payment_Made_Elec ، ولكن سنعرف هذا الشئ لما نوصل الى Elec ، والذي انت تستطيع ان تعمله ، بواسطة نفس الكود الموجود في Cridi. رجاء ملاحظت اني في اي للتاريخ ، فاني أغير اليوم واجعله" اول الشهر" (لهذا السبب كنت تحصل على خطأ في الكود في النموذج frm_Avoid سابقا). جعفر
  3. حياك الله هاه ، هل استقر رأيك على صورة معينة حياك الله اعتقد سؤالك في الموضوع الاخر يعتبر ملغي الان ، صح؟ جعفر
  4. تعديل بسيط ، اذا لم يتم اخيار اي رقم وتم الغاء الامر: Private Sub Command25_Click() 'On Error Resume Next ' DoCmd.GoToRecord , , acNewRec 'If Me.NewRecord And Me.CurrentRecord > 1 Then ' Me.NUM_ESAL = DLast("[num_esal]", "1") ' End If Num = InputBox("Please Enter the number") If Len(Num & "") = 0 Then Exit Sub Set rst = Me.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount DoCmd.GoToRecord , , acFirst For I = 1 To RC rst.Edit rst!NUM_ESAL = Num rst.Update rst.MoveNext Next I End Sub جعفر
  5. تفضل أخي هذا كود الزر: Private Sub Command25_Click() 'On Error Resume Next ' DoCmd.GoToRecord , , acNewRec 'If Me.NewRecord And Me.CurrentRecord > 1 Then ' Me.NUM_ESAL = DLast("[num_esal]", "1") ' End If Num = InputBox("Please Enter the number") Set rst = Me.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount DoCmd.GoToRecord , , acFirst For I = 1 To RC rst.Edit rst!NUM_ESAL = Num rst.Update rst.MoveNext Next I End Sub مافي داعي تكتب الرقم ، وطريقة العمل: 1. اختر التاريخ ، 2. اضغط على الزر ، 3. في نافذة تطلب منك الرقم ، ادخل الرقم واضغط ok والسلام جعفر
  6. تفضل وهذا هو الكود: Option Compare Database Private Sub Command18_Click() ' 'get the days, months, years ' Call YMDDif(Date_From, Date_To) 'ما قبل 1/8/1994 ' Me.Basic_Salary_Contributions = Me.Basic_Salary * 0.05 * _ ((Me.txt_Years * 12) + (Me.txt_Months) + (Me.txt_Days / 30)) 'بعد 1 / 8 / 1994 ' Me.Basic_Salary_Contributions = Me.Basic_Salary * 0.06 * _ ((Me.txt_Years * 12) + (Me.txt_Months) + (Me.txt_Days / 30)) Me.txt_Years = 0 Me.txt_Months = 0 Me.txt_Days = 0 Me.txt_Years_After = 0 Me.txt_Months_After = 0 Me.txt_Days_After = 0 'Check_Date = CDate(1 / 8 / 1994) Check_Date = DateSerial(1994, 8, 1) 'case 1 If Me.Date_From >= Check_Date Then 'get the days, months, years Call YMDDif(Date_From, Date_To) Me.Basic_Salary_Contributions = Me.Basic_Salary * 0.06 * _ ((Me.txt_Years * 12) + (Me.txt_Months) + (Me.txt_Days / 30)) GoTo Exit_1: End If 'case 2 If Me.Date_From <= Check_Date And Me.Date_To <= Check_Date Then 'get the days, months, years Call YMDDif(Date_From, Date_To) Me.Basic_Salary_Contributions = Me.Basic_Salary * 0.05 * _ ((Me.txt_Years * 12) + (Me.txt_Months) + (Me.txt_Days / 30)) GoTo Exit_1: End If 'case 3 If Me.Date_From <= Check_Date Then 'get the days, months, years Call YMDDif(Date_From, Check_Date) Me.Basic_Salary_Contributions = Me.Basic_Salary * 0.05 * _ ((Me.txt_Years * 12) + (Me.txt_Months) + (Me.txt_Days / 30)) 'get the days, months, years Call YMDDif_After(Check_Date, Date_To) Me.Basic_Salary_Contributions = Basic_Salary_Contributions + (Me.Basic_Salary * 0.06 * _ ((Me.txt_Years_After * 12) + (Me.txt_Months_After) + (Me.txt_Days_After / 30))) End If Exit_1: 'من 2 / 11 / 1996 ' Me.Salary_Additions_Contributions = Me.Salary_Additions * 0.06 * _ ((Me.txt_Years * 12) + (Me.txt_Months) + (Me.txt_Days / 30)) End Sub Public Sub YMDDif(sDate1, sDate2) 'sdate1 earliest date sdate2 later Dim iYear As Integer Dim iMonth As Integer Dim iDay As Integer Dim dInterim1 As Date iMonth = DateDiff("m", sDate1, sDate2) If Day(sDate1) > Day(sDate2) Then iMonth = iMonth - 1 End If dInterim1 = DateAdd("m", iMonth, sDate1) iDay = DateDiff("d", dInterim1, sDate2) Me.txt_Days = iDay Me.txt_Months = iMonth Mod 12 Me.txt_Years = iMonth \ 12 'YMDDif = CStr(y) & " Years " & CStr(M) & " months " & CStr(D) & " days" End Sub Public Sub YMDDif_After(sDate1, sDate2) 'sdate1 earliest date sdate2 later Dim iYear As Integer Dim iMonth As Integer Dim iDay As Integer Dim dInterim1 As Date iMonth = DateDiff("m", sDate1, sDate2) If Day(sDate1) > Day(sDate2) Then iMonth = iMonth - 1 End If dInterim1 = DateAdd("m", iMonth, sDate1) iDay = DateDiff("d", dInterim1, sDate2) Me.txt_Days_After = iDay Me.txt_Months_After = iMonth Mod 12 Me.txt_Years_After = iMonth \ 12 'YMDDif = CStr(y) & " Years " & CStr(M) & " months " & CStr(D) & " days" End Sub انا طلبت منك: يعني بغيت لما ادخل تواريخ ، اعرف مو نتائجها ، فعلى اساسه اصلح الكود ، بس للأسف انت ما حطيت شئ!! والملف يجب ان يكون مضغوط علشان ترفعه للمنتدى ، ماعدا الصور جعفر 63.1.مساهمة الراتب.accdb.zip
  7. السلام عليكم أخي كريمو الرجاء تجربة المرفق للنموذج Cridi ، وتأخير الاستقطاع ، والتأكد ان كل التغييرات تمام في الجدول tbl_Loans. لن ننتقل الى ElectroM ، لأنه ببساطة نسخ ولصق (مع تعديل بسيط) من كود Cridi. اذا تلاحظ ، عملت Cidi_sub2 ، والفكرة هي دمج Cridi و Elec في هذا النموذج (وعليه لن نحتاج الى كود آخر لنموذج آخر) ، كان ودي ان اضع frm_Loans كنموذج فرعي في النموذج Cridi ، حيث ستكون عندك المعلومة كاملة عن جميع القروض للموظف. جعفر 11.4.FrmDiscountReport.mdb.zip
  8. السلام عليكم جرب الملف المرفق لوسمحت واذا في اي ملاحظة ، ياريت تعمل لي مثل الجدول: المدة قبل (يوم ، شهر ، سنة) ، المدة بعد (يوم ، شهر ، سنة) ، وتحط النتائج في المعادلة. جعفر 63.مساهمة الراتب.accdb.zip
  9. جرب رفع الملف هذا !! شوف النتائج في الصور المتحركة: جعفر 66.BarcodeStudent.mdb.zip
  10. تفضل والطريقة: 1. تعمل استعلام للطلبة الحاضرين في ذلك اليوم ، 2. تعمل استعلام يقارن: أ- الجدول اللي فيه جميع الاسماء ، ب- مع الاستعلام اللي فيه الطلبة الحاضرين. جعفر 66.BarcodeStudent.mdb.zip
  11. السلام عليكم شباب ممكن ان ادلو بدلوي في الواقع ، مع سهولة الدالة ، إلا ان لها استعمالات اكاد لا استغني عنها في اي من برامجي 1.عندنا قيمة الحقل في الجدول ممكن تكون Null ، ومعناه ان مافي اي معلومة دخلت في هذا الحقل ، 2.وممكن ان تكون هناك قيمة في الحقل ، 3.وممكن يكون فاضي ، ومعناه انه تم ادخال قيمة في الحقل ومن ثم تم حذف هذه القيمة. اذا كان اسم الحقل fName مثلا ، واذا اردنا ان نعرف اذا كان الحقل فاضي ، فعادة نقوم بالكود التالي لفحص الطريقتين: if isNull([fName]) or if [fName]="" ولكني استخدم دالة LEN لفحص الطريقتين مرة واحدة ، هكذا: if LEN([fName] & "")=0 جعفر
  12. عفوا ، انا اعتقدت تقرير المتأخرين عطني شوية وقت واحاول اعمل لك استعلام الغائبين جعفر
  13. ليش؟ رجاء لا تغير المفتاح الرئيسي ، لأنه تارة ينفعك انت ، وتارة ينفع البرنامج. فاذا امكن ، ارجع المفتاح الرئيسي. حياك الله التقرير عبارة عن تنسيق للإستعلام ، فعليك بالرأس وسيأتيك الذيل ببلاش سر الاستعلام هو التنسيق ، لاحظ الصورة المرفقة ، التنسيق في النموذج ، وفي الاستعلام: ياريت تخلي لنا الرابط هنا ، علشان يستفيد الجميع من الشرح جعفر
  14. السلام عليكم أستاذنا الفاضل / الجندبي (هاي لزقة فيك ) كان على بالي أخبرك عن موضوع ارفاق صور الطلبه في البرنامج ، ولكن وللأسف نسيت وشكرا لأخي حربي ، ذكرني بالموضوع فكرة إرفاق الصور داخل البرنامج ، ستؤدي الى مشاكل في البرنامج ، ومنها ان حجم البرنامج سيصبح كبيرا ، وقد لن تستطيع تستعمله!! والطريقة الصحيحة هي جعل الصور في مجلد على الكمبيوتر ، وانا افضل ان يكون هذا المجلد في نفس المجلد الذي يكون فيه برنامج الجداول (هذا اذا كان برنامجك مقسم الى قسمين) ، وإلا فيكون المجلد في نفس مجلد البرنامج. الملف المرفق بصيغة 2003 ، مع بعض التعديلات على البرنامج السابق ، والصور غير مرفقة في الجدول في البرنامج ، وانما هناك مجلد اسمه Student_Pictures (وانا وضعت فيه صورة للأخ أحمد واخرى لرائد) ، ويجب ان تضع مجلد الصور في نفس مجلد البرنامج (ما يهم اين ، ودائما تستطيع ان تنقلهم معا الى اي مكان تحب ، بشرط ان يكونوا مع بعض) ، واذا اردت ان يكون مجلد الصور في اي مكان آخر في الكمبيوتر ، فيجب تغيير المسار في الوحدة النمطية (وهناك مثال لهذا). جرب ادخال الباركود لأحمد او رائد ، ثم اضغط TAB ، وسترى الصورة جعفر 66.BarcodeStudent.mdb.zip
  15. وعليكم السلام أخي المسألة مو فقط مسألة استيراد ملفات pdf ، وانما كيف وضعها على النموذج كذلك ، فنموذجك مهيأ للصو وليس لملفات pdf!! الرابط التالي يعطيك مثال للإثنين: http://www.officena.net/ib/index.php?showtopic=60235 جعفر
  16. مع اني معارض فكرة إعطاء تقرير عن المتأخرين (مو انا كنت منهم ايام زمان ) ، ولكن تفضل: جعفر 66.BarcodeStudent.accdb.zip
  17. الله يطول في عمرك أخوي ، لا ما قرأت المرفق انت ماشاء الله عليك مادمت كتبت الكود ، قلت اعطيك الجواب ، وانت تحطه في المكان اللي تريده بس مادمت مصر اني احط الجواب في الكود ، بدل هذا: Me.acpt20 بهاي: left(Me.acpt20,1) جعفر
  18. سهله msgbox left([acpt20 ],1) جعفر
  19. السلام عليكم أخي محمد انا لن اتطرق لطريقة عمل النموذج الجديد ، "لأننا" لم نلحظ المشكلة في النموذج الاصل ولكني دخلت في كود Combopn_AfterUpdate : pn = DLookup("pn", "code", "[pn]=forms!frm_dataentry!Combopn") size = DLookup("Size", "code", "[pn]=forms!frm_dataentry!Combopn") vendor = DLookup("Vendor", "code", "[pn]=forms!frm_dataentry!Combopn") Description = DLookup("Description", "code", "[pn]=forms!frm_dataentry!Combopn") Maxrl = DLookup("Maxrl", "code", "[pn]=forms!frm_dataentry!Combopn") Maxrlegyptair = DLookup("Maxrlegyptair", "code", "[pn]=forms!frm_dataentry!Combopn") ACType = DLookup("actype", "code", "[pn]=forms!frm_dataentry!Combopn") Pos = DLookup("pos", "code", "[pn]=forms!frm_dataentry!Combopn") BiasRadial = DLookup("biasradial", "code", "[pn]=forms!frm_dataentry!Combopn") code = DLookup("code", "code", "[pn]=forms!frm_dataentry!Combopn") لاحظت انك تنادي الجدول (اي تعمل استعلام للجدول) 10 مرات !! انا دائما لما اعمل برامجي ، اعمل البرنامج على اساس انه سيكون عبارة عن جزئين ، الواجهة FE ، والجداول BE ، وان الجداول BE ، ستكون في شبكة ، وان الواجهة FE ستكون لأكثر من مستخدم. لهذا السبب ، فيجب ان نقلل الزحمة في الشبكة ، وذلك بتقليل زيارة/استعلام الجداول قدر الإمكان ، وعند كل زيارة ، يجب ان نأخذ اكبر كمية من البيانات المطلوبة ، ثم نتعامل معها محليا في FE. لذلك ، فانا هنا اعطيك احد البدائل (والتي لا يعرفها الكثير ، لأنها تعمل على الاكسس 2003 فما فوق) ، فالكود التالي ، يقوم بزيارة/استعلام الجدول عن طريق DLookup مرة واحدة ، ويأخذ 10 بيانات مرة واحدة ، فلذا يمكن ان يستبدل كودك اعلاه: Dim x() As String A = Nz(DLookup("[pn] & '|' & [Size] & '|' & [Vendor] & '|' & [Description] & '|' & [Maxrl] & '|' & [Maxrlegyptair] & '|' & [actype] & '|' & [pos] & '|' & [biasradial] & '|' & [code]", "code", "[pn]=forms!frm_dataentry!Combopn"),"|||||||||") 'ويمكن استعمال اي شيء بدل عن | فمثلا الفاصلة 'A حتى اذا لم هناك قيمة للمتغير Nz نستعمل الدالة 'عدد مرات وضع العلامة | في نهاية السطر ، يكون نفس عددها في المعادلة 'لهذا السبب نرى اننا وضعنا 9 منها في نهاية السطر x = Split(A, "|") ' For i = LBound(x) To UBound(x) ' Debug.Print x(i) ' Next i Me.pn = x(0) Me.size = x(1) Me.vendor = x(2) Me.Description = x(3) Me.Maxrl = x(4) Me.Maxrlegyptair = x(5) Me.ACType = x(6) Me.Pos = x(7) Me.BiasRadial = x(8) Me.code = x(9) جعفر
  20. نعم ممكن في الكود بس اللي بيصير (حسب فهمي): اذا انت دخلت التواريخ التالية للموظف لحساب مساهمته: من 1-1-1993 الى 1-1-2000 1. لازم نحسب الفترة من 1-1-1993 الى 1-8-1994 (عدد الايام ، وعدد الاشهر ، وعدد السنين) ، ثم نحسب مساهمة الراتب مال هذه الفترة ، 2. لازم نحسب الفترة من 1-8-1994 الى 1-1-2000 (عدد الايام ، وعدد الاشهر ، وعدد السنين) ، ثم نحسب مساهمة الراتب مال هذه الفترة ، 3. نجمع مساهمة الراتب 1 + 2 سؤال: هل طريقتي صحيحة؟ اذا كانت صحيحة ، فلا يوجد معنى لوجود عدد الايام ، وعدد الاشهر ، وعدد السنين في النموذج ، لأنك ما بتعرف هي حال اي مجموعة ، واللي يزيد الطين بلّه ، رقم 4 في الاسفل كذلك 4. مساهمة البدلات ، قبل تاريخ 2-11-1996 شو نسوي ابها؟ جعفر
  21. عذرا على الخطأ جرب هذه النسخة ، وقد عملت الاستعلام qry_Loans ، وتفتحه من النموذج (شوف الصورة): طبعا تقدر تمسح كل شئ من الجداول وتبدأ من جديد ، جربه لوسمحت 1. انت تريد ان تعطي الاختيار للمموظف في عملية سداد المبلغ ، وهو يختار الاشهر؟ اذا كان الموضوع كذلك ، فيجب ان تقوم بالعملية يدويا ، فالبرنامج لا يستطيع معرفة الاشهر بهذه الطريقة!! 2. بالنسبة لتوزيع المبلغ ، فاعتقد بأن يوزع على الاشهر ، بقيمة قسط الشهر ، وليس أكثر (هذا سيسهل عملية التقرير ، وكل رقم سيكون بشهره) ، اما اذا لم نلتزم بتوزيع الاشهر حسب القسط ، فمعناه مثلا: قسط 8-2015 هو 2000 ، ولكنه دفع 4000 ، فمعناه يجب علينا ان نجمع الارقام تراكميا للحصول على الرقم النهائي ، بينما الطريقة الاولى جاهزة وبدون ارقام تراكمية بالنسبة لدمج الجدولين ، فرجاء إخباري (في صورة او اكسل) عن الحقول المتشابهة في الجدولين جعفر 11.3.FrmDiscountReport.mdb.zip
  22. رحم الله والديك أخوي أبوخليل ، صرت في فريقنا أخي محمد ، صرنا ثلاثه (انا وراعي الغنم وأبوخليل) نقول النسخة مافيها شئ جعفر
  23. طيب انا ما شايف اي تغيير في السجلات في هذه النسخة!!
  24. أستاذ محمد خلينا في موضوع واحد ونحاول نحل المشكلة ، ومافي داعي لفتح موضوع جديد !! عفوا أخوي أبوخليل ، اذا ممكن لوسمحت تشاركنا في الرابط ، علشان نحل الموضوع مع بعض: http://www.officena.net/ib/index.php?showtopic=61152&p=393969 جعفر
×
×
  • اضف...

Important Information