اذهب الي المحتوي
أوفيسنا

بحاجة للتعديل على كود العمر لكي يعمل حسب صيغة التاريخ الكامل


abouzak
إذهب إلى أفضل إجابة Solved by Shivan Rekany,

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

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

 

13 ساعات مضت, abouzak said:

انا بحاجة للتعديل على كود العمر لكي يعمل حسب صيغة

dd/mm/yyyy

بدلا من

yyyy

 

لا تنسى ان حقل تاريخ الميلاد عندك هو رقم وليس تاريخ ،

فعلى هذا الاساس ، رجاء اعطينا مثال ، شو اللي عندك ، وكيف تريد ان تكون النتيجة 🙂

 

جعفر

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

 

شكرا

الملف مرفق

DOB field:

في حال إدخال سنة الميلاد مثلا 2000 أن يتحول تلقائيا إلى 01/01/2000، وفي حال إدخال التاريخ كاملا 25/03/2000 أن يتركه كما هو، والانتقال إلى خانة “Doctor”

في كلتا الحالتين تكون النتيجة في خانتي "العمر" و "العمر الحالي" 20 سنة في سنة 2020، أما في السنة القادمة ستكون النتيجة 20 في خانة "العمر" و 21 في "العمر الحالي" وهكذا،....

Age:   عمر المريض يوم أجراء العمل الطبي

Current age:   عمر المريض يوم معاينة ملفه وهو يتغير كل سنة، هذه الخانة مقفلة لا تخضع للتغيير وإدخال المعلومات.

أما في حال عدم إدخال تاريخ الميلاد، الانتقال إلى خانة " العمر" وكتابة عمر المريض مثلا 20 وبالتالي يظهر 01/01/2000 في خانة تاريخ الميلاد و 20 سنة في خانة العمر الحالي (طبعا السنة القادمة ستصبح 21 سنة), والانتقال إلى خانة “Doctor”

 

 

 

 

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

21 ساعات مضت, Hawiii said:

Function GetAge(Birthdate As Date) As String
    Dim Age As Double
    
    Age = Date - Birthdate
    GetAge = Format(Year(Age) - 1900, "0000-") & _
             Format(Month(Age) - 1, "00-") & _
             Format(Day(Age) - 1, "00")
End Function

 

أخي ما المشكلة مع هذه الدالة؟ ، هل جربت إضافتها وتجربتها؟
أنا انتبهت أني عكست التنسيق المطلوب ويمكن هذا السبب!
 

Function GetAge(Birthdate As Date) As String
    Dim Age As Double
    
    Age = Date - Birthdate
    GetAge = Format(Day(Age) - 1, "00-") & _
             Format(Month(Age) - 1, "00-") & _
             Format(Year(Age) - 1900, "0000")
End Function

وتستطيع مناداتها كالتالي'
= GetAge([DOB]) & " year(s)"
'-----------------------------------------------------------------

أما إذا أردت السنوات فقط فيمكنك عملها كالتالي مع التقريب لأقرب سنة'
Function GetYears(Birthdate As Date) As Byte
    GetYears = Round((Date - Birthdate) / 365.24, 0)
End Function

'أو بدالة DateDiff
Function GetYears(Birthdate As Date) As Byte
    GetYears = DateDiff("yyyy", Date, Birthdate)
End Function

وتستطيع مناداتها كالتالي'
= GetYears([DOB]) & " year(s)"

ويمكنك لصق الدالتين في موديول منفصل وهو الأفضل أو في موديول النموذج نفسه.

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

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

 

السبب اللي سألت هذا السؤال :

22 ساعات مضت, jjafferr said:

لا تنسى ان حقل تاريخ الميلاد عندك هو رقم وليس تاريخ ،

فعلى هذا الاساس ، رجاء اعطينا مثال ، شو اللي عندك ، وكيف تريد ان تكون النتيجة 🙂

 

image.png.9e8196fcda013058fe0986e16cc55e0c.png

 

واخونا الهاوي كل حلوله على اساس ان حقل تاريخ الميلاد DOB عبارة عن تاريخ ،

 

لهذا السبب ، عندك حلين :

1. يا انك تغير حقل تاريخ الميلاد DOB ، الى تاريخ (لأنه رقم الآن) ، وعلى اساسه يمكنك استعمال اي من الحلول اللي اعطاك اخونا الهاوي ،

او

2. تشوف طريقة اخرى علشان تعرض نتيجة العمر على اساس تاريخ الميلاد 🙂

 

جعفر

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

شكرا  أخ الهاوي واخ جعفر على الاهتمام

 

لم افلح في ما  شرحت لي

ارجو تطبيق الكود على الملف المرفق ولك جزيل الشكر

ليس لدي أي مشكلة في تغيير الرقم إلى تاريخ 

هدفي هو الحصول على خانتين من العمر

الأولى العمر بالنسبة للتاريخ  Date

والثانية بالنسبة لتاريخ الكمبيوتر

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

59 دقائق مضت, abouzak said:

up

مشاركة مع الحبايب

هناك اسئلة : هل تريد ان يعطيك النتيجة سنوات فقط ام بالسنة و الاشهر و الايام ؟ 

هل تريد ان تكتب في حقل DOB تاريخ الميلاد سنة والشهر واليوم ؟ اذا الجواب بيكون نعمل هل تسمح لنا ان نغير حقل DOB من الرقم الى التاريخ ؟

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

شكرا جزيلا

ليس لدي مشكلة أن يكون العمر فقط بالسنوات

 وحبذا لو تظل خاصية إدخال أما تاريخ الميلاد ويعطيني العمر بالسنوات وأما في حال تخطي تاريخ الميلاد وإدخال العمر  مثلا 40 وبالتالي تملئ أوتوماتيكيا خانة تاريخ الميلاد ب  01/01/1980

ملاحظة: هدفي هو أن يكون العمر في age معتمدا على تاريخ تعبئة الملف

أما العمر الحالي أريد أن يكون حسب تاريخ الكمبيوتر.

ارجوا أن أكون أوصلت فكرتي بطريقة صحيحة.

 

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

26 دقائق مضت, abouzak said:

هدفي هو أن يكون العمر في age معتمدا على تاريخ تعبئة الملف

أما العمر الحالي أريد أن يكون حسب تاريخ الكمبيوتر.

اتفضل القي نظرتا الى الصورة

1415473197_Annotation2020-04-15104439.png.81188bdaf68da3c7b967a4aedb1980a3.png

تم تغير اسم الحقل التاريخ من Date الى dDate 

وايضا تم تغير حقل DOB من الرقمي الى تاريخ

شوف قمنا بادخال dDate في 15/04/2015 اي نفترض في ذلك اليوم حضرتك دخلت البيانات

وتاريخ الميلاد نفترض 22/12/1988

في حقل Age صار يساوي 27 لان 2015 - 1988 = 27

وفي مربع نصي Current Age صار یساوی ٣٢ لان سنة الحالية 2020 ناقص سنة الميلاد 1988 = 32

واليك المرفق 

 

2020.rar

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

شكرا جزيلا هذا الشرط الأول

هل بالإمكان عند تخطي تاريخ الميلاد وإدخال العمر  مثلا 40 وبالتالي تملئ أوتوماتيكيا خانة تاريخ الميلاد ب  01/01/1980 ؟

 

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

  • أفضل إجابة
32 دقائق مضت, abouzak said:

هل بالإمكان عند تخطي تاريخ الميلاد وإدخال العمر  مثلا 40 وبالتالي تملئ أوتوماتيكيا خانة تاريخ الميلاد ب  01/01/1980 ؟

،عم استخدم هذا الكود

Private Sub AGE_AfterUpdate()
    If Not IsNull(Me.Age.Value) Then
    Me.DOB.Value = DateSerial(Year(Me.dDate) - Me.Age.Value, 1, 1)
    End If
End Sub

 

2020 (1).rar

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

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