بتـــــاريخ : 2/14/2011 9:50:57 PM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 1968 0


    آكسس على الشبكة درس وشرح

    الناقل : elmasry | العمر :42 | الكاتب الأصلى : أحمد الحربي | المصدر : www.arabteam2000-forum.com

    كلمات مفتاحية  :
    آكسس الشبكة درس شرح

    آكسس على الشبكة ـ درس :

    --------------

    تهيئة قاعدة بيانات آكسس للعمل على الشبكة :

    تنبيه : قبل أن تقوم بعمل أي شيء قم أولاً بأخذ نسخة احتياطية أو نسختين واجعلها في مأمن حتى لا تفقد عملك وجهدك .

    ** تقسيم قاعدة البيانات :

    سنقوم بتقسيم قاعدة البيانات والتي أسميناها MyProg.MDB إلى قسمين :
    - الواجهات FrontEnd: وفيها (الاستعلامات ، النماذج ، التقارير ، الماكرو ، الوحدات النمطية ، الصفحات)
    - الداتاBackEnd : وفيها فقط (الجداول)

    من قائمة أدوات اختر (أدوات مساعدة لقواعد البيانات) ثم اختر (تقسيم قاعدة البيانات) .. سيقوم آكسس بتقسيم القاعدة إلى ملفين وسيجعل ملف الداتا باسم البرنامج مضافاً إليه الحرفين be .. ليصبح الاسم MyProg_be.MDB

    - من قائمة (أدوات) ثم (خيارات) ثم (خيارات متقدمة) تأكد من (وضع الفتح الافتراضي) على (مشترك) .

    ** إنشاء ملف الحماية/الصلاحيات للقاعدة :

    في الدليل : \Program Files\Microsoft Office\Office
    ستجد الملف MS Access Workgroup Administrator
    - افتح الملف وانقر زر إنشاء (Creat) لإنشاء نسخة منه لتخصيصها لبرنامجنا .. أدخل البيانات(اسم المالك(لملف الحماية) ، واسم الشركة ، ورقم WID) واحتفظ بهذه المعلومات لكي تعيد إنشاؤه مرة أخرى فيما لو فقدته .. لأنك حين تربط القاعدة بملف MDW لا يمكن فتحها إلا بوجوده .
    - انقر OK ثم اختر موقع الملف .. غير الاسم الافتراضي SYSTEM.MDW واختر اسماً مناسباً لبرنامجك مثلاً MYPrgramSYSTEM.MDW .. ثم انقر OK ثم OK لتأكيد المعلومات .. إذا نجحت العملية ستخرج رسالة بنجاح إنشاء ملف MDW .. ثم انقر خروج Exit .

    == ربط الملف MYPrgramSYSTEM.MDW بالقاعدة لجعل صلاحيات الدخول للقاعدة من خلاله فقط :

    افتح الملف MYPrgramSYSTEM.MDW ثم من قائمة (ملف) اختر (فتح) .. ثم اختر القاعدة MyProg.MDB لفتحها .. بهذا تم ربط القاعدة بملف الحماية .
    لتتأكد من أن القاعدة مربوطة بملف الحماية الذي أنشأناه قبل قليل وهو MYPrgramSYSTEM.MDW أم لا زالت مربوطة بملف الحماية الافتراضي في آكسس SYSTEM.MDW قم بتنفيذ هذا الكود :

    MsgBox SysCmd(acSysCmdGetWorkgroupFile)


    وانظر إلى الرسالة ، فستظهر ملف حماية القاعدة

    - الآن ضع القاعدة الداتا BackEnd وملف الحماية MDW في مجلد في السيرفر .. وأعط صلاحية كاملة للمستخدمين على المجلد .

    - والآن مرة أخرى للوصول إلى القاعدة في السيرفر من خلال الواجهات FrontEnd لابد من الجمع بين القاعدة لدى المستخدمين (الواجهات) وملف الحماية الذي في السيرفر في اختصار على سطح المكتب بالطريقة التالية :
    أنشأ اختصاراً على سطح المكتب لملف MSACCESS.EXE الذي في جهازك .. ( يوجد هذا الملف في الدليل : Program Files\Microsoft Office\Office\
    - انقر بالماوس الأيمن على الاختصار ثم اختر (خصائص)
    - سيكون مستطيل (الهدف) هكذا :
    "c:\Program Files\Microsoft Office\Office\ MSACCESS.EXE "


    - لنفترض أن مجلد ملف الحماية في السيرفر باسم (MyFolder) .. وملف الواجهات myprog.mdb في الـ C قم بإضافة ما يلي إليها :
    "c:\myprog.mdb" /wrkgrp "\\ServerName\MyFolder\MYPrgramSYSTEM.MDW "


    ServerName هو اسم جهاز السيرفر
    - ليكون مستطيل الهدف هكذا :
    "c:\Program Files\Microsoft Office\Office\ MSACCESS.EXE " "c:\myprog.mdb" /wrkgrp "\\ServerName\MyFolder\MYPrgramSYSTEM.MDW "


    - الآن حاول الدخول إلى القاعدة من خلال الاختصار
    - ثم قم بربط الجداول :
    من قائمة (أدوات) ثم (أدوات مساعدة لقواعد البيانات) ثم (إدارة الجداول المرتبطة) .. ضع علامة (صح) على (المطالبة دوماً بمكان جديد) ثم انقر زر(تحديد الكل) ثم انقر زر(موافق) ثم حدد القاعدة MyProg_be.MDB في السيرفر في مجلد MyFolder ثم انقر (فتح) ليتم تحديث ربط الجداول .

    == إجراءات مهمة :
    إنشاء مستخدم له صلاحيات المسؤول .. فننشأ مستخدماً كعضو في مجموعة المسؤولين تمهيداً لجعله مالك للقاعدة Myprog وفق الخطوات التالية :

    - الخطوة الأولى : إنشاء مستخدم كعضو في مجموعة (المسؤولين) :

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

    - الخطوة الثانية : إنشاء قاعدة جديدة لنجعل Ahmad مالكاً لها (مالك القاعدة هو الذي قام بإنشائها) :

    ضع كلمة مرور لـ (مسؤول) لكي يتم تفعيل مربع حوار تسجيل الدخول :
    وأنت في شاشة (اشتراك المستخدمين والمجموعات) انقر زر تبويب (تغيير كلمة تسجيل الدخول) .. سيظهر اسم المستخدم الحالي هو : مسؤول .. أدخل كلمة المرور فقط في المستطيلين (كلمة المرور الجديدة) و(التحقق) .. ثم أغلق آكسس ثم افتحه مرة أخرى سيطلب منك تسجيل الدخول .. ادخل الاسم (Ahmad) بدون كلمة مرور لإننا لم ننشأ له كلمة مرور (لا يمكنك إنشاء كلمة مرور لك أو لأي مستخدم حتى تدخل إلى القاعدة باسمه) .

    - الخطوة الثالثة :

    جعل Ahmad مالكاً لقاعدة البيانات :
    - من قائمة (ملف) اختر (جديد) .. ثم (قاعدة بيانات) ثم (موافق) ثم اختر اسماً للقاعدة الجديدة .. سيتم إنشاء قاعدة بيانات فارغة .. سنقوم الآن بجلب الكائنات في القاعدة السابقة .. انقر بالماوس الأيمن على الكائنات(جداول مثلاً) ثم اختر من القائمة المنبثقة (استيراد) .. ثم اختر القاعدة Myprog .. سيفتح مربع حوار (استيراد الكائنات) .. انقر على زر تبويب كائن وفي كل مرة انقر زر (تحديد الكل) .. ثم انقر زر (موافق) .. ليقوم آكسس بجلب الكائنا0ت إلى القاعدة الجديدة .. بهذا حصلنا على قاعدة جديدة مالكها Ahmad

    == من أجل الأمان .. نقوم بتعطيل (مسؤول Admin ) حتى لا يمكن الدخول به .. من خلال حذفه من قائمة أعضاء (مسؤولون) ثم تعطيل صلاحياته (لا يمكن حذفه نهائياً) :

    - من قائمة (أدوات) ثم (خيارات) ثم (أمان) ثم (حسابات المستخدمين والمجموعات) من القائمة (الاسم) اختر (مسؤول) ثم في قسم (عضو في) اختر (مسؤولون) ثم انقر زر (إزالة) .. بهذا تمت إزالته من مجموعة (مسؤولون) لكنه موجود في مجموعة (مستخدمين)

    - لتعطيل صلاحياته نهائياً حتى لا يمكن أن يكون له وجود في القاعدة مع وجود اسمه : - من قائمة (أدوات) ثم (خيارات) ثم (أمان) ثم (أذونات المستخدمين والمجموعات) .. ثم اختر (مسؤول) في قائمة(اسم المستخدم/المجموعة) ثم اختر (نوع الكائن) واحداً واحداً .. وفيما لو وجدت له صلاحيات على أحدها فقم بتعطيله .

    - مجموعة المستخدمين : لا زال (مسؤول) عضواً في مجموعة المستخدمين وله صلاحياتها .. مع أننا قمنا بتعطيل صلاحياته لوحده .. لكنه لا زال يمكنه الدخول إلى القاعدة من خلال صلاحيات (المستخدمين) .. أنت هنا بالخيار .. فإذا أردت تعطيل مجموعة (المستخدمين) فاستخدم نفس الطريقة في تعطيل (مسؤول) في نافذة (أذونات المستخدمين والمجموعات) .. بالنسبة لي فأنا أجعلهم مشاهدين فقط للبرنامج فيمكنهم الدخول ولكن لا يمكنهم تنفيذ أي أمر(حذف ، تعديل ، إدراج) .. فقط المشاهدة .. فلو أردت أن أجعل مدير المؤسسة مطلعاً فقط .. أنشأتُ له اسماً ثم جعلته في مجموعة (المستخدمين) .. أما غيرهم فإني أنشأ مجموعة للحذف ومجموعة أخرى للإدراج ومجموعة ثالثة للتعديل .. سأتحدث عن هذه المجموعات بعد قليل .

    -لجعل مجموعة المستخدمين مشاهدين فقط .. من نافذة (أذونات المستخدمين والمجموعات) اختر (مجموعات) من قسم (قائمة) ثم اختر (مستخدمون) ثم اختر (نوع الكائن) واحداً واحداً واجعلها (على فتح وقراءة)

    بإمكانك تعطيل مجموعة (المستخدمين) أبداً وعدم السماح بدخولهم إلى القاعدة من الأساس : عند اختيارك لمجموعة المستخدمين .. اختر (قاعدة البيانات) من قائمة (نوع الكائن) ثم عطل جميع الأذونات .. بهذا لن يتمكن أي أحد في مجموعة المستخدمين فقط من الدخول إلى القاعدة إلا إذا كان عضواً في مجموعات أخرى فيدخل بصلاحياتها ..
    -- بهذا نضمن الآن أنه لن يعطي الأذونات أحد غير Ahmad

    == إنشاء مجموعات جديدة ..
    قم بالدخول باسم Ahmad ..

    -إنشاء مجموعة حذف :
    من قائمة (أدوات) ثم (أمان) ثم (حسابات المستخدمين والمجموعات) .. انقر زر تبويب (مجموعات) ثم انقر زر (جديد) وأدخل اسم المجموعة ومعرفها ..
    - افعل مرة أخرى مع مجموعة التعديل ومجموعة الإدراج .
    بعد ذلك أنشأ المستخدمين وضعهم في مجموعاتهم المناسبة ..

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

    - لجعل مجموعة التعديل لها صلاحيات التعديل فقط .. اختر مجموعة التعديل وابق علامة(صح) فقط على (قراءة البيانات ، تحديث البيانات ، قراءة التصميم)

    - لجعل مجموعة الإدراج لها صلاحيات الإدراج فقط .. اختر مجموعة الإدراج وابق علامة(صح) فقط على (قراءة البيانات ، تحديث البيانات ، قراءة التصميم)

    - فيما بعد يمكنك إعطاء بعض المستخدمين صلاحيات الحذف والتعديل فقط .. أو الإدراج والتعديل فقط .. أو جميع الصلاحيات على البيانات .. أو كما تشاء

    == أثناء العمل على البيانات :
    التعارض بين المستخدمين لعرض سجل :
    هناك شيء اسمه (تأمين السجلات) وله ثلاث قيم : من قائمة (أداوات) ثم (خيارات) ثم (خيارات متقدمة)

    1- بلا تأمين : أي أن السجلات غير مؤمنة .. فلو فتح خالد على السجل وقام بتحديثه ولم يحفظه .. وفي أثناء ذلك دخل أحمد على نفس السجل .. وحاول تحديثه وحفظه ستخرج رسالة بإعلامك بتحديث السجل بخيارات ثلاث (إجراء تحديثك فوق تحديث المستخدم الآخر ، نسخ تحديثك ، تجاهل تحديثك)
    2- كافة السجلات : أي أن كافة السجلات مؤمنة ولا يمكن تحديثها حتى ينتهي المستخدم الأول
    منها .

    3- سجل محرر : أي أن السجل الذي بدأ خالد بتحديثه سيتم إغلاقه لوحده فقط دون باقي سجلات النموذج عن كافة المستخدمين حتى ينتهي منه .

    =============

    مفاهيم يجب أن تكون على بالك :

    ليكن على بالك أخي محب الآكسس أن آكسس ليس مهيأً لأن يعمل على الشبكات بكفاءة عالية ، غير أنه يمكنه العمل على الشبكة في حدود المعقول ، إذا ما توخينا بعض الأمور التي تمكنه من العمل على أحسن وجه بالقدر المستطاع .

    مربط الفرس في الموضوع كله هو : التخفيف على الشبكة في مرور السجلات من الجهاز السيرفر إلى أجهزة المستخدمين .

    1- عرض السجلات :
    يجب عليك أن تعرض السجلات التي تحتاجها فقط ، وأيضاً مع هذا يجب أن تعرض عدداً محدداً من السجلات التي تكفي لملء الشاشة .
    مثال : نريد عرض الزبائن الذين زادت مشترواتهم عن 10.000 آلاف ريال ولنفرض أن لدينا جدولين (جدول الزبائن ، وجدول المبيعات) .. ولكل زبون عدداً غير محدد من المبيعات ..
    ستحقق عبارة SQL التالية المطلوب :
    sq = " select tblCostomer.Name1,sum(tblSales.Price)As sales From tblCostomer INNER JOIN tblSales ON tblCostomer.C_ID=tblSales.Link_C"
    sq = sq & " GROUP BY tblCostomer.Name1"
    sq = sq & " HAVING sum(tblSales.Price) > 10000"


    ونريد الآن أن نعدل في عبارة SQL لتجلب فقط 20 سجلاً بإضافة عبارة Top 20 لتصبح كالتالي :
    sq = " select Top 20 tblCostomer.Name1,sum(tblSales.Price)As sales From tblCostomer INNER JOIN tblSales ON tblCostomer.C_ID=tblSales.Link_C"
    sq = sq & " GROUP BY tblCostomer.Name1"
    sq = sq & " HAVING sum(tblSales.Price) > 10000"

    ثم نقوم بفتح النموذج الذي يحتوي على الحقلين Name1 ، Sales
    DoCmd.OpenForm "frm1"

    ونجعل مصدر النموذج هو عبارة SQL السابقة :
    Forms!frm1.Form.RecordSource = sq

    ليكون الكود كاملاً هكذا :
    Dim sq As String
    sq = " select Top 20 tblCostomer.Name1,sum(tblSales.Price)As sales From tblCostomer INNER JOIN tblSales ON tblCostomer.C_ID=tblSales.Link_C"
    sq = sq & " GROUP BY tblCostomer.Name1"
    sq = sq & " HAVING sum(tblSales.Price) > 10000"
    DoCmd.OpenForm "frm1"
    Forms!frm1.Form.RecordSource = sq


    2- مصدر سجلات النموذج :
    لا تجعل مصدر سجلات النموذج جدولاً بل اجعله استعلاماً كما مر في النقطة السابقة

    3- عند إضافة سجل :
    اجعل مصدر سجلات النموذج فارغاً حتى لا يتم جلب أي بيانات من السيرفر ، فلسنا بحاجة إلى جلب سجلات عند الإضافة .. ولك أن تسأل كيف ستتم إضافة السجلات ؟؟ فالجواب من خلال عبارة Insert في SQL .
    مثال : إدراج سجل مبيع لأحد الزبائن المسجلين .. لنفرض أن جدول تسجيل المبيعات يحتوي على (رقم الزبون C_ID ، اسم البضاعة NameProd ، السعر Price) .. فنضع ثلاثة حقول وتكون إضافة السجل بالعبارة التالية :
    Dim sq As String
    sq = "Insert Into tblSales (Link_C,Name_Prod,Price)Values("
    sq = sq & Me.C_ID & ","
    sq = sq & "'" & Me.txtProd & "',"
    sq = sq & Me.txtPrice & ")"
    DoCmd.RunSQL sq


    4- عند تحديث سجل أو مجموعة من السجلات
    اجلب السجل / السجلات الذي تريد تحديثه ثم قم بتحديثه بعبارة SQL .. UpDate وفق شرط معين أو من غير شرط

    5- عند حذف سجل أو مجموعة من السجلات
    اجلب السجل / السجلات الذي تريد تحديثه ثم قم بتحديثه بعبارة SQL .. Delete وفق شرط معين أو من غير شرط

    تنبيه مهم :

    ينبغي عليك تعلم المكون ADO للوصول إلى البيانات ومعالجتها ، حيث أنه الأمثل والأجدر بهذا .. والكتب في ذلك كثيرة ولا يوجد موقع برمجي لم يتحدث عنه ..

    =================

    لا أدري ربما نسيت شيئاً أو سهوت عن شيء .. ومن هنا تأتي الأسئلة والاستفسارات .. فحيهلاً بكم وبها .
    ودمتم بخير ورضا

    كلمات مفتاحية  :
    آكسس الشبكة درس شرح

    تعليقات الزوار ()