منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
مساعدة في كود VBA لقاعدة بيانات إدارة مشاريع - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم أسئلة واستفسارات الأعضاء - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=94)
+--- قسم : مايكرسوفت أكسيس Microsoft Access (http://vb4arb.com/vb/forumdisplay.php?fid=170)
+--- الموضوع : مساعدة في كود VBA لقاعدة بيانات إدارة مشاريع (/showthread.php?tid=45802)

الصفحات: 1 2


مساعدة في كود VBA لقاعدة بيانات إدارة مشاريع - أحمد عامر - 28-03-23

عندي قاعدة بيانات تحت الإنشاء (غير مكتملة) وأريد كود VBA ليوثق ويحول العملية التالية

الشركة تحتوي على 8 أقسام وكل قسم به أدمن واحد وعدة مستخدمين
والمطلوب:

0. بعد دخول المستخدم يكون معروف لدى البرنامج أنه يتبع أي قسم

1. المستخدم ينشأ طلبية والأدمن من حقه الموافقة أو الرفض عليها مع إبداء الأسباب

2. الأدمن بعد الموافقة عليها يمررها أو يحولها لأي أدمن من الأقسام الأخرى للتعميد عليها

3. بعد التعميد الأخير تذهب لقسم المالية لتحويل قيمة الطلبية وإشعار المستخدم المنشئ الأول للطلبية بأنه تم التحويل ويرفق له ملف التحويل البنكي

4. ملف التحويل البنكي يكون متاح فقط لقسم المالية

5. تتم هذه العمليات بين الأقسام بحيث أي تعديل في المنتصف يكون متبوع باسم المستخدم (موثقة باسم المستخدم سواء مستخدم عادي أو أدمن)

ولا أنسى الشكر والعرفان لأحد الأصدقاء على أحد المنتديات العربية بمساعدتي ولكن بحكم انشغاله لم تكتمل الفكرة

أريد المساعدة من فضلكم ولكم جزيل الشكر والعرفان

الطلبية في الفورم اللي اسمه Outgoing


RE: مساعدة في كود VBA لقاعدة بيانات إدارة مشاريع - sanyor77 - 28-03-23

من الواضح أنك ترغب في إنشاء قاعدة بيانات لإدارة عمليات الشركة. يمكنك استخدام VBA (Visual Basic for Applications) لتحقيق ذلك. سأقدم لك بعض الأفكار والشفرات البرمجية الأساسية لبناء هذا النظام.
أولاً، للتعامل مع الأقسام والمستخدمين والأدمن، يمكنك إنشاء جداول في قاعدة البيانات لحفظ هذه المعلومات. على سبيل المثال، يمكنك إنشاء جداول بالأسماء التالية: Departments, Users و Admins.
بالنسبة للطلبيات، يمكنك إنشاء جدول بالاسم Orders يحتوي على الحقول اللازمة مثل ID الطلب، المستخدم المنشئ، القسم، الحالة (مثلاً مقدمة، معتمدة، مرفوضة)، الأدمن الموافق أو المرفض، الأسباب وغيرها من الحقول الضرورية.
يمكنك بناء نموذج (Form) بالاسم Outgoing لإدخال وعرض تفاصيل الطلبيات. يمكن استخدام الأكواد البرمجية التالية كأساس لما تريد تحقيقه:
  1. قم بإنشاء دالة للتحقق من القسم الذي ينتمي إليه المستخدم:
 


PHP كود :
Function GetUserDepartment(ByVal userID As String) As String
    
' استعلم قاعدة البيانات للحصول على معلومات القسم
    ' 
يمكنك استخدام ADO أو DAO للتواصل مع قاعدة البيانات
End 
Function 



  1. 2.عند إنشاء طلبية جديدة:Sub CreateOrder()    ' قم بإنشاء سجل جديد في جدول الطلبيات    ' حدد الحالة كـ "مقدمة"    ' قم بحفظ البيانات في قاعدة البياناتEnd Sub
  1. 3.عند تعميد الطلبية من قبل الأدمن:
PHP كود :
Sub ApproveOrder(ByVal orderID As StringByVal adminID As String)
 
   ' قم بتحديث حالة الطلبية إلى "معتمدة"
    ' 
قم بتعيين الأدمن الموافق وسبب الموافقة
    
' قم بحفظ التغييرات في قاعدة البيانات
End Sub 


  1. 4.عند رفض الطلبية من قبل الأدمن:

PHP كود :
Sub RejectOrder(ByVal orderID As StringByVal adminID As StringByVal rejectionReason As String)
 
   ' قم بتحديث حالة الطلبية إلى "مرفوضة"
    ' 
قم بتعيين الأدمن المرفض وسبب الرفض
    
' قم بحفظ التغييرات في قاعدة البيانات
End Sub 


  1. 5.عند تحويل الطلبية إلى قسم المالية:

PHP كود :
Sub TransferOrderToFinance(ByVal orderID As String)
 
   ' قم بتحديث حالة الطلبية إلى "قيد التحويل"
    ' 
قم بحفظ التغييرات في قاعدة البيانات
End Sub 

  1. 6.عند تأكيد التحويل البنكي من قبل قسم المالية:
PHP كود :
Sub ConfirmBankTransfer(ByVal orderID As StringByVal bankTransferFile As String)
 
   ' قم بتحديث حالة الطلبية إلى "تم التحويل"
    ' 
قم بإضافة ملف التحويل البنكي إلى قاعدة البيانات أو حفظ رابط الملف
    
' قم بحفظ التغييرات في قاعدة البيانات
End Sub 


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

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

أيضاً، قد يكون من الجيد إضافة تسجيل التغييرات (Logging) لتتبع التعديلات على الطلبيات وتوثيقها. يمكنك إنشاء جدول جديد في قاعدة البيانات يسمى OrderHistory يحتوي على حقول مثل: ID الطلب، المستخدم، التاريخ والوقت، الإجراء (مثلاً إنشاء، تعديل، موافقة، رفض، تحويل) وتفاصيل الإجراء.
يمكنك إضافة دالة لتسجيل التغييرات مثل:
 

PHP كود :
Sub LogOrderChange(ByVal orderID As StringByVal userID As StringByVal action As StringByVal actionDetails As String)
 
   ' قم بإنشاء سجل جديد في جدول OrderHistory
    ' 
قم بإضافة تفاصيل التغييرات المطلوبة
    
' قم بحفظ التغييرات في قاعدة البيانات
End Sub 



ثم يمكن استدعاء هذه الدالة في جميع الوظائف الأخرى (مثل CreateOrder، ApproveOrder، RejectOrder، TransferOrderToFinance، ConfirmBankTransfer) لتوثيق جميع التغييرات التي تحدث على الطلبيات.
يُفضل أن تستخدم مكتبة مثل ADO أو DAO للاتصال بقاعدة البيانات وتنفيذ الاستعلامات. تأكد من إجراء الاختبارات المناسبة وتنظيم الشفرة البرمجية بشكل جيد لضمان الحصول على نظام قوي وموثوق.
 


تخصيص هذه الأفكار والشفرات البرمجية الأساسية لتلبية احتياجات عملك الخاصة. لضمان أداء النظام الجيد والأمان، يمكنك اتباع بعض النصائح العامة:

  1. التأكد من تنظيم الشفرة البرمجية بشكل جيد وإعطاء تعليقات واضحة عند الحاجة لتسهيل الفهم والصيانة في المستقبل.
  2. إجراء التحقق من الإدخالات والتحقق من الصلاحيات في جميع مراحل العملية لتجنب إدخال بيانات غير صحيحة أو الوصول إلى المعلومات بشكل غير مصرح به.
  3. استخدام ميزات أمان VBA مثل تعطيل التنفيذ التلقائي للماكرو (Macro Auto Execution) وتمكين حماية المشروع بكلمة مرور للحيلولة دون الوصول إلى الشفرة البرمجية بسهولة.
  4. إجراء اختبارات مكثفة على النظام للتأكد من أنه يعمل بشكل صحيح وفقًا لمتطلبات العمل وتحديد الأخطاء وإصلاحها قبل تطبيقه على مستوى الشركة.
  5. توفير التدريب والدعم للمستخدمين والأدمن لضمان استخدام النظام بشكل صحيح وفعال.
باتباع هذه الإرشادات وتخصيص الشفرات البرمجية المقدمة حسب احتياجاتك، يجب أن تتمكن من إنشاء نظام قوي وموثوق لإدارة عمليات الطلبيات والتحويلات البنكية في شركتك. لا تتردد في طرح المزيد من الأسئلة إذا كنت بحاجة إلى مزيد من التوضيح أو المساعدة في تطبيق هذا النظام.



RE: مساعدة في كود VBA لقاعدة بيانات إدارة مشاريع - أحمد عامر - 28-03-23

المشكلة لقلة خبرتي بكود VBA لا أستطيع عمله .. نرجو المساعدة


RE: مساعدة في كود VBA لقاعدة بيانات إدارة مشاريع - sanyor77 - 28-03-23

لا توجد مشكلة! سأقدم لك مزيد من المساعدة في كتابة الأكواد البرمجية بلغة VBA للوظائف المطلوبة. أولاً، دعونا نراجع ما تحتاجه:
  1. تحديد قسم المستخدم بعد تسجيل الدخول.
  2. السماح للمستخدم بإنشاء طلبية والموافقة أو الرفض من قبل الأدمن مع إبداء الأسباب.
  3. تحويل الطلبية بين الأدمن للتعميد.
  4. إرسال الطلبية المعتمدة إلى قسم المالية للتحويل وإشعار المستخدم برفق ملف التحويل البنكي.
  5. حفظ الملف التحويل البنكي للوصول الحصري لقسم المالية.
  6. تتبع التعديلات بأسماء المستخدمين (المستخدمين العاديين والأدمن).
تحتاج أولاً إلى إعداد متغير عام لقسم المستخدم المسجل دخوله. يمكنك وضع الكود التالي في الوحدة النمطية العامة (على سبيل المثال، Module1):
 


يرجى مراعاة أن هذا الكود لا يحتوي على أي تنفيذات داخل الوظائف والإجراءات. لإكمال الكود، ستحتاج إلى إضافة التفاصيل الخاصة بك، مثل الاتصال بقاعدة البيانات وإجراء الاستعلامات المناسبة لتحقيق الوظائف المطلوبة.

حسنًا، سأوضح كيفية إضافة تنفيذات داخل الوظائف والإجراءات. سأستخدم ADO (ActiveX Data Objects) كطريقة للاتصال بقاعدة البيانات.
أولاً، تأكد من إضافة مرجع إلى "Microsoft ActiveX Data Objects" من خلال "Tools" > "References" في محرر VBA.
ثم قم بإضافة الكود التالي لتعريف الوظيفة GetUserDepartment:
 

PHP كود :
Function GetUserDepartment(ByVal userID As String) As String
    Dim conn 
As ADODB.Connection
    Dim rs 
As ADODB.Recordset
    Dim strSQL 
As String

    Set conn 
= New ADODB.Connection
    conn
.Open "Your_Connection_String"

 
   Set rs = New ADODB.Recordset
    strSQL 
"SELECT Department FROM Users WHERE UserID = '" userID "'"
 
   rs.Open strSQLconnadOpenStaticadLockReadOnly

    If Not rs
.EOF Then
        GetUserDepartment 
rs.Fields("Department").Value
    End 
If

 
   rs.Close
    conn
.Close
End 
Function 


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


RE: مساعدة في كود VBA لقاعدة بيانات إدارة مشاريع - أحمد عامر - 28-03-23

وما هي "Your_Connection_String" سلسلة الاتصال الخاصة بقاعدة البيانات.


RE: مساعدة في كود VBA لقاعدة بيانات إدارة مشاريع - أحمد عامر - 29-03-23

أول جزء وهو ال module تم عدا الجزئية الخاصة بالConnection


RE: مساعدة في كود VBA لقاعدة بيانات إدارة مشاريع - sanyor77 - 29-03-23

(28-03-23, 09:28 PM)أحمد عامر كتب : وما هي "Your_Connection_String" سلسلة الاتصال الخاصة بقاعدة البيانات.

"Your_Connection_String" هو سلسلة الاتصال الخاصة بقاعدة البيانات التي تحتوي على معلومات تتعلق بالإتصال بقاعدة البيانات، مثل اسم السيرفر، اسم القاعدة، اسم المستخدم وكلمة المرور.
دالة GetUserDepartment تستلم كلمة المرور userID كمدخل وتعود بقسم المستخدم المرتبط بهذا المعرف.
كل شيء على الأخص، الدالة تفتح اتصال بقاعدة البيانات عن طريق استخدام سلسلة الاتصال المحددة وتنفذ استعلام SQL للحصول على بيانات المستخدم وذلك عن طريق استخدام عنصر ADODB.Recordset. عندما يتم العثور على بيانات، يتم تعيين قيمة القسم للمستخدم الذي يتم البحث عنه إلى المتغير الذي يعود به الدالة.


RE: مساعدة في كود VBA لقاعدة بيانات إدارة مشاريع - أحمد عامر - 29-03-23

يعني سلسلة الاتصال في قاعدة بياناتي هي
Userid

صحيح كده


RE: مساعدة في كود VBA لقاعدة بيانات إدارة مشاريع - Taha Okla - 29-03-23

(29-03-23, 05:39 PM)أحمد عامر كتب : يعني سلسلة الاتصال في قاعدة بياناتي هي
Userid

صحيح كده


أمثلة عن سلسلة الاتصال : 
1 - قاعدة بيانات آكسس الاصدار 12.0 بدون كلمة المرور (باسوورد) : 
كود :
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Persist Security Info=False;

2 - قاعدة بيانات آكسس الاصدار 12.0 مع كلمة المرور (باسوورد(MyDbPassword  أكتب كلمة المرور مكانها إن كانت موجودة)) : 
كود :
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Jet OLEDB:Database Password=MyDbPassword;

3 - إذا كانت من إصدار قديم مثلاً 2003 وما قبل :
كود :
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;Password=;

4 - قاعدة البيانات في مسار المشروع نفسه (لانكتب مسارها بل نكتبها هكذا) :
كود :
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\myAccessFile.mdb;Persist Security Info=False;

أو هكذا :
كود :
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=myAccessFile.accdb;Persist Security Info=False;



هذه السلاسل تكتبها مكان (Your_Connection_String)
مع تعديل ما يناسبها من مسار قاعدة البيانات أو كلمة المرور ..



وهكذا  ...


RE: مساعدة في كود VBA لقاعدة بيانات إدارة مشاريع - sanyor77 - 29-03-23

(29-03-23, 05:39 PM)أحمد عامر كتب : يعني سلسلة الاتصال في قاعدة بياناتي هي
Userid

صحيح كده


لا، سلسلة الاتصال في قاعدة البيانات هي المعلومات اللازمة للاتصال بقاعدة البيانات، بما في ذلك عنوان الخادم، اسم قاعدة البيانات، اسم المستخدم وكلمة المرور. "UserID" هو عبارة عن حقل يوجد ضمن جدول في قاعدة البيانات ويستخدم لتعريف المستخدمين.