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

jjafferr

أوفيسنا
  • Posts

    9,871
  • تاريخ الانضمام

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

  • Days Won

    403

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

  1. وعليكم السلام اذا كنت تدخل السنة فقط ، فالافضل ان يكون الحقل رقمي بدل نص ، ولا تحتاج ان يكون تاريخ ، لأن الرقم 1400 بدون يوم وشهر لا يعتبر تاريخ جعفر
  2. أخي هشام المشكلة انك استعملت مصطلحات برمجية ، فيتوجه ذهننا الى ما قلت ، ونصبح ضائعين بدون التوجيه لمكان الخطأ والأفضل لك ان تخبرنا ماهو الخطأ الذي تواجهه ، اخبرنا كـ قصة ، وليس كـ مصطلح ، وتخبرنا بالبيانات التى حصلت عليها من البرنامج ، وما يجب ان تحصل عليه ، وعليه نعرف اين الخطأ. ورجاء ، اكتب المشكلة بأدق التفاصيل وبالتفصيل الممل (كتابة وبيانات مستخدما اسماء الحقول والبيانات من البرنامج) ، لأنك أعرف بالبرنامج منا ، وانما نحن نتوجه الى ما ترشدنا اليه جعفر
  3. السلام عليكم أخي الطاهر الحمدلله ان الأمور مضت على خير رجاء لا تضع اي شروط او معايير في الاستعلام ، فالاستعلام مصمم ان لا يعطيك سجلات فارغة ، وانما السجلات التي بها مبالغ فقط ، لهذا ، فانت غير محتاج لإضافة شرط او معيار لتحقق ان لايكون TheSum = 0 ، لأنها لن تكون صفر للأشهر التي بها مبالغ مسددة ، ولكنها ستكون صفر اذا اخترت تاريخ التقرير يكون أكبر من الشهر الحالي (اي الشهر الذي لم نسدد فيه القرض بعد). جعفر
  4. السلام عليكم أخي كريمو الظاهر من ردك انك غير راض عن لهجتي في مشاركتي السابقة !! ولكن اسمح لي ان اوضح لك شئ ، الظاهر انك لم تلاحظه ، وهو عملية السداد/الاستقطاع التلقائي لجميع الموظفين ، سواء Cridi او Elect او Others للشهر الذي تكون فيه (شهر الكمبيوتر) ، وذلك عند فتحك النموذج FrmDiscountReport ، وبدون اي تدخل منك (جرب ، غيّر شهر الكمبيوتر الى الشهر التالي ، ثم افتح النموذج FrmDiscountReport وسترى قصدي). اذا لم تكن منتبها لهذا الموضوع ، فما عساي ان افعل !! تفضل ، هذا ما دار بيننا حول هذه النتقطة: الموضوع يرجع الى مشاركتي رقم 73 في طريقة ادخال مبالع الدفع/الاستقطاع لكل موظف على حدة: في المشاركة رقم 74 ، انت قلت: وانا رددت عليك في المشاركة رقم 75: وفي مشاركتي رقم 78 عملت الزر يقوم بعملية الدفع لجميع الموظفين دفعة واحدة: في مشاركتك رقم 79 ، وبعد تجربتك لزر الدفع/الاستقطاع ، قلت: وفي مشاركتي رقم 80 ، وافقتك الرأي وقلت: وفي مشاركتي رقم 83 قلت: الحمدلله جعفر
  5. أخي ، رجاء تعطينا مثال واضح نستطيع ان نتتبعه ، حتى نستطيع ان نوصل للذي تريد. المثال الذي ذكرته غير مفهوم اعطنا اكثر من مثال في ملف اكسل او في صورة. جعفر
  6. السلام عليكم ورحمة الله وبركاته وبعد سنين من العمل في كود الأكسس ، لازلت الى الأمس القريب كنت اعاني من عدم حصولي على النتائج المطلوبة من الجدول (بدون مجموعة محاولات) ، اذا كان المعيار هو حقل تاريخ الى ان حصلت على الكود التالي ، والذي اصبح التعامل فيه مع التاريخ سهلا انا احفظ هذه الوحدة النمطية بإسم fDateFormat: Function DateFormat(varDate As Variant) As String 'Purpose: Return a delimited string in the date format used natively by JET SQL. 'Argument: A date/time value. 'Note: Returns just the date format if the argument has no time component, ' or a date/time format if it does. 'Author: Allen Browne. allen@allenbrowne.com, June 2006. ' 'calling the Function: DateFormat(The_Date_Field) 'a = dlookup("[some field]","some table","[id]=" & me.id & " And [Date_Field]=" & DateFormat(The_Date_Field)) ' If IsDate(varDate) Then If DateValue(varDate) = varDate Then DateFormat = Format$(varDate, "\#mm\/dd\/yyyy\#") Else DateFormat = Format$(varDate, "\#mm\/dd\/yyyy hh\:nn\:ss\#") End If End If End Function وطريقة استعمال الكود كالأمثلة التالية: a = dlookup("[some field]","some table","[id]=" & me.id & " And [Date_Field]=" & DateFormat(The_Date_Field)) او ("Select DISTINCT cen, [Date] From TTTT Where [Date]=" & DateFormat(Me.Idate)) او عدة طرق اخرى اليكم مثالين في البرنامج المرفق ، كيف ان الدالة DateFormat تعطيني نتائج صحيحة مباشرة ، بينما استخدام الطريقة التقليدية للتاريخ لا تعطيني النتيجة مباشرة: الجدول يحتوي على تاريخين ، 1-5-2015 و 2-5-2015 ، وهنا سنقوم بالتجربة على التاريخ 1-5-2015 (ويمكنكم استخدام التاريخ التاثي 2-5-2015) ، وللتأكد من نتائجنا ، عملنا استعلامين : و استخدام الكود في Recordset 1. مع استعمال الدالة DateFormate Set rst = CurrentDb.OpenRecordset("Select DISTINCT cen, [Date] From tbl_T Where [Date]=" & DateFormat(Me.idate)) rst.MoveLast: rst.MoveFirst RC1 = rst.RecordCount والنتيجة صحيحة ، كما تدل عليه نتيجة الاستعلام في الاسفل: 2. مع عدم استعمال الدالة DateFromat ، وانما استخدام الطريقة التقليدية للتاريخ: Set rst = CurrentDb.OpenRecordset("Select DISTINCT cen, [Date] From tbl_T Where [Date]=#" & Me.idate & "#") rst.MoveLast: rst.MoveFirst RC2 = rst.RecordCount والنتيجة خطأ ، كما تدل عليه نتيجة الاستعلام في الاسفل: استخدام الدالة Dcount 3. مع استعمال الدالة DateFormat RC3 = DCount("*", "tbl_T", "[Date]=" & DateFormat(Me.idate)) والنتيجة صحيحة ، كما تدل عليه نتيجة الاستعلام في الاسفل: 4. مع عدم استعمال الدالة DateFormat ، ، وانما استخدام الطريقة التقليدية للتاريخ: RC4 = DCount("*", "tbl_T", "[Date]=#" & Me.idate & "#") والنتيجة خطأ ، كما تدل عليه نتيجة الاستعلام في الاسفل: جعفر 84.DateFormat_Examples.mdb.zip
  7. يعني قصدك تريدن نفحص : 24 جدول 21 استعلام 28 نموذج ، وفيها 11 حدث 13 تقرير 15 ماكرو ونتوصل الى انه اي فيهم عنده مشكلة عطل فيه علاقة او كود يجعل القاعدة لاتظهر البيانات القديمة ؟؟ ولم احسب عدد الكائنات في النماذج ، حتى مالذي فيها لا يعمل !! أخي الفاضل: أهلا وسهلا بك في المنتدى ، ولكن يجب عليك ان تساعدنا علشان نقدر نساعدك جعفر
  8. حياك الله التعديل فقط في الوحدة النمطية Count_Remaining والتي هي جزء من الوحدة النمطية الام fAdd_Observations: Function Count_Remaining(P, ID_Emp As Integer, ID_Loan As Integer, T As String) As Currency 'On Error Resume Next 'P = Payment month 'ID_Loan = Loan ID 'a = amount of Loan 'S = Sum of payments 'T = Cridi or Elec 'we need to know how much is the Loan, from tables Cridi and ElectroMeng 'and SUM the paid, from tbl_Loans, to the date specified in FrmDiscountReport If T = "Cridi" Then a = DSum("[Loan_Cridi]", "tbl_Loans", "[EmployeeID]=" & ID_Emp & " And [Loan_ID]=" & ID_Loan) S = DSum("[Payment_Made_Cridi]", "tbl_Loans", "[EmployeeID]=" & ID_Emp & " And [Loan_ID]=" & ID_Loan & " And [Payment_Month]<=#" & P & "#") 'Debug.Print "C " & vbTab & "Emp=" & ID_Emp & vbTab & " Loan=" & ID_Loan & vbTab & " S=" & S & vbTab & " a=" & a ElseIf T = "Elec" Then a = DSum("[Loan_Elec]", "tbl_Loans", "[EmployeeID]=" & ID_Emp & " And [Loan_ID]=" & ID_Loan) S = DSum("[Payment_Made_Elec]", "tbl_Loans", "[EmployeeID]=" & ID_Emp & " And [Loan_ID]=" & ID_Loan & " And [Payment_Month]<=#" & P & "#") 'Debug.Print "E " & vbTab & "Emp=" & ID_Emp & vbTab & " Loan=" & ID_Loan & vbTab & " S=" & S & vbTab & " a=" & a End If 'the same Record in the Query contains both Cridi and Elect, 'whereas tbl_Loans Records, contain either one of them, 'thus, when ID_Loan value does not exist in tbl_Loans, just return a Zero to the query If IsNull(a) Then Count_Remaining = 0 Else Count_Remaining = a - Nz(S, 0) End If End Function ويمكنك حذف qry_Loans_OLD و qry_Loans_Step21 اللي حصل هو: انا كلما عدلت على الوحدة النمطية ، لم تتغير القيمة في الاستعلام الى ان اضطررت النظر في تفاصيل مجاميع الوحدة النمطية ، بإضافة الامر Debug.print (سترى الامر بالكامل في الوحدة النمطية) ، وهنا اكتشفت بأنك قد ادخلت مبالغ سداد القروض لجميع الاشهر ، يعني نحن في شهرMay 2015 وعليه سداد القرض يجب ان يكون الى هذا التاريخ ، وسجل الشهر التالي June 2015 يجب ان يكون فاضي ، حيث انك لم تستقطع هذا المبلغ من الموظف بعد . وانا في المرفقات السابقة ، كنت أحذف استقطاعات جميع التواريخ التالية لشهرنا May 2015 ، ولكنك الظاهر لم تلاحظ ذلك ، وفي كل مرة ترسل لي الجدول بالمعلومات الخطأ المرفق يوضح هذا: جعفر
  9. وعليكم السلام أخي كريمو هناك شرط لعمل البرنامج بالطريقة الصحيحة ، وهي ان تدفع قيمة قسط كل شهر في شهره ، وهذا ما يعمله لك الكود في النموذج FrmDiscountReport ، وان لا تدفع قيمة الاقساط مقدما لكل الاقساط !! وإلا فما فائدة البرنامج !! ميزة البرنامج انك تستطيع عن طريق FrmDiscountReport ان تختار اي شهر شئت (طبعا من الاشهر السابقة) ، وسيعطيك البرنامج كم كانت السلفة وكم تم الدفع و... ، واخبرتك ، ان الدفع الشهري هو توثيق بان قيمة القسط قد تم سدادها في ذلك الشهر (او قد تم سداد مبلغ اكبر مقدما). جعفر 11.8.FrmDiscountReport.mdb.zip
  10. المشكلة في الباقي بالسالب هو يلزم فكرة في كود الوحدة النمطية بحيث انه لايظهر مجموع القروض المنتهية ويظهر الا باقي القرض الجديد فقط هاذان المبلغان لازم عمل كود يعدمها ويبقى الباقي 0.00 وحلها في الوحدة النمطية السلام عليكم أخي كريمو الهدف من الطريقة الجديدة هي الاعتماد على بيانات الجدول tbl_Loans بدون تدخل الكود ، وإلا رجعنا الى نفس المشكلة السابقة ، وهي حل كل معضلة بالكود!! الان الجدول نظيف ، وطريقة الحساب سهلة ، لذا يجب ان نبقى على هذا الطريق هناك حلين يدوران في بالي: 1. ان لا نهتم ببيانات الجدولين Cridi و Elec السابقة ، وانما العملية الحسابية تبدأ من ادخالك بيانات جديدة في هذين الجدولين (طبعا عن طريق النماذج الخاصة بهم) ، وبهذه الطريقة تدخل البيانات في الجدول tbl_Loans ، وتبدأ عملية الحساب , 2. ان نرى جميع البيانات في الجدولين Cridi و Elec ، ونُدخل بياناتهم (هذه العملية سنقوم بها لمرة واحدة فقط عن طريق كود) في الجدول tbl_Loans ، ومنها سيتم استخدام الجدول tbl_Loans بالطريقة الطبيعية. بالنسبة لي ، انا أفضل الطريقة الاولى ، ولكن محاسبياً ، اذا لم يكن مقبولا ، فسنعمل على الخيار الثاني جعفر
  11. وعليكم السلام أخي عبدالله انا في اعتقادي Dcount أفضل ، لهذه الاسباب: 1. لسنا بحاجة الى الامر NZ لأول رقم ، 2. اذا لأي سبب تم حذف سجل في منتصف السجلات ، فـ Dmax سيعطيك الرقم الاكبر التالي ، مما يعني انك لن تعرف ان هناك رقم ناقص/تم حذفه من المنتصف ، ويصبح التسلسل غير صحيح (إلا اذا كان هذا غير مهم ، فهنا Dmax أفضل) ، بينما في Dcount ، فممكن معرفة اذا تم حذف سجل بسهولة ، حيث ان الرقم الاخير الموجود سوف يتكرر (طبعا هذا سيطلب تدخل المبرمج لحل هذه النقطة) ، ونستطيع ان نعمل كود للتأكد بأن الرقم غير متكرر ، مما سيعطينا اشعار بذلك ، 3. Dmax يقرأ بيان الحقل ، بينما Dcount يحسب السجلات ، لهذا Dcount اسرع في التنفيذ ولكن في نهاية الامر ، كل الطرق تؤدي الى روما ، والخيار للذي ترتاح له جعفر
  12. وعليكم السلام من النموذج الفرعي ، تستطيع استعمال نفس الكود ، لأي حقل في نفس النموذج الفرعي ، من النموذج الرئيسي ، استعمل الكود التالي لقفل حقل في النموذج الفرعي: مثلا: Me.FrmCridi_sub.Form.Obsérvation.Enabled = False me.اسم النموذج الفرعي.Form.اسم الحقل في النموذج الفرعي.Enabled = False جعفر
  13. وعليكم السلام في النموذج ، في الحدث "بعد تحديث" الحقل نوع الصادرة ، استعمل هذا الكود: Me.seq = DCount("[typ]", "sadr", "[year1]=" & Year(Now())) + 1 جعفر
  14. اين المرفق؟
  15. إعذرني أخوي انت ما عليك من ان اسمي في كل مكان ، بس انا ترى فهمي ضعيف ما افهم السؤال ، إلا بمثال وتفصيل الضعيف جعفر
  16. تفضل هاي للرقم 2 بس تأكد اني ما قلبت المطلوب !! وانا عملت الدفع لهؤلاء فقط: myCriteria = "[detach]='موظف'" myCriteria = myCriteria & " Or [detach]='منتدب'" myCriteria = myCriteria & " Or [detach]='متعاقد كامل'" myCriteria = myCriteria & " Or [detach]='متعاقد جزئي'" myCriteria = myCriteria & " Or [detach]='عون نظافة'" فاذا كان المقصود بدون هؤلاء ، فغير الاسطر الى myCriteria = "[detach]<>'موظف'" myCriteria = myCriteria & " Or [detach]<>'منتدب'" myCriteria = myCriteria & " Or [detach]<>'متعاقد كامل'" myCriteria = myCriteria & " Or [detach]<>'متعاقد جزئي'" myCriteria = myCriteria & " Or [detach]<>'عون نظافة'" بالنسبة الى رقم 1 ، ماذا تريدني ان افعل لعلاج المشكلة؟ جعفر 11.8.FrmDiscountReport.mdb.zip
  17. والدالة لأكثر من شرط ، وبطريقة سهلة: كل نوع من انواع الحقول له طريقة معينة للتعامل معه في الكود ، وهذا يجعل كتابة كود بأكثر من شرط ، صعب نوعا ما ، لذلك ، الطريقة التي اقترحها هي في التعامل مع كل نوع بسطر مستقل (انظر للمثال في الاسفل) ، مما لا يدع مجال للخطأ في السطر ، ثم نجمع الاسطر في سطر واحد ، وهذا السطر يكون مجموع الشروط : myCriteria = "[detach]='موظف'" myCriteria = myCriteria & " Or [iDate]=#29-05-2015#" myCriteria = myCriteria & " Or [Payment_Month]=#" & Me.txtMonth & "#" myCriteria = myCriteria & " Or [EmployeeID]=" & Me.EmployeeID 'myCriteria = myCriteria & " Or [ID]=12" a = DLookup("[myID]", "tbl_Employees", myCriteria) او myCriteria_1 = "[detach]='موظف'" myCriteria_2 = " Or [iDate]=#29-05-2015#" myCriteria_3 = " Or [Payment_Month]=#" & Me.txtMonth & "#" myCriteria_4 = " Or [EmployeeID]=" & Me.EmployeeID myCriteria_5 = " Or [ID]=12" myCriteria = myCriteria_1 & myCriteria_2 & myCriteria_3 & myCriteria_4 & myCriteria_5 a = DLookup("[myID]", "tbl_Employees", myCriteria) والشرح 'في الاسطر، ممكن استعمال والخلط بين 'Or او And 'كما يمكن استعمال اي سطر، و عدم استعمال اسطر اخرى، اي يمكن الخلط في استعمال الاسطر 'للمتغيرات الثابته 'نص myWhere = "[detach]='موظف'" myWhere = myWhere & " Or [ID]=12" 'رقم myWhere = myWhere & " Or [iDate]=#29-05-2015#" 'تاريخ 'للمتغيرات myWhere = myWhere & " Or [Employee_Name]='" & Me.Employee_Name & "'" 'نص myWhere = myWhere & " Or [EmployeeID]=" & Me.EmployeeID 'رقم myWhere = myWhere & " Or [Payment_Month]=#" & Me.txtMonth & "#" 'تاريخ a = DLookup("[myID]", "tbl_Employees", myWhere) جعفر
  18. السيد المحترم البسطاء مثلي لا يملكون حساب في المواقع الاجتماعية ، فاذا اردتني ان اساعد ، فرجاء ارفاق برنامجك هنا بعد ضغطه بواسطة winRar او winZip . البسيط جعفر
×
×
  • اضف...

Important Information