لربط الجدولين ببعض في قاعدة البيانات الخاصة ببرنامج سلف الموظفين، يمكنك استخدام العلاقات بين الجداول (Relations) باستخدام المفتاح الأساسي (Primary Key) و المفتاح الأجنبي (Foreign Key). في حالتك، سيحتوي جدول "السلف" على المفتاح الأجنبي الذي يربط كل سجل سلفة بسجل الموظف في جدول "الموظفين".
هيكل الجدولين:
جدول الموظفين (Employees)
EmployeeID (مفتاح أساسي)
EmployeeName
JobType
Notes
جدول السلف (Loans)
LoanID (مفتاح أساسي)
EmployeeID (مفتاح أجنبي، يشير إلى EmployeeID في جدول "الموظفين")
LoanAmount
LoanDate
كيفية ربط الجدولين:
في جدول "السلف"، تقوم بإنشاء حقل EmployeeID ليكون مفتاحًا أجنبيًا يرتبط بحقل EmployeeID في جدول "الموظفين".
تأكد من أن العلاقة بين الجدولين هي علاقة واحدة إلى متعدد (One-to-Many)، حيث يمكن أن يكون لكل موظف عدة سلف، لكن كل سلفة تتعلق بموظف واحد فقط.
استعلامات SQL:
1. إنشاء الجداول:
2. استعلام لحساب مجموع السلف لشهر معين:
لتستعلم عن مجموع السلف التي أخذها موظف معين في نهاية الشهر، يمكنك استخدام الاستعلام التالي:
شرح الكود:
الاتصال بقاعدة البيانات: يتم فتح الاتصال باستخدام SqlConnection مع سلسلة الاتصال المناسبة.
الاستعلام: الاستعلام يقوم بحساب إجمالي السلف (SUM(L.LoanAmount)) للموظف في الشهر المحدد (@Month) والسنة المحددة (@Year).
المعلمات: يتم إضافة المعلمات (اسم الموظف، الشهر، السنة) باستخدام cmd.Parameters.AddWithValue.
جلب البيانات: يتم استخدام SqlDataAdapter لتحميل البيانات في DataTable.
عرض النتيجة: يتم عرض النتيجة باستخدام MessageBox، حيث يظهر إجمالي السلف وتواريخ السلف.
3. كيفية استخدام الكود:
لتنفيذ هذا الكود واستدعاء الوظيفة، يمكنك استخدام التالي في البرنامج:
"اسم الموظف": اسم الموظف الذي ترغب في الاستعلام عنه.
1: الشهر الذي تريد الاستعلام عنه (مثال: يناير).
2025: السنة التي تريد الاستعلام عنها.
ملاحظات:
تأكد من استبدال "your_connection_string_here" بسلسلة الاتصال الخاصة بك بقاعدة البيانات.
تأكد من أن الجداول تحتوي على بيانات صحيحة وأن الموظف الذي يتم الاستعلام عنه موجود في قاعدة البيانات.
هيكل الجدولين:
جدول الموظفين (Employees)
EmployeeID (مفتاح أساسي)
EmployeeName
JobType
Notes
جدول السلف (Loans)
LoanID (مفتاح أساسي)
EmployeeID (مفتاح أجنبي، يشير إلى EmployeeID في جدول "الموظفين")
LoanAmount
LoanDate
كيفية ربط الجدولين:
في جدول "السلف"، تقوم بإنشاء حقل EmployeeID ليكون مفتاحًا أجنبيًا يرتبط بحقل EmployeeID في جدول "الموظفين".
تأكد من أن العلاقة بين الجدولين هي علاقة واحدة إلى متعدد (One-to-Many)، حيث يمكن أن يكون لكل موظف عدة سلف، لكن كل سلفة تتعلق بموظف واحد فقط.
استعلامات SQL:
1. إنشاء الجداول:
PHP كود :
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
EmployeeName VARCHAR(100),
JobType VARCHAR(50),
Notes TEXT
);
CREATE TABLE Loans (
LoanID INT PRIMARY KEY,
EmployeeID INT,
LoanAmount DECIMAL(10, 2),
LoanDate DATE,
FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
);
2. استعلام لحساب مجموع السلف لشهر معين:
لتستعلم عن مجموع السلف التي أخذها موظف معين في نهاية الشهر، يمكنك استخدام الاستعلام التالي:
PHP كود :
Public Sub GetEmployeeLoanSummary(employeeName As String, month As Integer, year As Integer)
' الاتصال بقاعدة البيانات
Dim connectionString As String = "your_connection_string_here"
Dim query As String = "SELECT E.EmployeeName, SUM(L.LoanAmount) AS TotalLoans, GROUP_CONCAT(L.LoanDate) AS LoanDates " & _
"FROM Employees E " & _
"INNER JOIN Loans L ON E.EmployeeID = L.EmployeeID " & _
"WHERE E.EmployeeName = @EmployeeName AND MONTH(L.LoanDate) = @Month AND YEAR(L.LoanDate) = @Year " & _
"GROUP BY E.EmployeeName"
Using conn As New SqlConnection(connectionString)
Using cmd As New SqlCommand(query, conn)
' إضافة المعلمات
cmd.Parameters.AddWithValue("@EmployeeName", employeeName)
cmd.Parameters.AddWithValue("@Month", month)
cmd.Parameters.AddWithValue("@Year", year)
' ملء DataTable بالنتائج
Dim dt As New DataTable()
Using da As New SqlDataAdapter(cmd)
da.Fill(dt)
End Using
' التحقق من وجود نتائج
If dt.Rows.Count > 0 Then
Dim totalLoans As String = dt.Rows(0)("TotalLoans").ToString()
Dim loanDates As String = dt.Rows(0)("LoanDates").ToString()
' عرض النتيجة في MessageBox
MessageBox.Show("Total Loans: " & totalLoans & vbCrLf & "Loan Dates: " & loanDates, "Loan Summary", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
' عرض رسالة إذا لم توجد سلف للموظف في الشهر المحدد
MessageBox.Show("No loans found for this employee in the selected month.", "No Data", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Using
End Using
End Sub
شرح الكود:
الاتصال بقاعدة البيانات: يتم فتح الاتصال باستخدام SqlConnection مع سلسلة الاتصال المناسبة.
الاستعلام: الاستعلام يقوم بحساب إجمالي السلف (SUM(L.LoanAmount)) للموظف في الشهر المحدد (@Month) والسنة المحددة (@Year).
المعلمات: يتم إضافة المعلمات (اسم الموظف، الشهر، السنة) باستخدام cmd.Parameters.AddWithValue.
جلب البيانات: يتم استخدام SqlDataAdapter لتحميل البيانات في DataTable.
عرض النتيجة: يتم عرض النتيجة باستخدام MessageBox، حيث يظهر إجمالي السلف وتواريخ السلف.
3. كيفية استخدام الكود:
لتنفيذ هذا الكود واستدعاء الوظيفة، يمكنك استخدام التالي في البرنامج:
PHP كود :
' استدعاء الوظيفة عند طلب استعلام الموظف
GetEmployeeLoanSummary("اسم الموظف", 1, 2025)
"اسم الموظف": اسم الموظف الذي ترغب في الاستعلام عنه.
1: الشهر الذي تريد الاستعلام عنه (مثال: يناير).
2025: السنة التي تريد الاستعلام عنها.
ملاحظات:
تأكد من استبدال "your_connection_string_here" بسلسلة الاتصال الخاصة بك بقاعدة البيانات.
تأكد من أن الجداول تحتوي على بيانات صحيحة وأن الموظف الذي يتم الاستعلام عنه موجود في قاعدة البيانات.
