ابراهيم_ قام بنشر مارس 11, 2023 قام بنشر مارس 11, 2023 السلم عليكم ارجو من الاساتذة الكرام مساعدتي في الملف المرفق اواجه مشكلة عند ماتكون قيمة الحقل (تاريخ اعادة التعيين) = 20 واكثر يعرض الناتج اقل ب 3 في الحقل (الخدمة بعد اعادة التعيين) الخدمة.accdb
Ahmed_J قام بنشر مارس 11, 2023 قام بنشر مارس 11, 2023 السلام عليكم اخي @ابراهيم_ لااعلم ماذا تريد بالضبط من ملف الخدمة انا اعطيتك ملف جاهز للاحتساب اتمنى تشرح لي شو تريد بالضبط وانا حاضر قدر المستطاع تحياتي 1
Eng.Qassim قام بنشر مارس 11, 2023 قام بنشر مارس 11, 2023 وعليكم السلام سؤالك غير مفهوم..وملفك يعمل بشكل جيد ..حاول ان تغير الفورمات لحقول التاريخ الى Short Date 1
ابراهيم_ قام بنشر مارس 11, 2023 الكاتب قام بنشر مارس 11, 2023 4 ساعات مضت, Ahmed_J said: السلام عليكم اخي @ابراهيم_ لااعلم ماذا تريد بالضبط من ملف الخدمة انا اعطيتك ملف جاهز للاحتساب اتمنى تشرح لي شو تريد بالضبط وانا حاضر قدر المستطاع تحياتي وعليكم السلام شكراً لك اخي لاكن المطلوب هو كما موجود في الملف و السؤال هو هناك خطأ في عدد الايام الحقل (الخدمة بعد اعادة التعيين) و انا مستخدم نفس الدلة في الحقل (الخدمة قبل اعادة التعيين) و لايوجد بها خطأ
ابراهيم_ قام بنشر مارس 11, 2023 الكاتب قام بنشر مارس 11, 2023 35 دقائق مضت, Eng.Qassim said: وعليكم السلام سؤالك غير مفهوم..وملفك يعمل بشكل جيد ..حاول ان تغير الفورمات لحقول التاريخ الى Short Date اعتذر لعدم ايصال الفكرة لكم و الخلل هو في حقل (الخدمة بعد اعادة التعيين) لا يعطي الناتج صحيح و معادلة الحقل المذكور عند ماتكون قيمة الحقل (تاريخ ترك التعيين) فارغة هي كالتالي (الخدمة بعد اعادة التعيين)=(السنة الحالية)-(تاريخ التعيين) و عندما تكون قيمة الحقل(تاريخ ترك التعيين) ليست فارغة (الخدمة بعد اعادة التعيين)=(السنة الحالية)-(تاريخ اعادة التعيين)
Eng.Qassim قام بنشر مارس 11, 2023 قام بنشر مارس 11, 2023 16 دقائق مضت, ابراهيم_ said: و السؤال هو هناك خطأ في عدد الايام نعم..لاحظت ذلك..الافضل ان تستخدم الدالة التي نشرتها في مشاركتك السابقة قلت ان هناك فرق بالايام اذا كانت الخدمة طويلة
أفضل إجابة Eng.Qassim قام بنشر مارس 11, 2023 أفضل إجابة قام بنشر مارس 11, 2023 شوف الفرق بالايام في ملفك..بعد اضافة دالة اخرى الخدمة.rar 1
AbuuAhmed قام بنشر مارس 11, 2023 قام بنشر مارس 11, 2023 (معدل) أخي دع عنك استخدام هذه الحسبات (سنة/شهر/يوم) فلن تجد أي دالة في الدنيا ترضيك وكلامي من خبرة طويلة في هذه الأمور. استخدم المدد كأرقام عشرية بتقسيم الأيام على 365.25 للمدد القصيرة (حتى أربع سنوات) وتقسيمها على 365.2425 للمدد الطويلة. تم تعديل مارس 11, 2023 بواسطه AbuuAhmed 1 1
Eng.Qassim قام بنشر مارس 11, 2023 قام بنشر مارس 11, 2023 5 دقائق مضت, AbuuAhmed said: خي دع عنك استخدام هذه الحسبات (سنة/شهر/يوم) خليتني اشك بالدالة التي استخدمها ..استاذ ابو احمد .. بصراحة كنت استخدم هذه الطريقة بتقسيم الايام على 365.25 1
AbuuAhmed قام بنشر مارس 11, 2023 قام بنشر مارس 11, 2023 هذه دالة تقوم بفرز الأيام البسيطة عن الأيام الكبيسة من شروطها أن يكون يوم النهاية من ضمن الفترة يعني لحساب إجازة لابد إدخال آخر يوم في الإجازة وليس أول يوم مباشرة بعد الإجازة. Function GetYears(ByVal DateFm As Long, ByVal DateTo As Long) As Double Dim Leap004 As Long Dim Leap100 As Long Dim Leap400 As Long Dim LeapYears As Long Dim SmblYears As Long Dim Leap As Long Dim Smbl As Long Dim LeapFm As Long Dim SmblFm As Long Dim inDate As Long Dim yy As Integer 'Years between 102 And 9999 If DateFm < DateSerial(102, 1, 1) Or _ DateTo < DateSerial(102, 1, 1) Then Exit Function 'Swapping If DateFm > DateTo Then inDate = DateFm DateFm = DateTo DateTo = inDate End If '------------------ DateFm = DateFm - 1 '------------------ inDate = DateFm GoSub Calculate LeapFm = Leap SmblFm = Smbl '------------------ inDate = DateTo GoSub Calculate Leap = Leap - LeapFm Smbl = Smbl - SmblFm '------------------ GetYears = (Leap / 366) + (Smbl / 365) Exit Function '------------------ Calculate: yy = Year(inDate) - 1 Leap004 = Fix(yy / 4) Leap100 = Fix(yy / 100) Leap400 = Fix(yy / 400) LeapYears = Leap004 - Leap100 + Leap400 SmblYears = yy - LeapYears Leap = CLng(LeapYears * 366) Smbl = CLng(SmblYears * 365) ' Day(DateSerial(yy + 1, 3, 0)) If day(DateSerial(yy + 1, 3, 1) - 1) = 29 Then Leap = Leap + (inDate - DateSerial(yy, 12, 31)) Else Smbl = Smbl + (inDate - DateSerial(yy, 12, 31)) End If Return End Function
ابراهيم_ قام بنشر مارس 11, 2023 الكاتب قام بنشر مارس 11, 2023 21 دقائق مضت, Eng.Qassim said: شوف الفرق بالايام في ملفك..بعد اضافة دالة اخرى الخدمة.rar 31.5 kB · 3 downloads ممنون منك اخي العزيز تعتك و ياي رحم الله و الديك 22 دقائق مضت, AbuuAhmed said: أخي دع عنك استخدام هذه الحسبات (سنة/شهر/يوم) فلن تجد أي دالة في الدنيا ترضيك وكلامي من خبرة طويلة في هذه الأمور. استخدم المدد كأرقام عشرية بتقسيم الأيام على 365.25 للمدد القصيرة (حتى أربع سنوات) وتقسيمها على 365.2425 للمدد الطويلة. شكرأ لك اخي الكريم على النصيحة موفق ان شاء الله 1
Eng.Qassim قام بنشر مارس 11, 2023 قام بنشر مارس 11, 2023 20 دقائق مضت, ابراهيم_ said: منون منك اخي العزيز تعتك و ياي رحم الله و الديك بالعكس ..نحن هنا لخدمة الجميع .. ودعائك افضل بكثير مما نقدمه ... 1
AbuuAhmed قام بنشر مارس 11, 2023 قام بنشر مارس 11, 2023 41 دقائق مضت, Eng.Qassim said: خليتني اشك بالدالة التي استخدمها ..استاذ ابو احمد .. بصراحة كنت استخدم هذه الطريقة بتقسيم الايام على 365.25 فحص لكلامي: Sub TestPeriods() Dim DateFm As Date Dim DateTo As Date DateFm = DateSerial(1583, 1, 1) DateTo = DateSerial(9999, 12, 31) Debug.Print GetYears(DateFm, DateTo) Debug.Print (DateTo - DateFm + 1) / 365.25 Debug.Print (DateTo - DateFm + 1) / 365.2425 End Sub النتائج 8417 8416.82683093771 8416.99966460639 2
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.