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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. حياك الله وهذه معادلة R1 الموجودة في التقرير: حولنا الساعات والدقائق الى ثواني ، ثم جمعنا الثواني =Sum(DatePart("h",[OT R1])*3600 + DatePart("n",[OT R1])*60 + DatePart("s",[OT R1])) جعفر
  2. وعليكم السلام تفضل في التقرير حولنا الساعات والدقائق الى ثواني ، ثم جمعنا الثواني ، بطريقة مستقلة لكل من R1 , R2 ، ثم استخدمنا الوحدة النمطية التالية لتحويل الثواني الي يوم : ساعة : دقيقة : ثانية : Function TimeInterval(value As Long) As String 'from 'http://bytes.com/topic/access/answers/532311-conversion-seconds-hours-minutes ' ' pass in a value in seconds Dim secVal As Integer Dim minVal As Integer Dim hourVal As Integer Dim dayVal As Integer Dim days As Long Dim hours As Long Dim mins As Long days = 86400 hours = 3600 mins = 60 dayVal = Fix(value / days) value = value - (dayVal * days) hourVal = Fix(value / hours) value = value - (hourVal * hours) minVal = Fix(value / mins) value = value - (minVal * mins) secVal = value 'TimeInterval = dayVal & ":" & hourVal & ":" & minVal & ":" & secVal TimeInterval = dayVal & "D : " & hourVal & "H : " & minVal & "M : " & secVal & "S" End Function والنتيجة في التقرير: جعفر 75.sum time.accdb.zip
  3. مادام الاستاذ رمهان حامل الراية ، نريد الحل بالمعكوس كذلك ، يعني نتكلم بالعربي ، والبرنامج يحول الكلام الى نص بس قبل لا أخونا أبوخليل يعطيني كرت أحمر (طبعا أخونا عبدالرحمن عنده الصلاحية بعد ) ، لخروجنا عن الموضوع ، ويحتاج نفتح موضوع جديد عندكم الصلاحية لفصل الموضوع لاحقا لوسمحتوا ، اذا أخونا الاستاذ رمهان تكرم بالاجابة جعفر
  4. وعليكم السلام غير حسب الصورة جعفر
  5. وعليكم السلام تفضل المجاميع تعتمد على الشهر المختار في FrmDiscountReport ، فعلى اساسه تظهر النتائج ، لذا تأكد بأنك تضغط على زر سداد الاقتطاع لك شهر على حدة. هناك الان استعلامان ، qry_Loans_Step1 ، والذي قد تستفيد منه انت لاحقا ، لأنه لكل قرض بصفة مستقلة ، والاستعلام المهم هو qry_Loans_Step2 والذي يأخذ نتائجه من الاستعلام الاول qry_Loans_Step1. هذا مجرد استعلام يعطي النتائج الصحيحة ، لذا لا تهتم بالحقول الزيادة التي به ، حيث انك عندما تعمل التقرير ، فضع فيه بصمتك النهائية واعتقد اننا بهذا الملف المرفق قد اقفلنا الموضوع ، اي موضوع Remaining ، بحلته الجديدة جعفر 11.6.FrmDiscountReport.mdb.zip
  6. السلام عليكم اولا ، اللي اوله شرط ، آخره نور انا ما عندي الاكسس 64 بت ، وما عندي تجربة في الموضوع ، لكني اتذكر ان اختنا الفاضلة الدكتورة أم عهود (حفظها الله اينما كانت) ، كان لها اجابة لهذا الموضوع ، فانا هنا ساعي بريد ، اكتب لكم بالضبط ما كتبته هي في منتدى الفريق العربي للبرمجة ، والشرط هنا ، اني قد لا استطيع مساعدتكم للنهاية ، لأني لا املك اكسس 64 بت والظاهر هنا ، ان الشئ الوحيد الذي يختلف فيه 64 بت عن 32 بت هو في بعض اوامر الكود والوحدات النمطية التي تنادي user32 مثلا ، اي انها 32 بت. والان من هنا ورايح هي مشاركة اختنا الفاضلة زهرة: في حالة وجود اكثر من وحدة نمطية بها Declare فإننا سوف نضع مثل هذا الكود في كل وحده نمطية على حده لتعمل على النظامين 32 بت و 64 بت وطبعا تختلف التصاريح من وحده نمطية والأخرى عن بعضها البعض #If Win64 Then Private Declare PtrSafe Function DisplaySize Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long #Else Private Declare Function DisplaySize Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long #End If دالة تحجيم النموذج بعد التعديل Option Compare Database #If Win64 Then Private Declare PtrSafe Function DisplaySize Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long #Else Private Declare Function DisplaySize Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long #End If Public Function resizefrom(frm As Form, bestw As Integer, besth As Integer) On Error Resume Next wrate = DisplaySize(0) / bestw hrate = DisplaySize(1) / besth frm.InsideWidth = frm.InsideWidth * wrate frm.InsideHeight = frm.InsideHeight * hrate Dim fc As Control For Each fc In frm.Controls fc.Top = fc.Top * hrate fc.Left = fc.Left * wrate fc.Width = fc.Width * wrate fc.Height = fc.Height * hrate fc.FontSize = fc.FontSize * wrate Next End Function اما الوحدات النمطية التي ليس بها Declare فتبقى كما هي بدون اي تغيير ملاحظة هامة للفهم عند اضافة PtrSafe فإنها تحتاج ايضا الى تعديل بعض المؤشرات Long تتغير الى LongPtr مثال Dim lStructSize As LongPtr دالة ()Len تتغير الى ()LenB حتى يتم قبولها في نظام 64 فقط مثال tsFN.lStructSize = LenB(tsFN) بقية المؤشرات مثل String و Boolean فإنها تبقى كما هي بدون تغيير راجع المصدر https://msdn.microsoft.com/en-us/library/office/gg264421.aspx بالتوفيق
  7. 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
  8. السلام عليكم أخي كريمو الثاني بحمد الله ومنته ، توصلت الى عمل الاستعلام والذي يعطي بقية مبلغ القرض 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
  9. السلام عليكم عفوا اخي احمد ، اسمح لي بإبداء رايي: صحيح ان البرنامج قد يكون ملكا لك ، ولكن البيانات ليست ملكك ، فهي ملك الذي ادخلها ، واذا دمرتها/حذفتها فانك تعتدي على ملكية غيرك !! لو كنت مكانك ، لأقفلت البرنامج بعدم السماح للمستخدم بعمل اي شئ ، سوى تصدير بياناته الى الاكسل مثلا. جعفر
  10. السلام عليكم أخي كريمو المرفق الان يعمل على: 1. بعد إضافة القرض في Cridi ، فان القرض يسجل في tbl_Loans ، 2. يمكنك تعديل هذا القرض وتأجيله ، ونتائجه تسجل في tbl_Loans ، 3. بعد إضافة القرض في Elec ، فان القرض يسجل في tbl_Loans ، 4. يمكنك تعديل هذا القرض وتأجيله ، ونتائجه تسجل في tbl_Loans ، 5. يمكن فتح نموذج سداد المبلغ ، والذي سيفتح سجلات القرض المختار. رجاء التجربة ، ثم التجربة ، وتجربة حذف القرض كذلك. الخطوة الاخيرة (هذا الذي اعتقده ) : حساب Remaining على اساس المبالغ المدفوعة. جعفر 11.5.FrmDiscountReport.mdb.zip
  11. السلام عليكم انا اسمي موجود اشكرك على الموضوع ، وعلى وجود اسمي بين اخواني العمالقة جعفر
  12. قلت لك عيني حتكون عليك وعيني عليك باردة ، ماشاء الله عليك جعفر
  13. أخوي سلمان اذا رجعت لنفس المشكلة اللي صادفتك سابقا ، بس لموضوع آخر ، ورد عليك أخونا الكبير ابوخليل على هذا الرابط: http://www.officena.net/ib/index.php?showtopic=61220 لاحظ الامر regsvr32 جعفر
  14. السلام عليكم أخي كريمو انا عدلت هذه المادة فقط ، فرجاء تجربتها مع باقي الخطوات التي كتبتها لك سابقا ، وموافاتي بالنتيجة جعفر 11.4.FrmDiscountReport.mdb.zip
  15. حياك الله كما قلت في البداية ، انا استعمل هذا الجدول تقريبا في جميع برامجي الرئيسية ، وهو يلبي لي طلب الزبائن ، وخصوصا بالاشهر ، واساس حل الموضوع هو الجدول نفسه جعفر
  16. وعليكم السلام هو الحل كما تفضل به الاخ مارد ولكن ، اذا كان نظام الوندوز عندك انجليزي وارت ان تكتب اسم اليوم او الشهر بالعربي ، فهذا يحتاج الى عمل اضافي انا عندي جدول اسمه 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
  17. وعليكم السلام الامر هو: regsvr32 "C:\WINDOWS\system32\MSINET.OCX " انت نسيت امر التسجيل هنا التفاصيل كاملة: http://www.ctimls.com/Support/KB/How%20To/Register_dll.htm جعفر
  18. متباركين شباب من الآن ورايح ، عيوننا بتكون على مشاركتكم (طبعا هذا ما يعني اني ما كنت متابع مشاركاتكم سابقا) جعفر
  19. السلام عليكم أخي المارد اذا كان الحقل 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) & "#" جعفر
  20. يا سلام ، هذا الفن وإلا بلاش
  21. انا دايخ وتعبان ، فاعطيت ما قل ودل ولكن ، لو ان سؤالك كان فيه عملية غير السالب والموجب والجمع ، كنا نضطر للكود بس الحمدلله جت سليمة جعفر
  22. لأن الطريقة الثانية فيها كود طويل وللعلم ، بدل : DoCmd.RunCommand acCmdSaveRecord تقدر تستعمل me.refresh او if me.dirty then me.dirty=false والقصد هو حفظ السجل جعفر
  23. تفضل يا ريس في النموذج: وكود بعد التحديث: Private Sub PSelect_AfterUpdate() DoCmd.RunCommand acCmdSaveRecord End Sub طبعا في طرق اخرى ، بس انا اليوم كسلان جعفر 73.Absence of Employees.mdb.zip
×
×
  • اضف...

Important Information