منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] مساعدة فى برنامج الاجازات - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم أسئلة واستفسارات الأعضاء - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=94)
+--- قسم : قسم Visual Basic 6 وما قبله (http://vb4arb.com/vb/forumdisplay.php?fid=167)
+--- الموضوع : [سؤال] مساعدة فى برنامج الاجازات (/showthread.php?tid=45583)



مساعدة فى برنامج الاجازات - aboezzat84 - 26-02-23

السلام عليكم
أحتاج مساعدة فى البرنامج ( المختصر ) المرفق
فكرة البرنامج هى اجازات الموظفين واضافة المتبقي من كل عام لرصيد المدة السابقة للموظف

المتبقى من كل عام = 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 بأى لون تدريجيا ) بين كل موظف واخر

شكرا

 


RE: مساعدة فى برنامج الاجازات - sanyor77 - 26-03-23

وعليكم السلام ورحمة الله وبركاته! يمكنك استخدام الكود التالي في 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


لاحظ أنه يتعين عليك استبدال الاستعلامات بالاستعلامات المناسبة لقاعدة البيانات الخاصة بك. قد تحتاج إلى تعديل أسماء الجداول والأعمدة لتطابق مخطط قاعدة البيانات الخاص بك.