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

جمع الايام والاشهر والسنين بالاستعلام


Ahmed_J

الردود الموصى بها

السلام عليكم

كل عام وانتم بالف خير . عيد سعيد وعمر مديد . اعاده الله علينا وعليكم بالخير واليمن والمسرات.

لدي برنامج فيه جمع الخدمة الوظيفية للموظف من تاريخ التعيين (باليوم والشهر والسنه) مع الخدمة المضافة ينقص منها فترة الانقطاع وتظهر النتيجة (الخدمة النهائية)

المشكله هي عند جمع الخدمة الفعلية مع الخدمة المضافة وينقص منها فترة الانقطاع يظهر الناتج بالسالب كما في الصورة المرفقة

مرفق الملف الاصلي/ الخدمة الفعلية  لاحد الاخوة لحساب المجموع عن طريق الوحدة النمطية

 

Database1.rar

الخدمة الفعلية.rar

Untitled.jpg

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

السلام عليكم

شكرا لك استاذ @husamwahab

لكن انظر للسجل رقم 1 اعتقد فيه فرق

اتمنى ان تكون جميع الارقام مظبوطه لليوم والشهر والسنه حتى لو تم استبدال الوحدة النمطية او الاكواد المهم عندي النتيجة

تحياتي لك 

Database3.rar

رابط هذا التعليق
شارك

الشكر لله اخي العزيز

نعم اخي العزيز فهذه مشكلة التعامل مع التاريخ

لو اعطيت هذه البيانات لثلاثة اشخاص او اكثر لوجدت لكل واحد منهم نتيجة تختلف مع الاخر 

والسبب هو ان هناك من يتعامل مع فرق التاريخ كالتعامل مع المعادلات الرياضية وهي قد تعطي نتائج سالبة كما حدث معك

واخر يراعي السالب ولكن يجعل جميع الاشهر 30 يوم

واخر يراعي ترتيب الشهر وعدد ايامه وهكذا

برايك ماهي المفروض نتائج السجل الاول

وعذرا للاطالة

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم 🙂

 

اخي احمد ، مثل ما قاله اخي حسام :

17 دقائق مضت, husamwahab said:

برايك ماهي المفروض نتائج السجل الاول

 

اعطنا الارقام ، وخلينا نحللها و نشتغل على الهندسة العكسية ، ونصل للمعادلة الصحيحة 🙂

 

جعفر

  • Like 2
رابط هذا التعليق
شارك

السلام عليكم

استاذ @jjafferr

استاذ @husamwahab

اعتقد ان الارقام  في السجل الاول تكون  9 سنوات و5 اشهر و29 يوم  كما في الصورة المرفقة

حسب رايي نقوم باضافة شهر 30 يوم (ننقصه من الاشهر حتى لاتظهر النتيجة بالسالب ) الى الايام لتصبح 58 يوم وننقصها

من مدة الانقطاع 29  ليصبح الفرق 29 يوم 

والراي النهائي رايكم  يا اعزاء 

تحياتي

Untitled.jpg.08299db0ac0e2c45d7a5637e79bff67f.jpg

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

5 ساعات مضت, Ahmed_J said:

السلام عليكم

استاذ @jjafferr

استاذ @husamwahab

اعتقد ان الارقام  في السجل الاول تكون  9 سنوات و5 اشهر و29 يوم  كما في الصورة المرفقة

حسب رايي نقوم باضافة شهر 30 يوم (ننقصه من الاشهر حتى لاتظهر النتيجة بالسالب ) الى الايام لتصبح 58 يوم وننقصها

من مدة الانقطاع 29  ليصبح الفرق 29 يوم 

والراي النهائي رايكم  يا اعزاء 

تحياتي

Untitled.jpg.08299db0ac0e2c45d7a5637e79bff67f.jpg

تفضل يحتوي على عدد من النتائج تستطيع تطبيق على مثالك 

الفارق بين تاريخين.accdb

تم تعديل بواسطه طاهر الوليدي
  • Like 1
رابط هذا التعليق
شارك

السلام عليكم 🙂

 

الفكرة اللي استعملتها ، هي معادلات الاكسس ، وبدون تحديد عدد ايام للشهر ،

عندنا تاريخ المباشرة ،

ومن تاريخ اليوم ، نضيف اليه الخدمة المضافة ، سنة ، ثم شهر ، ثم يوم ، بحيث نتوصل الى تاريخ جديد ،

ومن التاريخ الجديد ، نستقطع ، سنة ، ثم شهر ، ثم يوم ، بحيث نتوصل الى تاريخ جديد ،

ثم في النهاية ، نوجد الفرق بين تاريخ المباشرة وبين هذا التاريخ الجديد 🙂 :

 

Private Sub cmd_Cal_Click()

    Dim Y  As Integer:    Dim M As Integer:     Dim D As Integer
    Dim Y_Add As Date:    Dim M_Add As Date:    Dim D_Add As Date
    Dim Y_Ded As Date:    Dim M_Ded As Date:    Dim D_Ded As Date
    Dim Y_Fin As Date:    Dim M_Fin As Date:    Dim D_Fin As Date
    
    'Now
    Me.dmy_Now = YMDDif(Me.ddd, Date, Y, M, D)
    Me.Y_Now = Y
    Me.M_Now = M
    Me.D_Now = D
    
    'Add
    Y_Add = DateAdd("yyyy", Me.yerr, Date)
    M_Add = DateAdd("m", Me.mann, Y_Add)
    D_Add = DateAdd("d", Me.dyy, M_Add)
    Me.dmy_Add = D_Add
    
    'Deduct
    Y_Ded = DateAdd("yyyy", -Me.yerrr, Me.dmy_Add)
    M_Ded = DateAdd("m", -Me.mannn, Y_Ded)
    D_Ded = DateAdd("d", -Me.dyyy, M_Ded)
    Me.dmy_Deduct = D_Ded
    
    'Final
    Me.dmy_Final = YMDDif(Me.ddd, Me.dmy_Deduct, Y, M, D)
'    Me.Y_Fin = Y
'    Me.M_Fin = M
'    Me.D_Fin = D
    
End Sub

Private Sub Form_Current()

    Call cmd_Cal_Click
End Sub

.

والوحدة النمطية YMDDiff :

Public Function YMDDif(ByVal sDate1 As Date, ByVal sDate2 As Date, _
                       ByRef Y As Integer, ByRef M As Integer, ByRef D As Integer) As String

    '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)
    
    D = iDay
    M = iMonth Mod 12
    Y = iMonth \ 12

    'YMDDif = CStr(Y) & " Years " & CStr(M) & " months " & CStr(D) & " days"
    YMDDif = CStr(D) & " ي/" & CStr(M) & " ش/" & CStr(Y) & " س"

End Function

.

والنتيجة:

image.png.11fd05f652ecd66855512fa3b159b06e.png

.

ويمكننا عمل كل هذه المعادلات في الاستعلام ، بالاضافة الى مناداة الوحدة النمطية 🙂

رجاء التأكد من الارقام اولا.

 

جعفر

Database1.zip

  • Like 6
رابط هذا التعليق
شارك

السلام عليكم

استاذنا العزيز @jjafferr

ومن باب اثراء الموضوع بصورة كامله خدمة لكل الاعضاء الاعزاء

البارحة انا عملت نفس فكرتك لكن عن طريق الاستعلام  QQ عن طريق زيادة او نقصان ارقام الخدمة المضافة والانقطاع الى تاريخ المباشرة الاولى بالوظيفة 

عن طريق الدالة  DateAdd ووصلت الى التاريخ النهائي لو كان تاريخ المباشرة بالوظيفة هو 2010/10/5  يكون التاريخ النهائي هو 2011/2/2

* اولا /  الارقام بيننا فيها فرق يوم واحد فقط (تمت تجربته عن طريق تغيير تاريخ المباشرة اكثر من مرة)

* ثانبا / ماهو التاريخ النهائي الذي حصلت عيه يا استاذ؟

استاذي العزيز جعفر  تم تدقيق النتائج عن طريق موقع Age Calculator ومرفقة الصور والبرنامج بعد التعديل .

ارجوا ابداء الراي والمساعدة في اكمال الموضوع 

تحياتي

2.jpg

1.jpg

Database1-New.rar

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

اخي احمد 

 

ياريت تشوف هذا الرابط ، والذي فيه نقاش عميق عن حساب العمر ، وانا استعملت الموقع الذي اشرت اليه انت :

 

 

والافضل ان تقرأ الموضوع كاملا 🙂

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم

استاذ جعقر الغالي 

نعم النقاش طويل في مسالة حساب التواريخ وجمعها وطرحها 

بارك الله فيك على كل هذا المجهود الرائع جعله الله في ميزان حسناتك

لكن لدي بعض الاسئلة ارجوا ان يتسع صدرك لي 

* هل هو صحيح  ان ناتج الايام يكون كالتالي (30 ي/5 ش/9 س)  ام الاصح يكون (0 ي/6 ش/9 س) على اعتبار الشهر 30 يوم؟

*ماهو التاريخ النهائي الذي حصلت عليه يا استاذ جعفر في الملف المرفق هل هو  2011/2/2 ام لا ؟

* ارجو بيان السبب لماذا يوجد فرق يوم واحد فقط بين عملي وعملك بالنموذج

وشكرا لك وبارك الله فيك

Untitled.jpg

Database1-new.rar

تم تعديل بواسطه Ahmed_J
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information