Jump to content
أوفيسنا

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


Recommended Posts

السلام عليكم

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

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

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

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

 

Database1.rar

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

Untitled.jpg

Edited by Ahmed_J
Link to post
Share on other sites

السلام عليكم

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

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

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

تحياتي لك 

Database3.rar

Link to post
Share on other sites

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

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

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

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

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

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

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

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

  • Like 1
Link to post
Share on other sites

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

 

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

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

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

 

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

 

جعفر

  • Like 2
Link to post
Share on other sites
Posted (edited)

السلام عليكم

استاذ @jjafferr

استاذ @husamwahab

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

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

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

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

تحياتي

Untitled.jpg.08299db0ac0e2c45d7a5637e79bff67f.jpg

Edited by Ahmed_J
Link to post
Share on other sites
5 ساعات مضت, Ahmed_J said:

السلام عليكم

استاذ @jjafferr

استاذ @husamwahab

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

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

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

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

تحياتي

Untitled.jpg.08299db0ac0e2c45d7a5637e79bff67f.jpg

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

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

Edited by طاهر الوليدي
  • Like 1
Link to post
Share on other sites

شكرا لك اخي الكريم

بارك الله فيك

لكنني الايد الجمع يكون بالاستعلام وليس حقل محسوب بالجداول

تحياتي

UP

Link to post
Share on other sites

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

 

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

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

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

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

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

 

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
Link to post
Share on other sites
Posted (edited)

السلام عليكم

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

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

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

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

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

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

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

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

تحياتي

2.jpg

1.jpg

Database1-New.rar

Edited by Ahmed_J
Link to post
Share on other sites

اخي احمد 

 

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

 

 

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

 

جعفر

  • Like 1
Link to post
Share on other sites
Posted (edited)

السلام عليكم

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

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

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

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

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

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

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

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

Untitled.jpg

Database1-new.rar

Edited by Ahmed_J
Link to post
Share on other sites

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

 

علشان اعمل المقارنة ، البارحة حولت استعلامك الى كود (بعد يحتاج له شوية شغل) ، والمغرب ان شاء الله اتفرغ لموضوعك 🙂

 

جعفر

Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   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.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...