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

طرح أرقام ليكون الناتج (يوم) ، (شهر) ، (سنة)


Omar_Kreem

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

أساتذتى الأفاضل ..

................ أريد أن أطرح مجموعة أرقام فى (تقرير أكسس) بحيث يكون الناتج باليوم والشهر والسنة مثال:

.................... يوم 18 ، شهر 11 ، سنة 5

.................... يوم 5، شهر 8، سنة 3

................ الناتج يكون:  يوم (   ) ، شهر (  ) ، سنة (   ).

 

N.rar

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

أخى شوقى أريد طرح أرقام بهذا الشكل .. بحيث يكون الناتج كما لو طرحت تاريخين ويكون الناتج باليوم والشهر والسنة

..

أستاذنا جعفر طالعت الرابط قبل أن أضع المشاركة حقيقة هو عمل ممتاز وعبقرى..

لكنى أريد طرح أرقام من أرقام ولا يوجد أى تواريخ

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

نعم هذا ما أريد

أريد طرح للأرقام الموجودة بالتقرير Number فى صورة  ( يوم            شهر                    سنة)

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

اخى الكريم 

حضرتك تريد طرح كل مربع على حدا 

سنة            شهر                    يوم

استخدم الدالة («التاريخ2»; «التاريخ1»; «فاصل زمنى») DateDiff

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

أخي عمر

 

هل تريد:

1. طرح 11 شهر من 8 اشهر ،

2. ام تريد طرح الشهر 11 من الشهر 8؟

 

طبعا مافي فرق بينهم بالطريقة الاعتيادية ، ولكن الفرق يكون لما تريد تخصم الايام/الاشهر ، الاصغر من الاكبر ، يعني شوف المثال هذا:

     5 يوم ، 8 شهر ، 13 سنة

- 18 يوم ، 11 شهر ، 5 سنة

 

= 5 +31 (لأننا اخذنا الشهر 8 وحولناه الى ايام ، والشهر 8 فيه 31 يوم) ، 7 + 12 (لأننا اخذنا سنه وحولناها الى 12 شهر) ، 12 سنة

- 18 يوم ، 11 شهر ، 5 سنة

 

وتصبح النتيجة (5+31) - 18 ، (7+12) - 11 ، 12 - 5

= 18 يوم ، 8 شهر ، 7 سنة

 

 

جعفر

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

السلام عليكم أخي عمر

 

في الواقع اخي شوقي قد اعطاك الجواب ، وانا جمعته مع بعض :rol:

 

هذه النتيجة:

310.Clipboard01.jpg.5368a949106ede5f046d

.

هنا انا استعملت استعلام لأقوم بالحسابات المطلوبة ، واستخدمت هذا الاستعلام كمصدر للتقرير.

 

وستلاحظ اني حولت السنة/الشهر/اليوم الى تاريخ من (1) ، وتاريخ الى (2) ، ثم ارسلت هذين التاريخين الى الوحدة النمطية التي تخص المطلوب (يعني وحدة نمطية للسنين ، واخرى للاشهر وثالثة للايام ، والتي ارفقها الاخي شوقي في مشاركته في الموضوع).

 

وهذا هو الكود:

Option Compare Database

Function CalcAge(vDate1 As Date, vdate2 As Date)
    
Dim vYears As Integer, vMonths As Integer, vDays As Integer
    vMonths = DateDiff("m", vDate1, vdate2)
    vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    If vDays < 0 Then
        vMonths = vMonths - 1
        vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    End If
    vYears = vMonths \ 12
    vMonths = vMonths Mod 12
    CalcAge = vYears & " ÓäÉ, " & vMonths & " ÔåÑ, " & vDays & " íæã"

End Function
Function CalcYears(vDate1 As Date, vdate2 As Date)
    Dim vYears As Integer, vMonths As Integer, vDays As Integer
    vMonths = DateDiff("m", vDate1, vdate2)
    vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    If vDays < 0 Then
        vMonths = vMonths - 1
        vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    End If
    vYears = vMonths \ 12
    vMonths = vMonths Mod 12
    CalcYears = vYears
End Function

Function CalcMonths(vDate1 As Date, vdate2 As Date)
    Dim vYears As Integer, vMonths As Integer, vDays As Integer
    vMonths = DateDiff("m", vDate1, vdate2)
    vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    If vDays < 0 Then
        vMonths = vMonths - 1
        vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    End If
    vYears = vMonths \ 12
    vMonths = vMonths Mod 12
    CalcMonths = vMonths
End Function

Function CalcDays(vDate1 As Date, vdate2 As Date)
    Dim vYears As Integer, vMonths As Integer, vDays As Integer
    vMonths = DateDiff("m", vDate1, vdate2)
    vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    If vDays < 0 Then
        vMonths = vMonths - 1
        vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2)
    End If
    vYears = vMonths \ 12
    vMonths = vMonths Mod 12
    CalcDays = vDays
End Function


 

 

جعفر

310.N1.mdb.zip

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

وعليكم السلام أستاذنا جعفر ..

أنظر بعد تغيير الأرقام ماذا حدث :

يوم     شهر       سنة

18        5           39

0         8            1

كانت النتيجة:  18      -3       -62

والصحيح هو:  18       9         37

 

N2.rar

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

وعليكم السلام ورحمة الله وبركاته ..

.......... أخى الكريم ليس لدى تواريخ..... لدى أرقام فقط ..

........................... ما تفضل به الأخين شوقى وجعفر أقرب إلى الصواب ولكن فى حال تحويل الأرقام من (30 حتى 99 ) إلى سنوات تأتى فى القرن الماضى أى:

30 تأتى 1930 ، وذلك حتى الرقم 99 يأتى 1999 وهذه هى المشكلة حتى الآن.

وبحسب تعليمات مايكروسوفت فإن الدالة (DateSerial) : تأخذ قيمة رقمية بين 100 و 9999 والتي تمثل قيمة السنة فى التاريخ..

 

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

السلام عليكم :rol:

 

شكرا لك على هذه الملاحظة ، واللي كان لها الفضل في ايجاد حل سهل:

32 دقائق مضت, omar19-3 said:

ولكن فى حال تحويل الأرقام من (30 حتى 99 ) إلى سنوات تأتى فى القرن الماضى أى:

30 تأتى 1930 ، وذلك حتى الرقم 99 يأتى 1999 وهذه هى المشكلة حتى الآن.

وبحسب تعليمات مايكروسوفت فإن الدالة (DateSerial) : تأخذ قيمة رقمية بين 100 و 9999 والتي تمثل قيمة السنة فى التاريخ..

.

عليه تم اضافة 2000 الى السنوات ، وكان الله رؤوف رحيم :rol:

310.Clipboard02.jpg.92047705b3707e95f7e9

.

 

 

جعفر

310.N2.mdb.zip

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

نعم أستاذنا جعفر بعد التجربة بعدة أرقام مختلفة جاءت النتائج صحيحة..

...................................... زادك الله علما ...

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

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