السلام عليكم
أحتاج مساعدة فى البرنامج ( المختصر ) المرفق
فكرة البرنامج هى اجازات الموظفين واضافة المتبقي من كل عام لرصيد المدة السابقة للموظف
المتبقى من كل عام = Vac_Year_ERemain فى جدول T_Vac_Year
رصيد المدة السابقة = Vac_Rasid_Count فى جدول T_Employee
احاول فى الشاشة المرفقة
1- اختيار العام من خلال DataCombo1
2- على أساس العام يتم حساب أجمالي عدد الموظفين لهذا العام (Count_Vac_Year )
3- اظهار المتبقي من الاجازات لكل موظف على حدة (Get_Emp_Vac_Year_E ) وربطهم مع text1 , text2 , .... , text5 فى الشاشة
المطلوب :
تلقائيا من خلال loop ( أو أى طريقة أخرى ) تنفيذ الآتي :
اضافة المتبقي من رصيد العام لرصيد المدة السابقة مع فاصل زمنى 5 ثوانى ( ملئ Picture2 بأى لون تدريجيا ) بين كل موظف واخر
شكرا
وعليكم السلام ورحمة الله وبركاته! يمكنك استخدام الكود التالي في Visual Basic لتنفيذ ما طلبت:
كود :
Option Explicit
Private Sub UpdateVacationBalances()
Dim EmpCount As Integer
Dim EmpID As Long
Dim EmpVacRemaining As Single
Dim i As Integer
Dim j As Integer
Dim YearSelected As Integer
' 1- اختيار العام من خلال DataCombo1
YearSelected = DataCombo1.Text
' 2- على أساس العام يتم حساب أجمالي عدد الموظفين لهذا العام (Count_Vac_Year)
EmpCount = GetEmployeeCountForYear(YearSelected)
For i = 1 To EmpCount
' 3- اظهار المتبقي من الاجازات لكل موظف على حدة (Get_Emp_Vac_Year_E)
EmpID = GetEmployeeID(i)
EmpVacRemaining = GetEmpVacYearE(YearSelected, EmpID)
' ربط المتبقي مع text1, text2, ..., text5 في الشاشة
Controls("text" & i).Text = EmpVacRemaining
' اضافة المتبقي من رصيد العام لرصيد المدة السابقة
UpdateVacationBalance(EmpID, EmpVacRemaining)
' ملئ Picture2 بأي لون تدريجيا
For j = 0 To 100
Picture2.FillColor = RGB(255 * j / 100, 0, 0)
Picture2.FillPercent = j
DoEvents
Sleep 50
Next j
' فاصل زمني 5 ثواني بين كل موظف واخر
Sleep 5000
Next i
End Sub
' استبدل هذه الوظائف بتلك المتصلة بقاعدة البيانات الخاصة بك
Private Function GetEmployeeCountForYear(YearSelected As Integer) As Integer
' هنا يجب عليك استخدام استعلام SQL للحصول على عدد الموظفين للعام المحدد
' كود مثال:
' SELECT COUNT(*) FROM T_Employee WHERE [Year] = YearSelected
End Function
Private Function GetEmployeeID(Index As Integer) As Long
' هنا يجب عليك استخدام استعلام SQL للحصول على معرف الموظف بناءً على الفهرس
' كود مثال:
' SELECT [Emp_ID] FROM T_Employee ORDER BY [Emp_ID] OFFSET (Index - 1) ROWS FETCH NEXT 1 ROWS ONLY
End Function
Private Function GetEmpVacYearE(YearSelected As Integer, EmpID As Long) As Single
' هنا يجب عليك استخدام استعلام SQL للحصول على المتبقي من الاجازات لموظف معين في العام المحدد
' كود مثال:
' SELECT [Vac_Year_ERemain] FROM T_Vac_Year WHERE [Year] = YearSelected AND [Emp_ID] = EmpID
End Function
Private Sub UpdateVacationBalance(EmpID As Long, EmpVacRemaining As Single)
' هنا يجب عليك استخدام استعلام SQL لتحديث رصيد المدة السابقة للموظف
' كود مثال:
' UPDATE T_Employee SET [Vac_Rasid_Count] = [Vac_Rasid_Count] + EmpVacRemaining WHERE [Emp_ID] = EmpID
End Sub
لاحظ أنه يتعين عليك استبدال الاستعلامات بالاستعلامات المناسبة لقاعدة البيانات الخاصة بك. قد تحتاج إلى تعديل أسماء الجداول والأعمدة لتطابق مخطط قاعدة البيانات الخاص بك.