الخطوة التالية هي كتابة الكود اللازم لتنفيذ الوظائف التي وصفتها في البداية، مثل تحديد قسم المستخدم، السماح للمستخدم بإنشاء طلبية والموافقة أو الرفض من قبل الأدمن مع إبداء الأسباب، تحويل الطلبية بين الأدمن للتعميد، وغيرها من الوظائف. يمكنك استخدام الأكواد المذكورة في إجابتي السابقة كنقطة انطلاق لتنفيذ الوظائف الأساسية، وتعديلها وفقًا لمتطلبات نظامك الخاص. قم بتعديل الاستعلامات وأسماء الجداول والحقول وفقًا لتصميم قاعدة البيانات الخاصة بك. إذا كان لديك أي أسئلة أو استفسارات، فلا تتردد في طرحها. سأكون سعيدًا لمساعدتك في أي شيء. بالتأكيد، سأكون سعيدًا بمساعدتك في كتابة الكود. ولكن يجب أولاً تحديد الوظيفة الدقيقة التي ترغب في إنشائها في VBA لمساعدتي في إنشاء الكود الصحيح. هل لديك وظيفة محددة ترغب في إنشائها؟
30-03-23, 03:48 PM (آخر تعديل لهذه المشاركة : 30-03-23, 03:56 PM {2} بواسطة أحمد عامر.)
تحديد قسم المستخدم، السماح للمستخدم بإنشاء طلبية والموافقة أو الرفض من قبل الأدمن مع إبداء الأسباب، تحويل الطلبية بين الأدمن للتعميد، وغيرها من الوظائف.
الخطوة الأولى: تحديد قسم المستخدم يمكن استخدام دالة GetUserDepartment لتحديد القسم الخاص بالمستخدم، كما هو موضح في الكود التالي:
PHP كود :
Public Function GetUserDepartment(userID As Integer) As String Dim rs As New ADODB.Recordset rs.Open "SELECT Department FROM Users WHERE UserID=" & userID, Your_Connection_String, adOpenStatic, adLockOptimistic
If rs.EOF Then GetUserDepartment = "Unknown" Else GetUserDepartment = rs.Fields("Department").Value End If rs.Close End Function
الخطوة الثانية: السماح للمستخدم بإنشاء طلبية والموافقة أو الرفض من قبل الأدمن مع إبداء الأسباب يمكن استخدام نموذج الطلبيات والأكواد التالية لتمكين المستخدم من إنشاء طلبية والأدمن من الموافقة أو الرفض وإضافة تفاصيل الرد في حقل "Reason": نموذج الطلبيات:
Public Sub CreateOrder(department As String, amount As Currency) Dim strSQL As String strSQL = "INSERT INTO Orders (Department, CreatedBy, CreatedOn, Status, Amount) VALUES ('" & department & "', " & CurrentUser.UserID & ", Now(), 'Pending', " & amount & ")" CurrentDb.Execute strSQL End Sub
الكود للموافقة على الطلبية:
PHP كود :
Public Sub ApproveOrder(OrderID As Integer, AdminName As String, Reason As String) ' تحديث حالة الأوردر إلى "معتمد" وإضافة اسم الأدمن المعمد والسبب Dim strSQL As String strSQL = "UPDATE Orders SET Status='Approved', ApprovedBy='" & AdminName & "', ApprovedOn=Now(), Reason='" & Reason & "' WHERE OrderID=" & OrderID CurrentDb.Execute strSQL End Sub
الكود للرفض على الطلبية:
PHP كود :
Public Sub RejectOrder(OrderID As Integer, AdminName As String, Reason As String) ' تحديث حالة الأوردر إلى "مرفوض" وإضافة اسم الأدمن المرفوض والسبب Dim strSQL As String strSQL = "UPDATE Orders SET Status='Rejected',
هذه الخطوات هي الأساسية التي يجب اتباعها لتنفيذ مثل هذا النظام. بالطبع، يمكن تعديلها وتخصيصها وفقًا لمتطلبات نظامك الخاص. إذا كان لديك أي أسئلة أو استفسارات، فلا تتردد في طرحها. سأكون سعيدًا لمساعدتك في أي شيء آخر.
30-03-23, 09:10 PM (آخر تعديل لهذه المشاركة : 30-03-23, 09:38 PM {2} بواسطة أحمد عامر.)
أين أكتب كل كود من هذا
هل في خانة AfterUpdate لزر معين ولا في خانة Onload للنموذج ولا في نفس الموديول اللي أنشأته من قبل ولا وين
هناك بعض من الخانات في جدول الأورد مثل اسم العميل - رقم الفيلا - الحي - المورد - ... إلخ
يمكنك كتابة هذه الأكواد في وحدة VBA في نموذج الأوردر، أو في وحدة VBA مستقلة في نفس قاعدة البيانات. لإضافة حقول إضافية في الأكواد، يجب استخدام اسم الحقل الصحيح وتضمينه في الاستعلامات SQL المستخدمة في الأكواد. يمكنك استخدام خانة AfterUpdate للزر المعين لتحديث قيم الحقول بعد تغييرها، ويمكنك استخدام خانة OnLoad لنموذج الأوردر لتحميل البيانات الأساسية المطلوبة وتعيينها في الحقول. يمكنك إضافة الحقول الإضافية إلى جملة SQL التي تنشئ الأوردر في الخطوة الأولى من الكود. على سبيل المثال، يمكنك إضافة الحقل "CustomerName" باستخدام الكود التالي:
strSQL = "INSERT INTO Orders (CustomerName, OrderDate, TotalAmount, Status) VALUES ('" & CustomerName & "', #" & OrderDate & "#, " & TotalAmount & ", 'Pending')" حيث أن "CustomerName" هو اسم الحقل في جدول الأوردر، ويتم استخدام الاقتباسات المزدوجة لتحديد القيمة التي يتم إدخالها في الحقل. يمكنك القيام بنفس الطريقة لإضافة الحقول الأخرى إلى جملة SQL الخاصة بالأوردر. يجب أن يتم تغيير اسم الحقل ونوع القيمة وفقًا لتصميم جدول الأوردر الخاص بك.
1- لتحديد قسم المستخدم:
PHP كود :
Public Function GetUserDepartment(userID As Integer) As String ' تحديد القسم الذي يتبعه المستخدم المعين باستخدام معرف المستخدم Dim rs As New ADODB.Recordset rs.Open "SELECT Departments.DepartmentName FROM Departments INNER JOIN Users ON Departments.DepartmentID = Users.DepartmentID WHERE Users.UserID=" & userID, Your_Connection_String, adOpenStatic, adLockReadOnly
If Not rs.EOF Then GetUserDepartment = rs.Fields(0).Value Else GetUserDepartment = "" End If rs.Close End Function
2- لإنشاء طلبية والموافقة أو الرفض من قبل الأدمن مع إبداء الأسباب:
PHP كود :
Public Sub CreateOrder(CustomerName As String, VillaNumber As Integer, District As String, Supplier As String, Amount As Double, Reason As String) ' إنشاء طلبية جديدة في جدول الأوردرز Dim strSQL As String strSQL = "INSERT INTO Orders (CustomerName, VillaNumber, District, Supplier, Amount, Reason, Status) VALUES ('" & CustomerName & "', " & VillaNumber & ", '" & District & "', '" & Supplier & "', " & Amount & ", '" & Reason & "', 'Pending')" CurrentDb.Execute strSQL End Sub
Public Sub ApproveOrder(OrderID As Integer, AdminName As String, Reason As String) ' تحديث حالة الأوردر إلى "معتمد" وإضافة اسم الأدمن المعمد والسبب Dim strSQL As String strSQL = "UPDATE Orders SET Status='Approved', ApprovedBy='" & AdminName & "', ApprovalReason='" & Reason & "' WHERE OrderID=" & OrderID CurrentDb.Execute strSQL End Sub
Public Sub RejectOrder(OrderID As Integer, AdminName As String, Reason As String) ' تحديث حالة الأوردر إلى "مرفوض" وإضافة اسم الأدمن المرفوض والسبب Dim strSQL As String strSQL = "UPDATE Orders SET Status='Rejected', RejectedBy='" & AdminName & "', RejectionReason='" & Reason & "' WHERE OrderID=" & OrderID CurrentDb.Execute strSQL End Sub
3- لتحويل الطلبية بين الأدمن للتعميد:
PHP كود :
Public Function TransferOrder(orderID As Integer, newAdminID As Integer, transferReason As String) As Boolean ' التحقق مما إذا كان المستخدم الحالي هو أدمن أم لا If Not IsAdmin(CurrentUser.UserID) Then MsgBox "Only admins can transfer orders." Exit Function End If
' التحقق مما إذا كانت الطلبية موجودة ولم يتم المواف
31-03-23, 03:36 AM (آخر تعديل لهذه المشاركة : 31-03-23, 04:54 AM {2} بواسطة أحمد عامر.)
هلا
بالنسة ل
1- لتحديد قسم المستخدم:
2- لإنشاء طلبية والموافقة أو الرفض من قبل الأدمن مع إبداء الأسباب:
3- لتحويل الطلبية بين الأدمن للتعميد:
أين أضع الكود هل على زر أم على AferUpdate للفورم أم ماذا
ياريت توضيح أكتر لأن الأمر غير واضح بالنسبة لي ... معلش بتعب حضرتك معايا
وبالنسبة ل Your_Connection_String أضع بقى اسم قاعدة البيانات "الملف نفسه وليكن Ahmed.accdb ولا أضع كلمة myAccessFile.accdb
كذلك أريد أن أخفي زر "التعميد" عن باقي اليوزر ويبقى ظاهر للأدمنز فقط ومتاح زر "التحويل إلى قسم كا" للأدمنز واليوزرز
كذلك "هل شاشة الدخول هتكون واحدة لليوزرز والأدمنز وكيف أربط بينهم لو شاشة الدخول واحدة.
ياريت بعد إذنك تبقى توضحلي أين أضع الأكود عشان أحاول أفهم برده الآلية وأنا شغال
ومرفق لحضراتكم صور لنموذج الأوردر وكذلك صور للجداول والعلاقات المستخدمة