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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. 1. أخي كريمو ، وكيف استطيع ان اصلح ما قلت ، وانت لم تخبرني ما المشكلة!! وللعلم ، يجب التفريق بين شيئين مختلفين ، الجدول tbl_Loans و الاستعلام qry_Loans ،والاستعلام مجرد أداه للجدول. 2. نعم نستطيع ان نعمل زر لدفع قروض الشهر ، في النموذج FrmDiscountReport للشهر الذي تم اختياره لإستقطاعات الشهر. الزر هو "سدد مبالغ شهر الاقتطاعات" ، وهذا هو الكود الذي يملئ حقول الدفع للشهر المختار: Private Sub cmd_Pay_installments_Click() Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("Select * From tbl_Loans Where [Payment_Month]=#" & Me.txtMonth & "#") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount For I = 1 To RC rst.Edit 'check, maybe a manual payment is done, so don't over write it If Len(rst!Payment_Made_Cridi & "") = 0 And Not IsNull(rst!Loan_Cridi) Then rst!Payment_Made_Cridi = rst!Loan_Cridi End If If Len(rst!Payment_Made_Elec & "") = 0 And Not IsNull(rst!Loan_Elec) Then rst!Payment_Made_Elec = rst!Loan_Elec End If rst.Update rst.MoveNext Next I MsgBox "Payments made" End Sub يجب ان تعرف ان برنامج القروض الان يعتمد على الجدول tbl_Loans ، لذا ، فجميع خطوات الدفع لابد ان ندخلها في الجدول اولا (طبعا عن طريق النموذج frm_Loans) ، ثم يقوم الاستعلام بأخذ البيانات من هذا الجدول وعمل الحساب مثل ما تريد. 3. انا قلت: "هذه الحقول قد تبدو زيادة عن الازم في الوهلة الاولى ، وان بامكاننا ان نستعيض عن هذه الحقول ببعض الاوامر في الاستعلام (وهذه المشكلة التي كنا نعاني منها في البرنامج السابق) ، ولكنها تسهل الامور إن شاء الله." فجمع الحقلين في استعلام او حتى في تقرير سهل ، ولكن اذا اردت ان تفصلهم اذا كانوا مجتمعين ، فالمسألة ستكون صعبة وللعلم ، هذين الحقلين يتم احتساب نتائجهم عن طريق الوحدة النمطية ، وسترى هناك اننا نقوم بعمل معادلات مختلفة ، واذا اردت انت لاحقا ان تقوم بتغيير شئ ، فكما اخبرتك سابقا ، المعادلات سهلة التغيير الآن ، رجاء ، الغي جميع البيانات من جداول القروض ، وادخل مجموعة بيانات صحيحة ، ثم جرب البرنامج ، واذا اردت اي تعديل ، فرجاء ارسال البرنامج ذو البيانات الصحيحة ، والرجاء ان تكون دقيق في شرح المطلوب ، كالعادة جعفر 11.5.FrmDiscountReport.mdb.zip
  2. السلام عليكم أخي كريمو الثاني بحمد الله ومنته ، توصلت الى عمل الاستعلام والذي يعطي بقية مبلغ القرض Remaining طبعا اضطررت لعمل بعض التغييرات البسيطة على الجدول tbl_Loans ، واهمها هو عمل حقل Loan_Type لسهولة عمل استعلام لاحقا ، سواء لـ Cridi او Elec ، بالاضافة الى عمل حقل خاص لدفعات Cridi ودفعات Elec. هذه الحقول قد تبدو زيادة عن الازم في الوهلة الاولى ، وان بامكاننا ان نستعيض عن هذه الحقول ببعض الاوامر في الاستعلام (وهذه المشكلة التي كنا نعاني منها في البرنامج السابق) ، ولكنها تسهل الامور إن شاء الله. لا يوجد تغيير في طريقة العمل ، ولكن لدفع القرض الشهري ، فيجب عليك ان تفتح نموذج frm_Loans عن طريق الضغط على الزر سداد مبلغ ، وتضيف قيمة الدفعة يدويا (هذا ما اردته انت سابقا ، وخصوصا بأن الموظف الان يستطيع ان يدفع اي مبلغ يريده شهريا ) ، ولقد سهلت عليك ايضا ، بان تنقر الفأرة مرتين في حقل الدفع لذلك الشهر ، ليكتب المبلغ تلقائيا ). هنا وحدة نمطية جديدة Count_Remaining ، وهي التي تعطي Remaining ، بأخذ القيم من الجداول ، والكود سهل جدا: Function Count_Remaining(ID_Emp As Integer, ID_Loan As Integer, T As String) As Currency 'ID_Loan = Loan ID 'S = Sum of payments 'Type = Cridi or Elec 'we need to know how much is the Loan, from tables Cridi and ElectroMeng 'ans SUM the paid, from tbl_Loans If T = "Cridi" Then a = DLookup("[Cridi_Value]", "Cridi", "[ID]=" & ID_Loan) S = DSum("[Payment_Made_Cridi]", "tbl_Loans", "[EmployeeID]=" & ID_Emp) ElseIf T = "Elec" Then a = DLookup("[Elec_Value]", "ElectroMeng", "[ID]=" & ID_Loan) S = DSum("[Payment_Made_Elec]", "tbl_Loans", "[EmployeeID]=" & ID_Emp) End If Count_Remaining = a - Nz(S, 0) End Function هذا شكل الاستعلام: حاليا الاستعلام يجمع جميع مبالغ الموظف التي تم سدادها ، ولم اجربه لعدة قروض او قروض منتهية ، او .... ، فرجاء التجربة وإخباري بالنتيجة. جعفر 11.5.FrmDiscountReport.mdb.zip
  3. السلام عليكم عفوا اخي احمد ، اسمح لي بإبداء رايي: صحيح ان البرنامج قد يكون ملكا لك ، ولكن البيانات ليست ملكك ، فهي ملك الذي ادخلها ، واذا دمرتها/حذفتها فانك تعتدي على ملكية غيرك !! لو كنت مكانك ، لأقفلت البرنامج بعدم السماح للمستخدم بعمل اي شئ ، سوى تصدير بياناته الى الاكسل مثلا. جعفر
  4. السلام عليكم أخي كريمو المرفق الان يعمل على: 1. بعد إضافة القرض في Cridi ، فان القرض يسجل في tbl_Loans ، 2. يمكنك تعديل هذا القرض وتأجيله ، ونتائجه تسجل في tbl_Loans ، 3. بعد إضافة القرض في Elec ، فان القرض يسجل في tbl_Loans ، 4. يمكنك تعديل هذا القرض وتأجيله ، ونتائجه تسجل في tbl_Loans ، 5. يمكن فتح نموذج سداد المبلغ ، والذي سيفتح سجلات القرض المختار. رجاء التجربة ، ثم التجربة ، وتجربة حذف القرض كذلك. الخطوة الاخيرة (هذا الذي اعتقده ) : حساب Remaining على اساس المبالغ المدفوعة. جعفر 11.5.FrmDiscountReport.mdb.zip
  5. السلام عليكم انا اسمي موجود اشكرك على الموضوع ، وعلى وجود اسمي بين اخواني العمالقة جعفر
  6. قلت لك عيني حتكون عليك وعيني عليك باردة ، ماشاء الله عليك جعفر
  7. أخوي سلمان اذا رجعت لنفس المشكلة اللي صادفتك سابقا ، بس لموضوع آخر ، ورد عليك أخونا الكبير ابوخليل على هذا الرابط: http://www.officena.net/ib/index.php?showtopic=61220 لاحظ الامر regsvr32 جعفر
  8. السلام عليكم أخي كريمو انا عدلت هذه المادة فقط ، فرجاء تجربتها مع باقي الخطوات التي كتبتها لك سابقا ، وموافاتي بالنتيجة جعفر 11.4.FrmDiscountReport.mdb.zip
  9. حياك الله كما قلت في البداية ، انا استعمل هذا الجدول تقريبا في جميع برامجي الرئيسية ، وهو يلبي لي طلب الزبائن ، وخصوصا بالاشهر ، واساس حل الموضوع هو الجدول نفسه جعفر
  10. وعليكم السلام هو الحل كما تفضل به الاخ مارد ولكن ، اذا كان نظام الوندوز عندك انجليزي وارت ان تكتب اسم اليوم او الشهر بالعربي ، فهذا يحتاج الى عمل اضافي انا عندي جدول اسمه tbl_Months وبه اسماء الاشهر الهجرية ، والاشهر الانجليزية بالانجليزي والعربي ، والاشهر العراقية (الشامية) ، واضفت اليه الايام كذلك: وعليه ، عملت كود يقرأ اذا نظام الوندوز ، وعلى اساسه تستطيع ان تطلب اليوم ، كما في هذا النموذج (ادخل / اختر التاريخ ، ثم اضغط على مفتاح TAB على keyboard) ، وعلى اساسه سترى بقية الاسماء باللغة الاخرى: وهذا هو الكود الذي يقوم بكل شئ: Private Sub myDate_AfterUpdate() 'display the dates based on the system setting Me.Date_1 = Format(Me.myDate, "dddd dd/mm/yyyy") Me.Date_2 = Format(Me.myDate, "dddd dd, mmm yyyy") Me.Day_System = Format(Me.myDate, "dddd") Me.Month_System = Format(Me.myDate, "mmmm") 'read the 1st letter of the day, and check if it is Arabic or latin If Left(Asc(Format(Me.myDate, "dddd")), 1) > 127 Then 'the system is Arabic 'get the English info from the table Me.Day_table = DLookup("[Days_English]", "tbl_Months", "[Days_Arabic]='" & Format(Me.myDate, "dddd") & "'") Me.Date_3 = Me.Day_table & Format(Me.myDate, " dd/mm/yyyy") Me.Month_Table = DLookup("[Months_English]", "tbl_Months", "[Months_Georgian]='" & Format(Me.myDate, "mmm") & "'") Me.Date_4 = Me.Day_table & Format(Me.myDate, " dd, ") & Me.Month_Table & Format(Me.myDate, " yyyy") Else 'the system is English 'get the Arabic info from the table Me.Day_table = DLookup("[Days_Arabic]", "tbl_Months", "[Days_English]='" & Format(Me.myDate, "dddd") & "'") Me.Date_3 = Me.Day_table & Format(Me.myDate, " dd/mm/yyyy") Me.Month_Table = DLookup("[Months_Georgian]", "tbl_Months", "[Months_English]='" & Format(Me.myDate, "mmmm") & "'") Me.Date_4 = Me.Day_table & Format(Me.myDate, " dd, ") & Me.Month_Table & Format(Me.myDate, " yyyy") End If End Sub جعفر tbl_Months.zip
  11. وعليكم السلام الامر هو: regsvr32 "C:\WINDOWS\system32\MSINET.OCX " انت نسيت امر التسجيل هنا التفاصيل كاملة: http://www.ctimls.com/Support/KB/How%20To/Register_dll.htm جعفر
  12. متباركين شباب من الآن ورايح ، عيوننا بتكون على مشاركتكم (طبعا هذا ما يعني اني ما كنت متابع مشاركاتكم سابقا) جعفر
  13. السلام عليكم أخي المارد اذا كان الحقل myDate بصيغة تاريخ ، فالمعادلة التالية هي لصيغة ارقام: j = "Day(MyDate) = " & Day(Me.MyDate) واذا اردنا ان نعملها بصيغة تاريخ ، فالمعادلة ستكون ، كما شرحتها انت في موضوع رابط دالة DLookup ، والتي تعتبر مثل Dsum و Dmax ووو: http://www.officena.net/ib/index.php?showtopic=61469 j = "Day(MyDate) = #" & Day(Me.MyDate) & "#" جعفر
  14. يا سلام ، هذا الفن وإلا بلاش
  15. انا دايخ وتعبان ، فاعطيت ما قل ودل ولكن ، لو ان سؤالك كان فيه عملية غير السالب والموجب والجمع ، كنا نضطر للكود بس الحمدلله جت سليمة جعفر
  16. لأن الطريقة الثانية فيها كود طويل وللعلم ، بدل : DoCmd.RunCommand acCmdSaveRecord تقدر تستعمل me.refresh او if me.dirty then me.dirty=false والقصد هو حفظ السجل جعفر
  17. تفضل يا ريس في النموذج: وكود بعد التحديث: Private Sub PSelect_AfterUpdate() DoCmd.RunCommand acCmdSaveRecord End Sub طبعا في طرق اخرى ، بس انا اليوم كسلان جعفر 73.Absence of Employees.mdb.zip
  18. وعليكم السلام أخي كريمو نعم عدت اليوم عصرا من سفري وان شاء الله غدا اواصل من حيث انتهينا ، إلا اذا عندك ملاحظات جديدة جعفر
  19. السلام عليكم ايش رأيك في هذه الطريقة: سحب أكثر من حقل من سجل واحد في الجدول ، وهذا الرابط فيه المثال http://www.officena.net/ib/index.php?showtopic=61152&p=394338 جعفر
  20. مبارك إن شاء الله أبو ياسر :-) و إن شاء الله نرى مشاركاتك في مساعدة الأخوة كذلك :-) جعفر
  21. وعليكم السلام ورحمة الله وبركاته 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 سابقا). جعفر
  22. حياك الله هاه ، هل استقر رأيك على صورة معينة حياك الله اعتقد سؤالك في الموضوع الاخر يعتبر ملغي الان ، صح؟ جعفر
  23. تعديل بسيط ، اذا لم يتم اخيار اي رقم وتم الغاء الامر: 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 جعفر
×
×
  • اضف...

Important Information