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

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

قام بنشر

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

طريقة إرجاع التاريخ الى أول الشهر  كما هو المثال

عندي تاريخ 2019/09/15 يصبح 2019/09/01

واذا كان 2019/09/16 يصبح 2019/10/01 

اي نص الشهر الاول يرجع الى اول الشهر  واذا دخل نصف الشهر الثاني يرجع الى اول الشهر الموالي 

شكرا جزيلا

قام بنشر

جميل جدا يا @ابا جودى كما هي حلولك المبتكره دائما

ولو سمحت لي ان اقدم حل اخر باستخدام منشئ التعبير وبعض دوال الاكسس لمن لا يفضل التعامل مع الاكواد واسمح لي ببعض الشرح وبعد الاذن من راعي الموضوع الاخ الفاضل @مرحبا البي

اولا قمنا باضافة مربع نص غير منظم لاستخلاص عدد الايام من التاريخ المدخل ووضعنا قيمة الحقل

=Day([txtDate])

ثم في حقل التاريخ الجديد وضعنا القيمة التاليه

=IIf(IsNull([نص8]);"";Switch([نص8] Between 1 And 15;"01" & "/" & Format([txtDate];"mm/yyyy");[نص8] Between 16 And 31;"01" & "/" & Format([txtDate];"mm")+1 & Format([txtDate];"/yyyy")))

الملف مرفق وتقبلوا خالص مودتي وتقديري

إرجاع تاريخ.accdb

  • Like 1
قام بنشر

بل اسمح لى سيدى انا اتعلم انا على يديكم :fff:

جزاكم الله خيـــرا على متابعتكم وطرحكم المميز دائما

ومن فضلك طالما انك تطرقت الى تلك الطريقة فلتوضح عمل الدالة Switch :biggrin:  حتى اتعلم 

انا لم افهم قصدك يا حبذا لو توضح اكثر وتضع لنا مرفق التطبيق :wavetowel:

  • Like 1
قام بنشر

اخي الحبيب @ابا جودى

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

و إذا تساوت هذه القيمة مع أي إحتمال ستتنفذ الأوامر التي وضعناها في هذا الإحتمال فقط

واجمل مافيها انها تسمح باستخدام من الى كما في المثال اعلاه وكذلك اي عدد من الاحتمالات

Switch([نص8] Between 1 And 15

 

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

كل الشـــكر والتقدير أستاذى الجليل واخى الحبيب الاستاذ @kha9009lid :fff:

يعنى ممكن نسهل الموضوع شوية ونقول انها تشبه دالة Replace  ولكن الجميل انها تكتب مرة واحدة فقط :biggrin::wink2:

طيب وممكن نعمل لها كود داخل موديول حتى نستطيع استخدامها فى كل زوايا البرنامج :biggrin:  زى المثال البسيط ده 

Function RD(MyDate As String)

    Dim SmallerThan   As String
    Dim GreaterThan   As String
    Dim MyDay         As Integer
    
    MyDay = Day(MyDate) 'extract the day from a specific date
    
    'treatment of date to be returned on the day it was extracted
    SmallerThan = "01" & "/" & Format(MyDate, "mm/yyyy")
    GreaterThan = "01" & "/" & Format(MyDate, "mm") + 1 & Format(MyDate, "/yyyy")
    
    RD = Switch(MyDay <= 15, SmallerThan, MyDay > 15, GreaterThan)

End Function

وننادى عليه بكل زوايا البرنامج مع مراعاة تغيير xx باسم حقل التاريخ :wink2:

RD([xx])

 

 

الاستاذ والاخ الحبيب @مرحبا البي جرب المرفق التالى واخبرنى بالنتيحة:fff:

 

 

إرجاع تاريخ.accdb

تم تعديل بواسطه ابا جودى
  • Like 1
قام بنشر

بل من الممكن ان نقول انها الشقيقة لكل من

IIf . Choose

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

بخصوص مثال اخر ابشر اخي العزيز انا حاليا اعمل على مثال يحتوي على 35 دالة وطريقة استخدامها في الاكواد وفي منشئ التعبير وبشروط مختلفة  لعلي انتهي منه قريبا

الملف موجه للمبتدئين وليس للاخبراء امثالكم استاذي واخي الحبيب

 

41 دقائق مضت, ابا جودى said:

كل الشـــكر والتقدير أستاذى الجليل واخى الحبيب الاستاذ @kha9009lid :fff:

يعنى ممكن نسهل الموضوع شوية ونقول انها تشبه دالة Replace  ولكن الجميل انها تكتب مرة واحدة فقط :biggrin::wink2:

طيب وممكن نعمل لها كود داخل موديول حتى نستطيع استخدامها فى كل زوايا البرنامج :biggrin:  زى المثال البسيط ده 


Function RD(MyDate As String)

    Dim SmallerThan   As String
    Dim GreaterThan   As String
    Dim MyDay         As Integer
    
    MyDay = Day(MyDate) 'extract the day from a specific date
    
    'treatment of date to be returned on the day it was extracted
    SmallerThan = "01" & "/" & Format(MyDate, "mm/yyyy")
    GreaterThan = "01" & "/" & Format(MyDate, "mm") + 1 & Format(MyDate, "/yyyy")
    
    RD = Switch(MyDay <= 15, SmallerThan, MyDay > 15, GreaterThan)

End Function

وننادى عليه بكل زوايا البرنامج مع مراعاة تغيير xx باسم حقل التاريخ :wink2:


RD([xx])

 

 

 

 

لن نستطيع ان نجاريك يا ابا جودي بل انت المعلم ومروض اكسس

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

العفو منكم استاذى الجليل انا اقل طالب علم ودائما انهل مما تقدمونه
شكر الله لكم واحسن الله اليكم كما تحسنون الى طلاب العلم امثالى جزاكم الله تعالى انت وكل اساتذتى العظماء كل الخير:fff:

  • اما بخصوص القاعدة التى تحدثتم عنها فانا بانتظارها وكلى لوعة ولهفة واشتياق  :biggrin:
تم تعديل بواسطه ابا جودى
  • Like 1
قام بنشر (معدل)
في ١٦‏/٩‏/٢٠١٩ at 16:58, مرحبا البي said:

انظر الى هذا الاستعلام 

وأستاذى العزيز واخى الحبيب الاستاذ @kha9009lid :fff: 
اكتشفت شئ بمرفق اخونا الحبيب الاستاذ @مرحبا البي :fff:

ماذا ان كان التاريخ  >>---->   16/12/2019  :biggrin::wallbash:

لقد قمت بعمل الكود الاتى لحل هذه المشكلة
 

Function RD(MyDate As Date)
Select Case Nz(Month(MyDate), "")
    Case Is <= 11
        Select Case Nz(Day(MyDate), "")
                Case Is <= 15
                RD = Format("01" & "/" & Format(MyDate, "mm/yyyy"), "dd/mm/yyyy")
            Case Is > 15
                RD = Format("01" & "/" & Format(MyDate, "mm") + 1 & Format(MyDate, "/yyyy"), "dd/mm/yyyy")
        End Select
    Case Is = 12
            Select Case Nz(Day(MyDate), "")
                Case Is <= 15
                RD = Format("01" & "/" & Format(MyDate, "mm/yyyy"), "dd/mm/yyyy")
            Case Is > 15
                RD = Format("01/01/" & Format(MyDate, "yyyy") + 1, "dd/mm/yyyy")
        End Select
End Select
End Function

 

----------------------

test5.accdb

تم تعديل بواسطه ابا جودى
  • 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