الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]كيف أحول رقم إلى شهور وسنين

بدأه ابوغدي في 9 ديسمبر 2008 · 10 رد · 1,008 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

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

لدي حقل في جدول يحتوي على رقم واسم الحقل month

كيف احول الرقم إلى عدد الشهور والسنين

بمعنى

5 = 5 شهور

12 = سنة

14 = سنة وشهرين

وجزاكم الله كل خير

#2

بســم الله الـرحمــن الرحيــم

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

اخي الكريم .. لعل في هذا المثال ما يلبي طلبك

koao_Date_Full_Phrase.zip

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#3

اخ koao ممكن تشرح لي هذا الكود

Private Sub month_AfterUpdate()

Dim Month_Count, Year_Count As Integer

Dim Month_String, Year_String As String

Year_Count = Me.month \ 12

Month_Count = Me.month - (Year_Count * 12)

Select Case Year_Count

Case 0

Year_String = ""

Case 1

Year_String = ""

Case 2

Year_String = "ÓäÊÇä"

Case 3 To 10

Year_String = Year_Count & " ÓäæÇÊ"

Case Is > 11

Year_String = Year_Count & " "

End Select

Select Case Month_Count

Case 0

Month_String = ""

Case 1

Month_String = ""

Case 2

Month_String = "ÔåÑÇä"

Case 3 To 10

Month_String = Month_Count & " ÔåæÑ"

Case Is > 11

Month_String = Month_Count & " "

End Select

If Year_Count <> 0 And Month_Count = 0 Then

Me.Date_Full_Phrase = Year_String

ElseIf Year_Count = 0 And Month_Count <> 0 Then

Me.Date_Full_Phrase = Month_String

ElseIf Year_Count <> 0 And Month_Count <> 0 Then

Me.Date_Full_Phrase = Year_String & " æ " & Month_String

End If

End Sub

#4

بســم الله الـرحمــن الرحيــم

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

أخي بوجهاد .. أنت تأمر ونحن نلبي .. ولكن هدانا الله وإياك لم تبين ما أشكل عليك في الكود

لذا سأحاول أشرح الكود كاملا

Dim Month_Count, Year_Count As Integer
Dim Month_String, Year_String As String
Year_Count = Me.month \ 12

عرفت متغيرين من نوع Integer لتخزيين عدد السنوات وعدد الشهور

وكذلك متغيرين من نوع String لتخزيين النص كسنة وسنتان وسنوات وكذلك شهر وشهران وشهور

ثم إستخدمت المعامل \ وهو يختلف عن / لأن الأول يعطي رقم صحيح لناتج عملية القسمة والآخر يعطي رقم عشري

فلو قسمت بإستخدام المعامل \

5 على 12 فإن الناتج صفر .. ولو قسمت 13 على 12 فإن الناتج واحد .. وهكذا

ووضعت ناتج قسمة عدد الشهور في الحقل month في المتغير Year_Count

Month_Count = Me.month - (Year_Count * 12)

ووضعت ناتج طرح الناتج من ضرب قيمة المتغير Year_Count بـ 12 من عدد الشهور في الحقل month في المتغير Month_Count

Select Case Year_Count
Case 0
Year_String = ""
Case 1
Year_String = ""
Case 2
Year_String = "ÓäÊÇä"
Case 3 To 10
Year_String = Year_Count & " ÓäæÇÊ"
Case Is > 11
Year_String = Year_Count & " "
End Select
Select Case Month_Count
Case 0
Month_String = ""
Case 1
Month_String = ""
Case 2
Month_String = "ÔåÑÇä"
Case 3 To 10
Month_String = Month_Count & " ÔåæÑ"
Case Is > 11
Month_String = Month_Count & " "
End Select

<< يبدو أن التشفير في الأكسيس يختلف عن المنتدى لذا قد لا تظهر الحروف العربية بشكل واضح>>

عموما .. كم تعلم فإنك تقول سنة ولا تقول 1 سنة وتقول سنتان ولا تقول 2 سنة وهكذا

لذا وضعت تحليل لقيمة متغير عدد السنوات بإستخدام عبارة Select Case ووضعت القيمة المناسبة في المتغير Year_String

فلو كان عدد السنوات صفر .. فقيمة المتغير ستكون لا شئ لأمنع ظهور 0 سنة فلا حاجة لذكرها

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

ولو كان إثنين ... فقيمة المتغير ستكون سنتان فقط ولا حاجة لظهور الرقم 2

ولو كان بين الرقمين 3 و10 فنحتاج لتبيين قيمة متغير عدد السنوات كرقم ثم كلمة سنوات

ولو كان أكبر من 11 سنة (وهنا تبين لي أني أخطأت فالمفروض يكون أكبر أو يساوي) فيجب علي تبيين قيمة متغير عدد السنوات كرقم ثم كلمة سنة

ونفس الشئ بالنسبة لمتغير عدد الشهور ووضعته في المتغير Month_String

If Year_Count <> 0 And Month_Count = 0 Then
Me.Date_Full_Phrase = Year_String
ElseIf Year_Count = 0 And Month_Count <> 0 Then
Me.Date_Full_Phrase = Month_String
ElseIf Year_Count <> 0 And Month_Count <> 0 Then
Me.Date_Full_Phrase = Year_String & " æ " & Month_String
End If

هنا فقط لمعرفة هل نستخدم "و" بين المتغيرين أو لا .. مع أنني تبين لي أنني أخطأت فالكود المفروض يكون كالتالي

If Year_Count <> 0 And Month_Count <> 0 Then
Me.Date_Full_Phrase = Year_String & " æ " & Month_String
Else
Me.Date_Full_Phrase = Year_String & Month_String
End If

وخطأي أنه لست محتاج أن أختبر كل متغير إذا هو صفر .. بحكم أنني قد حللت القيمة بإستخدام العبارة Select Case السابقة

أرجو أني وفقت بالشرح .. وهذا المثال بعد تفادي الأخطاء

koao_Date_Full_Phrase2.zip

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#5

أخي الحبيب koao

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

الف شكر على جهدك الرائع هذا ما كنت أبحث عنه

لكن هل استطيع استخدامه في استعلام ؟؟

وألف شكر مرة أخرى

#6
اقتباس
لكن هل استطيع استخدامه في استعلام ؟؟

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

وإذا ما عرفت فأبشر باللي يرضيك

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#7

أخي الكريم

شكرا لردك ولتواجدك معي

اريد نفس الجدول month به عدد الشهور

ثم انشئ استعلام month عدد الشهور Date_Full_Phrase به نفس البيانات سنة وسهر مثلاً

لكن دون الحاجة لنموذج لتسجيلها

حيث أن عندي قاعدة بيانات قديمة فيها الآف السجلات ولا أريد ادخال البيانات من جديد

شكرا لك

#8

بســم الله الـرحمــن الرحيــم

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

أخي ابوغدي .. غالي والطلب رخيص

تم عمل ما تريد عن طريق الإستعلام من دون النموذج

عملت إستعلام بإسم koao لتحليل البيانات كما ستلاحظ

ثم عملت إستعلام بإسم koao1 يأخذ الزبدة .. من الإستعلام الأول كما ستلاحظ

والحمدلله رب العالمين أولا وآخرا

koao_Date_Full_Phrase3.zip

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#9

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

بارك الله فيك اخي koao وجزاك خير الجزاء على كل ما تقدمه لأخواننا بمنتدانا الغالي

اقتباس
<< يبدو أن التشفير في الأكسيس يختلف عن المنتدى لذا قد لا تظهر الحروف العربية بشكل واضح>>
ً

فعلاً هذه المشكلة موجودة ولتفاديها تحتاج الى تحرير الكود بعد ادراجه وتنسيقه وبالتحديد كل العبارات التي تحتوي على اللغة العربية ليظهر الكود واضحاً

تقبل فائق الاحترام والتقدير,,,

اخوك / يوسف احمد

#10

أستاذي الكريم .. يوسف أحمد .. شرفتني بإهتمامك ومتابعتك

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

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

اللهم صلي على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

وبارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد

#11

أخي الحبيب koao

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

هذا فعلا ما اردت

فجزاك الله كل خير

مواضيع مشابهة