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

سجل جديد لكل موظف

بدأه omar19-3 في 16 فبراير 2011 · 6 رد · 989 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أساتذتى الأفاضل...

أثناء تجوالى بالمنتدى وجدت قاعدة جميلة للأستاذ العمرى ... وهى عن حساب الاجازات الاعتيادية...

تمكننا القاعدة من حساب الأيام المستحقة لكل فرد سنويا... ولكن بشكل يدوى حيث يتم الإدخال باختيار الموظف ومن ثم التعامل مع بياناته.

حاولت إدخال سجل جديد لجميع الموظفين دفعة واحدة .. لكنى لم اسطع ذلك..

رجاء.. هل يمكن إدخال سجل جديد لكل موظف (قائم بالعمل) فى اليوم الأول من كل عام .. فى جدول سنوات العاملين.... وجدول الأجازات.

emp11.rar

اللهم لك الحمد كما ينبغى لجلال وجهك وعظيم سلطانك .. لا إله إلا أنت سبحانك أنى كنت من الظالمين

#2

تحتاج الى استعلام الحاق..

انشء الاستعلام بحيث يدخل بيانات الموظفين دفعة واحدة الى جدول الاجازات ثم شغل النموذج ستجد البيانات جاهزة

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#3

شكرا أستاذ همام على الاهتمام..

ـ لكن استعلام الالحاق يكون لسجلات موجودة فعلا يلحقها بجدول.

ـ اما فى حالتنا فأنا أريد انشاء سجلات جديدة لكل الافراد فى اليوم الاول من كل عام ...

فمثلا عند فتح نموذج (إدخال وعرض بيانات شئون الأفراد) نجده يطلب منا ادخال الاسم والسنة .. وبالضغط على زر (الاجازات) يتم اختبار وجود السنة .. فان كانت السنة موجودة بالفعل يتم فتح نموذج (الاجازات) على بيانات الموظف المطلوب والسنة المطلوبة ..... وإلا يتم إنشاء سجل جديد بالسنة الجديدة تدرج قيمه فى:

1ـ جدول (سنوات العاملين) متضمنا بيانات السنة واسم العامل.

2ـ جدول (رصيد الأجازات) متضمنا بيانات الاسم والسنة ونوع الرصيد والرصيد الجديد وهو متغير وفقا للشروط الموضوعة بكود الموديول (Internal_Code).

ـ ما اريده بدلا من كل هذه الخطوات هو إضافة سجل جديد لكل موظف فى اليوم الاول من كل عام (لجميع الموظفين) بضغطة زر أمر ... فتدرج بيانات السنة والعامل فى جدول (سنوات العاملين) ... وتدرج بيانات الاسم والسنة ونوع الرصيد والرصيد الجديد فى جدول (رصيد الأجازات).

وذلك بدلاً من أن يقوم المستخدم بتنفيذها يدويا لكل موظف على حده حيث أن الرصيد الجديد هنا غير مرتبط بحصول الموظف على اجازة بل هو يستحقه مع بداية كل عام...

اللهم لك الحمد كما ينبغى لجلال وجهك وعظيم سلطانك .. لا إله إلا أنت سبحانك أنى كنت من الظالمين

#4

ضع هذا الكود فى حدث عند الضغط للزر أخى

Dim rst As Recordset, c, i As Integer
Set rst = CurrentDb.OpenRecordset("emp_data")
c = rst.RecordCount
rst.MoveFirst

For i = 1 To c
CurrentDb.Execute "INSERT INTO emp_years ( [ÇáÚÇãá],[ÇáÓäÉ] ) values (" & rst![ÇáÑÞã ÇáÞæãì] & " , " & Year(Date) & " );"
CurrentDb.Execute "INSERT INTO emp_vac ([ÑÕíÏ ãÑÍá],[ÇáÑÕíÏ ÇáÌÏíÏ],[ÇáÑÕíÏ ÇáãÑÍá],[äæÚ ÇáÅÌÇÒÉ],[ÇáÅÓã],[ÇáÓäÉ] ) values (" & 0 & " , " & 21 & " , " & 0 & " , " & 2 & " , " & rst![ÇáÑÞã ÇáÞæãì] & " , " & Year(Date) & " );"
rst.MoveNext
Next

rst.Close
Set rst = Nothing

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

تم تغيير أسماء الجداول الثلاثة الموجودة بالكود الى الانجليزية

emp11.rar

1

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#5

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

ـ تم تعديل المسميات إلى الإنجليزية......

ولكن إذا كانت سنوات الخدمة للموظف أقل من سنة يأخذ 15 يوماً ، وإذا كان سنوات الخدمة من سنة إلى عشر يأخذ 21 يوما، وإذا كان سنوات الخدمة أكبر من عشرة يأخذ 30 يوما................................ وإذا كان السن أكبر من 50 يأخذ 45 يوماً..

فكيف نضعها فى الكود....

emp11.rar

اللهم لك الحمد كما ينبغى لجلال وجهك وعظيم سلطانك .. لا إله إلا أنت سبحانك أنى كنت من الظالمين

#6

تفضل أخى

Dim rst As Recordset, c, i, y As Integer
Set rst = CurrentDb.OpenRecordset("Emploees")
c = rst.RecordCount
rst.MoveFirst

For i = 1 To c

Select Case DateDiff("yyyy", rst!birth, Date)
Case Is >= 50
   y = 45
Case Else
   Select Case DateDiff("yyyy", rst!date1, Date)
    Case Is <= 1
     y = 15
    Case Is > 1, Is <= 10
    y = 21
    Case Is > 10
    y = 30
   End Select
End Select

CurrentDb.Execute "INSERT INTO T_V_Emp ( [worker],[Yearss] ) values (" & rst![ID_Nm] & " , " & Year(Date) & " );"
CurrentDb.Execute "INSERT INTO T_V_Fund ([Funds],[Funds_New],[Funds_Over],[V_Type],[Emp_Nam],[Yearsss] ) values (" & 0 & " , " & y & " , " & 0 & " , " & 2 & " , " & rst![ID_Nm] & " , " & Year(Date) & " );"
rst.MoveNext
Next

rst.Close
Set rst = Nothing
1

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#7

جزاك الله كل خير أستاذنا أبو يوسف .. لك كل التحية .. زادك الله من علمه وفضله..

معذرة: فى حالة:

Case Is <= 10 Case Is > 1, Is <= 10

y = 21

Case Is > 10

y = 30

لم يستجب شرط 30 يوماً عند اتمام العشر سنوات .. وبحذف الشرط >1 كانت الأمور على ما يرام..

جزاك الله عنى كل خير .....

تم تعديل هذه المشاركة بواسطة omar19-3 في 22 فبراير 2011 في 04:02

اللهم لك الحمد كما ينبغى لجلال وجهك وعظيم سلطانك .. لا إله إلا أنت سبحانك أنى كنت من الظالمين

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