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

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

قام بنشر

عندى 3 فيلدات

Y

M

D

ترمز لسنه وشهر ويوم

 عايزه  اجمعم فى فيلد واحد اسمه 

age

كالاتى

فى حاله وجود السن بالايام فقط

او بالشهور فقط

او بالسنين فقط

يبقى 

Age= D                ageunit=Dayes 

Age= M                ageunit=Months 

Age= Y                  ageunit=Years

على الترتيب

فى حاله السن بالشهور والايام

فى الحاله دى

Age= M                ageunit=Months 

 نتغاضى عن الايام  

 

 اما فى حالة 

السن بالسنين والشهور

مثلا شخص عنده 42 سنه و9شهور

عايزاهم يتجمعو زى كدا

42.9

بمجرد ما يكون السن 42 سنه و10 شهور يتم تقريب السن ل 43 سنه
ageunit=Years

age collect.rarFetching info...

قام بنشر (معدل)
  في 12‏/11‏/2023 at 06:25, محمد احمد لطفى said:

دى محاولة قد تكون صحيحة و قد تكون خاطئة حسب فهمى للسؤال 

مع تغيير حقل age  لنص و ليس رقمى

 

age collect.rar 589.43 kB · 0 downloads

Expand  

دا جزأ من المطلوب

انا حاولت اكمل بنفس طريقتك

 

 

 


Private Sub Form_Current()
If Me.Y > 0 And Me.M = 0 And Me.D = 0 Then
Me.age = Me.Y
Me.ageunit = years
Else
If Me.Y = 0 And Me.M > 0 And Me.D >= 0 Then
Me.age = Me.M
Me.ageunit = Months
Else
If Me.Y = 0 And Me.M = 0 And Me.D > 0 Then
Me.age = Me.D
Me.ageunit = DAYS
Else


    If Me.M >= 10 Then
        Me.age = Me.Y + 1
        Me.ageunit = years
    Else
        Me.age = Me.Y & "." & Me.M
    
         Me.ageunit = years
         End If
         End If
         End If
         End If
End Sub

تم تعديل بواسطه safaa salem5
  • Like 1
قام بنشر (معدل)
  في 12‏/11‏/2023 at 07:11, safaa salem5 said:

 

Expand  

عندى مشكلتين لما بيكون فى ايام لوحدها مش بتنزل

ظهور النقطه جمب السن فى غير وقتها

ageunitمش بتنزل

اللى هى وحدة السن ايام شهور سنه

00011.gif

age collect.rarFetching info...

تم تعديل بواسطه safaa salem5
قام بنشر
  في 12‏/11‏/2023 at 07:48, safaa salem5 said:

عندى مشكلتين لما بيكون فى ايام لوحدها مش بتنزل

ظهور النقطه جمب السن فى غير وقتها

ageunitمش بتنزل

اللى هى وحدة السن ايام شهور سنه

00011.gif

age collect.rar 641.43 kB · 1 download

Expand  

 

احذفى ال . من الكود 

Me.age = Me.Y & "." & Me.M
الى
Me.age = Me.Y & " " & Me.M

قام بنشر (معدل)

 


 

 

  في 12‏/11‏/2023 at 08:28, عمر ضاحى said:

 

احذفى ال . من الكود 

Me.age = Me.Y & "." & Me.M
الى
Me.age = Me.Y & " " & Me.M

Expand  

انا عايزه التجميعه دى 

 

مثلا شخص عنده 42 سنه و9شهور

عايزاهم يتجمعو زى كدا

42.9

بمجرد ما يكون السن 42 سنه و10 شهور يتم تقريب السن ل 43 سنه

تم تعديل بواسطه safaa salem5
  • تمت الإجابة
قام بنشر

هل هذا ما تريدين 

8gxp8rg.gif

age collect.rarFetching info...

انا وضعت تقريبا جميع الاحتمالات التى جربتها 

قد يكون هناك احتمالين او 3 لسه ما فكرت فيهم 

لكن خليهم عند التجربه 

انا لغيت الاكواد التى وضعتيها ووضعت ليكي مديول وصب 

  • Like 1
قام بنشر
  في 12‏/11‏/2023 at 10:59, عمر ضاحى said:

هل هذا ما تريدين 

8gxp8rg.gif

age collect.rar 582.18 kB · 4 downloads

انا وضعت تقريبا جميع الاحتمالات التى جربتها 

قد يكون هناك احتمالين او 3 لسه ما فكرت فيهم 

لكن خليهم عند التجربه 

انا لغيت الاكواد التى وضعتيها ووضعت ليكي مديول وصب 

Expand  

تمام كدا بس انا عامله الكود الخاص بتحويل تاريخ الميلاد ل ايام وشهور وسنه

انا عايزه بس الجزئيه اللى انا بتكلم فيها 

كدا اشيل ايه من الكود

 

قام بنشر
  في 12‏/11‏/2023 at 14:55, safaa salem5 said:

تمام كدا بس انا عامله الكود الخاص بتحويل تاريخ الميلاد ل ايام وشهور وسنه

انا عايزه بس الجزئيه اللى انا بتكلم فيها 

كدا اشيل ايه من الكود

 

Expand  

الكود ال انا لاغيه محوله لتعليق 
راجعي الاكواد 

rx6HPsA.png

 

 

غير اني كنت ملاحظ ان الموضوع ادخال يدوي صحيح ؟

 

عموما انا شايف كده افضل (مجرد راي طبعا والامر كله اليكي تختاري ما تفضلينه حسب حاجتك)

اذا حابه تعديله يمكن ان الغيه لكي اذا حبيتي 

 

 

قام بنشر
  في 12‏/11‏/2023 at 15:11, عمر ضاحى said:

الكود ال انا لاغيه محوله لتعليق 
راجعي الاكواد 

rx6HPsA.png

 

 

غير اني كنت ملاحظ ان الموضوع ادخال يدوي صحيح ؟

 

عموما انا شايف كده افضل (مجرد راي طبعا والامر كله اليكي تختاري ما تفضلينه حسب حاجتك)

اذا حابه تعديله يمكن ان الغيه لكي اذا حبيتي 

 

 

Expand  

انا فاهمه ان حضرتك لاغيه

انا باعته لحضرتك المثال على اد اللى انا محتاجاه بس 

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

محتاجه بس جزئية تجميع السن

 

  في 12‏/11‏/2023 at 15:39, safaa salem5 said:

انا فاهمه ان حضرتك لاغيه

انا باعته لحضرتك المثال على اد اللى انا محتاجاه بس 

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

محتاجه بس جزئية تجميع السن

 

Expand  

عايزه لما اخرج من حقل

y

او

m

او

d

او

bdate

 

يحصل عملية التجميع

قام بنشر

بصى فى الكود (الصب)


Sub xCalc()
    Dim strAge As String
    Dim arrAge() As String
    Dim years As Integer
    Dim months As Integer
    Dim days As Integer
    Dim xD, xM, xY As Integer
    Dim xAge As Double
'هنا الدالة التى تحسب العمر
    strAge = CalcAge(bdate, Date)
'هنا بيتم البدء فى فصل الايام والشهور والسنوات
    arrAge = Split(strAge, " ")
'هنا تم التوزيع السنوات والشهور والايام على المتغيرات الثلاث
'هنا ممكن تستبدلى بالتوزيع الخاص بكي
    years = Val(arrAge(0))
    months = Val(arrAge(2))
    days = Val(arrAge(4))

'
'هنا تم توزيع النتائج على الحقول الثلاث فى النموذج

    Y = years
    M = months
    D = days
'----------------------------------------------------------
    If days >= 20 Then
        xM = months + 1
        xD = 0
    Else
        xD = days
    End If
'----------------------------------------------------------
    If months >= 10 Then
        xY = years + 1
        xM = 0
    Else
        xY = years
        xM = months
    End If
'----------------------------------------------------------

Debug.Print xD
Debug.Print xM
Debug.Print xY

    If xY = 0 And xM = 0 And xD <> 0 Then
        xAge = xD
        ageunit = "Days"
    ElseIf xY = 0 And xM <> 0 And xD <> 0 Then
        xAge = xM
        ageunit = "Months"
    ElseIf xY = 0 And xM <> 0 And xD = 0 Then
        xAge = xM
        ageunit = "Months"
    ElseIf xY <> 0 And xM = 0 And xD <> 0 Then
        xAge = xY
        ageunit = "Years"
    ElseIf xY <> 0 And xM <> 0 And xD = 0 Then
        xAge = xY & "." & xM
        ageunit = "Years"
    Else
        xAge = xY & "." & xM
        ageunit = "Years"
    End If
    age = xAge
'Debug.Print xAge
End Sub

لاحظي انك ممكن تقفذى وتلغي وظيفة الكود من السطر هذا 

    years = Val(arrAge(0))
    months = Val(arrAge(2))
    days = Val(arrAge(4))

 

قام بنشر
  في 12‏/11‏/2023 at 15:57, عمر ضاحى said:

بصى فى الكود (الصب)


Sub xCalc()
    Dim strAge As String
    Dim arrAge() As String
    Dim years As Integer
    Dim months As Integer
    Dim days As Integer
    Dim xD, xM, xY As Integer
    Dim xAge As Double
'هنا الدالة التى تحسب العمر
    strAge = CalcAge(bdate, Date)
'هنا بيتم البدء فى فصل الايام والشهور والسنوات
    arrAge = Split(strAge, " ")
'هنا تم التوزيع السنوات والشهور والايام على المتغيرات الثلاث
'هنا ممكن تستبدلى بالتوزيع الخاص بكي
    years = Val(arrAge(0))
    months = Val(arrAge(2))
    days = Val(arrAge(4))

'
'هنا تم توزيع النتائج على الحقول الثلاث فى النموذج

    Y = years
    M = months
    D = days
'----------------------------------------------------------
    If days >= 20 Then
        xM = months + 1
        xD = 0
    Else
        xD = days
    End If
'----------------------------------------------------------
    If months >= 10 Then
        xY = years + 1
        xM = 0
    Else
        xY = years
        xM = months
    End If
'----------------------------------------------------------

Debug.Print xD
Debug.Print xM
Debug.Print xY

    If xY = 0 And xM = 0 And xD <> 0 Then
        xAge = xD
        ageunit = "Days"
    ElseIf xY = 0 And xM <> 0 And xD <> 0 Then
        xAge = xM
        ageunit = "Months"
    ElseIf xY = 0 And xM <> 0 And xD = 0 Then
        xAge = xM
        ageunit = "Months"
    ElseIf xY <> 0 And xM = 0 And xD <> 0 Then
        xAge = xY
        ageunit = "Years"
    ElseIf xY <> 0 And xM <> 0 And xD = 0 Then
        xAge = xY & "." & xM
        ageunit = "Years"
    Else
        xAge = xY & "." & xM
        ageunit = "Years"
    End If
    age = xAge
'Debug.Print xAge
End Sub

لاحظي انك ممكن تقفذى وتلغي وظيفة الكود من السطر هذا 

    years = Val(arrAge(0))
    months = Val(arrAge(2))
    days = Val(arrAge(4))

 

Expand  
هنا ممكن تستبدلى بالتوزيع الخاص بكي
    years = Val(arrAge(0))
    months = Val(arrAge(2))
    days = Val(arrAge(4))

 

دى مش فاهماهاه

قام بنشر
  في 12‏/11‏/2023 at 16:23, safaa salem5 said:
هنا ممكن تستبدلى بالتوزيع الخاص بكي
    years = Val(arrAge(0))
    months = Val(arrAge(2))
    days = Val(arrAge(4))

 

دى مش فاهماهاه

Expand  

بص انا عايزه ادى للمستخدم حرية اختيار

لو كتب  تاريخ الميلاد هيتحول ليوم وشهر وسنه

ولو كتب السن سواء كان يوم او شهر او سنه هيتحول لتاريخ ميلاد

وفى كلا الحالتين يتم تجميع السن فى حقل  

age

والجزءيه بتاعت التحويل من والى دى خلاص عملاها

عايزه بس جزئية التجميع

قولى استخدم ايه من الكود والغى ايه

قام بنشر

اقصد ان الجزء من هنا وفوق خاص بجلب العمر وتوزيعه على شهور وايام وسنوات 
    years = Val(arrAge(0))
    months = Val(arrAge(2))
    days = Val(arrAge(4))
لكن انت ممكن تعملى ده اذا انت حابه تكتبى السنوات والشهور والايام بنفسك دون حساب
    years = Y 'هنا هياخد قيمة السنوات من حقل السنوات فى النموذج
    months = M 'هنا هياخد قيمة الاشهر من حقل الاشهر فى النموذج
    days = D 'هنا هياخد قيمة الايام من حقل الايام فى النموذج
وهكذا 

والباقي الكود هيكمله عادي 

 

قام بنشر
  في 12‏/11‏/2023 at 16:37, عمر ضاحى said:

اقصد ان الجزء من هنا وفوق خاص بجلب العمر وتوزيعه على شهور وايام وسنوات 
    years = Val(arrAge(0))
    months = Val(arrAge(2))
    days = Val(arrAge(4))
لكن انت ممكن تعملى ده اذا انت حابه تكتبى السنوات والشهور والايام بنفسك دون حساب
    years = Y 'هنا هياخد قيمة السنوات من حقل السنوات فى النموذج
    months = M 'هنا هياخد قيمة الاشهر من حقل الاشهر فى النموذج
    days = D 'هنا هياخد قيمة الايام من حقل الايام فى النموذج
وهكذا 

والباقي الكود هيكمله عادي 

 

Expand  

بص انا لما بخرج من تاريخ الميلاد بيحصل تجميع عادى

لكن

لما بخرج من

Y

او

M

او

D

بيدينى رسايل خطأ

انا هبعتلك المثال زى ما انا كنت عاملاه ياريت حضرتك تظبطلى نقطه تجميع السن 

اثناء الخروج من تاريخ الميلاد او من احد حقول السن 

اكون شاكره ليك عشان تعبت ومش عارفه اظبطها

age collect.accdbFetching info...

قام بنشر
  في 12‏/11‏/2023 at 18:08, safaa salem5 said:

بص انا لما بخرج من تاريخ الميلاد بيحصل تجميع عادى

لكن

لما بخرج من

Y

او

M

او

D

بيدينى رسايل خطأ

انا هبعتلك المثال زى ما انا كنت عاملاه ياريت حضرتك تظبطلى نقطه تجميع السن 

اثناء الخروج من تاريخ الميلاد او من احد حقول السن 

اكون شاكره ليك عشان تعبت ومش عارفه اظبطها

age collect.accdb 720 kB · 2 downloads

Expand  

بعتذر عن التأخير
اتفضلى الكود حسب طلبك (بعد اصلاح خطأ سابق)

Sub xCalcAge()

    Dim years As Integer
    Dim months As Integer
    Dim days As Integer
    Dim xD, xM, xY As Integer
    Dim xAge As Double

        years = Nz(Y, 0)
        months = Nz(M, 0)
        days = Nz(D, 0)
        
'----------------------------------------------------------
    If days >= 20 Then
        xM = months + 1
        xD = 0
    Else
        xD = days
    End If
'----------------------------------------------------------
    If xM >= 10 Then
        xY = years + 1
        xM = 0
    Else
        xY = years
        xM = months
    End If
'----------------------------------------------------------

    If xY = 0 And xM = 0 And xD <> 0 Then
        xAge = xD
        ageunit = "Days"
    ElseIf xY = 0 And xM <> 0 And xD <> 0 Then
        xAge = xM
        ageunit = "Months"
    ElseIf xY = 0 And xM <> 0 And xD = 0 Then
        xAge = xM
        ageunit = "Months"
    ElseIf xY <> 0 And xM = 0 And xD <> 0 Then
        xAge = xY
        ageunit = "Years"
    ElseIf xY <> 0 And xM <> 0 And xD = 0 Then
        xAge = xY & "." & xM
        ageunit = "Years"
    Else
        xAge = xY & "." & xM
        ageunit = "Years"
    End If
    age = xAge
End Sub

مرفق الملف

age collect.rarFetching info...

.


جربي واذا تم حل المشكلة اختاري افضل اجابة

قام بنشر
  في 13‏/11‏/2023 at 04:52, عمر ضاحى said:

بعتذر عن التأخير
اتفضلى الكود حسب طلبك (بعد اصلاح خطأ سابق)

Sub xCalcAge()

    Dim years As Integer
    Dim months As Integer
    Dim days As Integer
    Dim xD, xM, xY As Integer
    Dim xAge As Double

        years = Nz(Y, 0)
        months = Nz(M, 0)
        days = Nz(D, 0)
        
'----------------------------------------------------------
    If days >= 20 Then
        xM = months + 1
        xD = 0
    Else
        xD = days
    End If
'----------------------------------------------------------
    If xM >= 10 Then
        xY = years + 1
        xM = 0
    Else
        xY = years
        xM = months
    End If
'----------------------------------------------------------

    If xY = 0 And xM = 0 And xD <> 0 Then
        xAge = xD
        ageunit = "Days"
    ElseIf xY = 0 And xM <> 0 And xD <> 0 Then
        xAge = xM
        ageunit = "Months"
    ElseIf xY = 0 And xM <> 0 And xD = 0 Then
        xAge = xM
        ageunit = "Months"
    ElseIf xY <> 0 And xM = 0 And xD <> 0 Then
        xAge = xY
        ageunit = "Years"
    ElseIf xY <> 0 And xM <> 0 And xD = 0 Then
        xAge = xY & "." & xM
        ageunit = "Years"
    Else
        xAge = xY & "." & xM
        ageunit = "Years"
    End If
    age = xAge
End Sub

مرفق الملف

age collect.rar 37.91 kB · 6 downloads

.


جربي واذا تم حل المشكلة اختاري افضل اجابة

Expand  

كدا تمام جزاك الله خيرا

الداله فيها خطأ بسيط

لما عدد الايام بيكون 30

او عدد الشهور. 30

ليتحول age. =1

Ageunit= years

قام بنشر (معدل)
  في 13‏/11‏/2023 at 09:15, safaa salem5 said:

كدا تمام جزاك الله خيرا

الداله فيها خطأ بسيط

لما عدد الايام بيكون 30

او عدد الشهور. 30

ليتحول age. =1

Ageunit= years

 وعايزه اضيف رساله لو المستخدم دخل يكتب فى

d

قيمه اكتر من 30

تطلع رساله

ادخل عدد الايام بطريقه صحيحه

نفس الكلام لو زاد عدد الشهور عن 12

ادخل عدد الشهور بطريقه صحيحه

Expand  

 

 

010000.gif

تم تعديل بواسطه safaa salem5
قام بنشر
  في 13‏/11‏/2023 at 09:27, safaa salem5 said:

 

 

010000.gif

Expand  

 

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

 

قام بنشر
  في 13‏/11‏/2023 at 10:17, عمر ضاحى said:

 

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

 

Expand  

الداله اللى حضرتك عاملها بتحول  تاريخ الميلادل أيام وشهور وسنه 

المشكله بتحصل لما أكتب فى حقل

اليوم

او الشهر

او

السنه

يعنى فى حالة ادخال يدوى فى الحقول دى

يعنى كدا المشكله بعيده عن الداله بتاعت تاريخ الميلاد

  في 13‏/11‏/2023 at 13:54, safaa salem5 said:

الداله اللى حضرتك عاملها بتحول  تاريخ الميلادل أيام وشهور وسنه 

المشكله بتحصل لما أكتب فى حقل

اليوم

او الشهر

او

السنه

يعنى فى حالة ادخال يدوى فى الحقول دى

يعنى كدا المشكله بعيده عن الداله بتاعت تاريخ الميلاد

Expand  

ممكن نحل المشكله

إن انا امنع المستخدم يكتب رقم 

30

حقل D

 او 

12

فى حقل M

برسائل تنبيه 

قام بنشر

استاذه / صفي

طلبك فى حد ذاته فيه تعارض 

لا يجوز ان تطلبي تقريب وتحديد تاريح ميلاد 

لان الاثنين معا لن يكون فيها دقه 

اذا اردتي تحويل تاريخ الميلاد الى عمر 

او تحويل العمر الى تاريخ ميلاد طلبك هنا هيكون مظبوط 

لكن ان تطلبي تحديد تاريخ الميلاد وتقريب العمر هنا هتظهر نتائج خطأ

لاحظي الصوره التاليه فى اخر مشهد 

image.thumb.gif.0a8454a5d89f40ca9d03044eb491baf2.gif

 

بعد ما جاب تاريخ الميلاد وقربت غير الدينا 

 

ولتحويل العمر الى تاريخ ميلاد 

هتحتاجي الدالة هذه 

Function CalcBdate(years As Integer, months As Integer, days As Integer) As Date
    CalcBdate = DateAdd("yyyy", -years, Date)
    CalcBdate = DateAdd("m", -months, CalcBdate)
    CalcBdate = DateAdd("d", -days, CalcBdate)
End Function

 

وايضا الصب هذا

Sub TestCalcBirthdate()

    Dim years As Integer
    Dim months As Integer
    Dim days As Integer


    years = Me.Y.Value
    months = Me.M.Value
    days = Me.D.Value
    bdate = CalcBdate(years, months, days)


End Sub

 

age collect.rar.

  • Like 1

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