شامل2 قام بنشر أكتوبر 14, 2013 قام بنشر أكتوبر 14, 2013 السلام عليكم في البداية كل عام والجميع بالف خير تقرير يستخدم لتسجيل الحضور والغياب كيف يمكن ملئ هذه الحقول بايام الاسبوع والتاريخ لشهر معين يتم اختياره بدون يوم الجمعة من الشهر مثلا اذا كان لدينا الشهر تشرين الاول يبدأ من الثلاثاء 1 / 10 وهكذا صعودا وعندما ياتي شهر اخر اختار الشهر ويتم تلقائيا تعبئة الحقول مثال.rar 1
شامل2 قام بنشر أكتوبر 18, 2013 الكاتب قام بنشر أكتوبر 18, 2013 السلام عليكم كل عام والجميع بالف خير للرفع
عبدالله المجرب قام بنشر أكتوبر 18, 2013 قام بنشر أكتوبر 18, 2013 السلام عليكم رغم عدم خبرتي في الاكسس الا اني حاولت التعلم في مثالك في المثال بالضغط على التقرير سيظهر مربعي إدخال (الاول لتاريخ بداية الشهر الحالي مثال 01/10/2013) والأخر لتاريخ نهاية الشهر الحالي مثال (31/10/2013) علماً أنه بإمكانك التعديل في التاريخ الافتراضي جرب واعلمني بالنتيجة فقد حاولت الكثير حتى وصلت اليها مثال.rar
شامل2 قام بنشر أكتوبر 18, 2013 الكاتب قام بنشر أكتوبر 18, 2013 السلام عليكم كل عام وانت بالف خير تسلم اخي العزيز ويارب ان شاء الله يعاد عليك العيد بالخير والبركة الحل ممتاز والفكرة رائعة جدا الكود متعب؟؟؟؟
شامل2 قام بنشر أكتوبر 18, 2013 الكاتب قام بنشر أكتوبر 18, 2013 السلام عليكم اكون ممنون اذا شرحت الكود بالتفصيل
منتصر الانسي قام بنشر أكتوبر 19, 2013 قام بنشر أكتوبر 19, 2013 ماشاء الله أخي أبو احمد يبدو انك طلقت الأكسل وداخل للأكسس بقوة عيد مبارك عليك وعلي اخي ابو خليل واخونا ابو ادم الله يذكره بالخير وان شاء الله يكون في صحة وعافية تحياتي,,, 1
عبدالله المجرب قام بنشر أكتوبر 19, 2013 قام بنشر أكتوبر 19, 2013 يالله الاساتذة الكبار جهابذة الاكسس اعجبهم العمل يبدو اني في الطريق الصحيح ولو انه طويل جداً للوصول الى ربع ربع ربع ما عندكم ============================== السلام عليكم اكون ممنون اذا شرحت الكود بالتفصيل ان شاء الله
عبدالله المجرب قام بنشر أكتوبر 19, 2013 قام بنشر أكتوبر 19, 2013 هذا هو الكود بالكامل وسيتم شرحه سطر سطر ان شاء الله Private Sub Report_Open(Cancel As Integer) On Error GoTo 2 Dim StartDate As Date, EndDate As Date, K As Integer, I As Integer StartDate = InputBox("تاريخ بداية الشهر", "تنبيه", 1 & "/" & Month(Date) & "/" & Year(Date)) EndDate = InputBox("تاريخ نهاية الشهر", "تنبيه", DateAdd("d", -1, DateAdd("m", 1, 1 & "/" & Month(Date) & "/" & Year(Date)))) If DateDiff("d", StartDate, EndDate) > 31 Then Exit Sub For I = 0 To DateDiff("d", StartDate, EndDate) If Weekday(StartDate + I, vbFriday) = 1 Then GoTo 1 Me.Controls("Date" & K + 1).Caption = Format(StartDate + I, "ddd d/m") K = K + 1 1 Next 2 End Sub Private Sub Report_Open(Cancel As Integer) حدث فتح التقرير ======================================================= On Error GoTo 2 في حالة خطاء في الكود يتم الانتقال الى السطر الذي به الرقم 2 الموجودة في نهاية الكود لانهاء الكود ومن امثلة الاخطاء التي تقع كتابة نص في مربع الأدخال او كتابة تاريخ غير موجود مثل 30/02/2013 وهكذا ======================================================= Dim StartDate As Date, EndDate As Date, K As Integer, I As Integer الأعلان عن المتغيرات ونوعها وهنا لدينا متغييرين نوعهما تاريخ هما (EndDate - StartDate ) ومتغيرين نوعهما عدد صحسح هما( K - I) ======================================================= StartDate = InputBox("تاريخ بداية الشهر", "تنبيه", 1 & "/" & Month(Date) & "/" & Year(Date)) هنا تم التعريف بقيمة StartDate وهي عبارة عن مربع إدخال InputBox وكما هو معروف فان مربع الادخال له عدة متغيرات ومنها (ما تم استخدامه) شاهد الصورة 1. prompt هنا عبارة عن النص الموجود في مربع الادخال ويستخدم للتوضيح "تاريخ بداية الشهر" 2. title عنوان مربع الادخال "تنبيه" 3. Default القيمة الافتراضية لمربع النص (تم استخدامها بدل الادخال اليدوي ) في القيمة الافتراضية لمربع النص تم استخلاص تاريخ بداية الشهر الحالي بواسطة هذه الدالة 1 & "/" & Month(Date) & "/" & Year(Date) وهي عبارة عن الرقم 1 و شرطة التاريخ / واستخراج الشخر من التاريخ الحالي بدالة Month و / واستخراج السنة من التاريخ الحالي بدالة Year لينتج عند تاريخ بهذا الشكل 1/10/2013 ======================================================== EndDate = InputBox("تاريخ نهاية الشهر", "تنبيه", DateAdd("d", -1, DateAdd("m", 1, 1 & "/" & Month(Date) & "/" & Year(Date)))) نفس مواصفات الشرح السابق ولكن هنا تم استخدام دالة DateAdd لاستخراج تاريخ أخر يوم في الشهر كما هو معلوم فدالة DateAdd تتكون من تلاثة متغيرات هي 1. interval الفترة المراد اضافتها الى التاريخ 2. number عدد الأيام (بالسالب أو الموجب ) 3. date التارخ المراد الاضافة علية (بالسالب أو الموجب) وقد أستخدمت مرتين الاولى لأضافة شهر على التاريخ الذي تم كتابته بهذه الطريقة (كما شرحت سابقاً) 1 & "/" & Month(Date) & "/" & Year(Date)) وكانت الدالة كالتالي DateAdd("m", 1, 1 & "/" & Month(Date) & "/" & Year(Date)) وسينتج منها تاريخ هو 01/11/2013 ثم استخدمت الدالة DateAdd مرة اخرى لإنقاص يوم واحد من هذا التاريخ ليعطينا اخر يوم في الشهر السابق لهذا التاريخ وهو 31/10/2013 وكانت المعادلة ككل كالتالي DateAdd("d", -1, DateAdd("m", 1, 1 & "/" & Month(Date) & "/" & Year(Date)))) ====================================================================== If DateDiff("d", StartDate, EndDate) > 31 Then Exit Sub جملة شرطية بإستخدام الدالة DateDiff (دالة لأستخراج عدد الايام بين تاريخين) فاذا تجاوز عدد الايام بين تاريخ بداية الشهر المدخل ونهايته يتم الخروج من الكود ===================================================================== For I = 0 To DateDiff("d", StartDate, EndDate) حلقة تكرارية تبداء من صفر وتنتهي حتى (عدد الايام بين التاريخين) ======================================== If Weekday(StartDate + I, vbFriday) = 1 Then GoTo 1 جملة شرطية ففي كل حلقة تكرارية يزيد تاريخ البداية برقم قيمة المتغير i ويتم فحص التاريخ بدالة Weekday فاذا صادف الجمعة ينتقل الكود الى السطر الذي به الرقم 1 وهو بداية حلقة تكرارية جديدة لكن دو تنفيذ السطور المحصورة بينهما (ويستخدم هذا السطر لتجاوز يوم الجمعة حسب ما هو مطلوب في هذا الموضوع) ============================================== Me.Controls("Date" & K + 1).Caption = Format(StartDate + I, "ddd d/m") هنا زبدة الكلام في كل حلقة تكرارية سيزداد قيمة المتغير i واحد فاذا لم يكن حاصل مجموع تاريخ البداية وقيمة المتغير i يوم جمعة فسيتم تنفيذ هذا السطر في البداية نعرف ان المتغير K تم الاعلان عنه كعدد صحيح وستكون قيمته صفر مالم يعلن غير ذلك كما نعرف ان الليبلات (التسمية) تم تسميتهن بإسم Date من 1 حتى 27 هكذا Date1 - Date2- Date3 وهكذا فبهذا السطر ستكون الليبلات وعناوينها عبارة عن تاريخ البداية مضاف اليه قيمة المتغير i ولكن بتنسيق أسم اليوم (ddd) و رقم اليوم و / و رقم الشهر هكذا 1/10 ================================================= K = K + 1 1 Next 2 End Sub هذه الاسطر كالتالي 1. تزيد قيمة K بمقدار واحد في كل حلقة تكرارية لا يكون فيها التاريخ يوم جمعة 2. بداية حلقة تكرارية من جديد 3. نهاية الكود ===================== ان شاء الله أكون وفقت في الشرح والله أعلم 1
AlwaZeeR قام بنشر أكتوبر 21, 2013 قام بنشر أكتوبر 21, 2013 بارك الله فيك اخي الكريم (عبد الله) مجهود رائع
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.