الطريقة اننا نستخرج بداية السنة القادمة او بداية الشهر القادم
وذلك باستخدام متغير او باستخدام حقل داخل النموذج
في المثال المرفق اظهرنا ذلك داخل حقلين في النموذج
يمكنك اخفاؤهما و بناء الشرط عليهما في حدث فتح او تحميل النموذج
آمل ان تكون المسألة اتضحت لك
y_m_start.rar
فتحت المرفق على الاصدار 2010
والنتيجة واحدة : لا يمكن عرض التقرير من خلال النموذج
اخي محمد : اذا كانت النتيجة غير ما ذكرت ارجو ان ترفق صورة يظهر فيها التقرير من خلال النموذج
تفضل وحدتين نمطيتين واحدة لاول كل شهر والاخرى لبداية سنة جديدة
Public Function YearStart(i As Date) As Date
YearStart = DateSerial(Year(i), 1, 1) - 1
End Function
Public Function MonthStart(i As Date) As Date
MonthStart = DateSerial(Year(i), Month(i) + 1, 1) - 1
End Function
اخي محمد
اغبطك على ذوقك الرفيع في التصميم
وسوف استعرض المرفق لاحقا على اصدار اوفيس أحدث
في الاصدار 2003 يمتنع عرض التقرير من خلال النموذج
اقصد بـ من خلال اي : عرض التقرير داخل النموذج مثل النموذج الفرعي
السلام عليكم
لا يمكنني الاطلاع على المرفق بسب الاصدار
بالنسبة للراتب :
هل يتم الاحتفاظ بقيم الرواتب القديمة ؟
اذا نعم : نستخدم استعلام الحاق ( الراتب القديم +500)
اذا لا : يمكنك عمل ذلك باستخدام استعلام التحديث لحقل الراتب
اما الاجازات فعادة لا يتم تثبيت المستحق من الاجازة داخل الجدول وانما يتم تثبيت ما تم صرفه
حيث يتم احتسابها بناء عللى تاريخ المباشرة وحتى اليوم الحالي ويطرح منها ما تم التمتع به
فمثلا اذا كانت مباشرة الموظف قبل سنة فاستحقاقه من الاجازة 12*5= 60 يوما يطرح منها ما تم صرفه ليتبقى له رصيده من الاجازة
يمكن تطبيق ما تفكر به كالتالي :
1- اعمل استعلام تحديد تجميعي وضع داخله المعيار المذكور
2- اجعل حقول البيانات في التقرير غير منضمة داخل مقطع الراس او التذييل كالتالي :
الحقول الافقية بعدد السنوات والحقول الرأسية بعدد نوع ترك العمل
3- اجلب البيانات من الاستعلام الى التقرير بواسطة الدالة dlookup بمعلومية شرطين :
- السنة
- نوع ترك الخدمة
شكرا لاخي رضوان والشكر موصول ايضا لاخي اسير الشروق
الاعمال التي يقوم بها المشرفون لتنظيم المنتدى لا يراد منها العقاب
وانما هي اعمال تنظيمية بحتة
تم فصل مشاركة الاخ الكريم في موضوع مستقل هنا http://www.officena.net/ib/index.php?showtopic=58958#entry376036
يا بو منه الاغلاق من صالحك انت قبل ان يكون للمصلحة العامة
لان الذي سيعطيك الحل هناك ( ان كان يعرفه) سيعطيك اياه هنا
افتح موضوعا جديد ( كلها نسخ ولصق )
وان كنت تريدني افتحه بدلا عنك فعلى الرحب والسعة
وقت ونوع الحدث ليس له علاقة بالنتائج
رجعت الى تعديلي في المثال الاخير المرفق فوجدته يعرض النتيجة بشكل سليم
يبدو حصل لديك خلل اثناء تعديل الحدث
جرب المرفق الاخير وهل هو يعطي النتيجة الخاطئة ؟
لسنا في حاجة الى تثبيت المجاميع او النتيجة ما دمنا نستطيع اظهارها متى شئنا
الكود يعمل في حدث تنسيق التفصيل
جرب وانقل الكود الى حدث طباعة التفصيل
العشرة الأوائل3.rar
تفضل تم التعديل حسب رغبتك
جعلنا هذا المعيار في حقل التاريخ داخل الاستعلام
>Year(Date())-10
الرقم 10 يعني السنوات التي سيتم عرضها تنازليا
قاعدة البيانات11.rar
ارى ان تفاصيل السبب في ترك الخدمة ثابتة نوعا ما
لهذا لو جعلتها هي الاعمدة لتمكنت من عرض جميع البيانات القديم منها والحديث
ولاصبح التقرير اكثر مرونة
انظر الاستعلام الذي عملته لك داخل المثال
قاعدة البيانات2.rar
ثانيا تطبيق الفكرة داخل الاستعلام
نحتاج الى صنع وحدة نمطية عامة تقوم بالعمليات المشروطة السابقة ومن ثم نقوم بتوظيفها داخل الاستعلام
وما يهمنا هنا هو الحقل الرابع والذي هو حقل اسم العائلة اما الحقل الاول فقد تمكنا منه من خلال اول مشاركة
وستكون الوحدة النمطية على هذا الترتيب
Public Function qsplit4(FullName As String)
On Error Resume Next
Dim x As Integer
x = Len(FullName) - Len(Replace(FullName, " ", ""))
qsplit4 = Split(FullName, " ")(x)
End Function
تجزئة النص في الاستعلام حسب التحديد.rar
للشرط النصي
Text1 = DLookup("[ID]", "Table1", "[SName]='" & [TextName] & "'")
للشرط الرقمي
Text1 = DLookup("[ID]", "Table1", "[id]=" & me.id )
بدون شروط اذا كان الجدول يحتوي على سجل واحد فقط
Text1 = DLookup("[ID]", "Table1")