الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال في اتصال الجداول في قواعد بيانات اكسس

مغلق
بدأه ..:: BaSeL :.. في 16 سبتمبر 2007 · 5 رد · 1,084 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم اخواني واخواتي اعضاء هذا المنتدى الرائع بكل ماتعنيه هذه الكلمة

واحب اهنئ وابارك الجميع بقدوم شهر رمضان .. والله يجعلنا وياكم من صيامه وقوامه ان شاء الله

وان يتقبل اعمالنا وصيامنا يارب العالمين

اما بعد فمشاركتي هي استفسار بخصوص اتصال قواعد البيانات اكسس

حيث اني قد قرأت موضوع للاخ مصلح الحريصي عن الاتصال

وطبقت ماجاء فيه كاملا لكن عند ادخال البيانات في نموذج والضغط على زر حفظ تأتي رساله خطأ عند الكود التالي

myTable.clone

فياليت لو اعرف ما السبب وماهي المشكله في هذا الكود الذي لونته باللون الاحمر ؟

تحيتي لكم

اما درس الاتصال الذي طبقته فهو بالاسفل للاخ مصلح

مصلح الحريصي كتب:
الاتصال بقواعد البيانات والتعامل مع ما تحتويه من بيانات:

هناك عدة طرق للاتصال بقواعد البيانات والتعامل مع ما تحتويه من بيانات وأنا من الأشخاص الذين يعشقون التعامل مع البيانات في البرمجة وتلك الطرق منها:

1. إنشاء الجداول في نفس قاعدة البيانات _ وهذا الطريقة لا تحتاج مجهود من المبرمج في التعامل مع البيانات لأنه يسهل الاتصال بالبيانات0

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

3. إنشاء واجهة البرنامج وإنشاء قاعدة البيانات منفصلة عن الواجهة ويتم التعامل مع البيانات عن طريق الكود وفي هذا الحالة يتم الاتصال بقاعدة البيانات والتعامل مع البيانات بواسطة أدوات الاتصال بقواعد البيانات والتي هي :( ADO _ DAO _ Sql ( وهذه الطريقة تختلف عن سابقتها حيث أنك تقوم بالاتصال بقواعد البيانات والتعامل مع البيانات بدون أن تكون الجداول في نفس قاعدة الواجهة أو يكون للجداول اختصارات في قاعدة الواجهة وهذه الطريقة صعبة على المبرمجة حيث يقوم بكتابة اكواد بشكل كبير على سبيل المثال : الاتصال بواسطة Sql

سيحتاج إلى إنشاء متغير لقاعدة البيانات ثم فتحها في الذاكرة ثم إنشاء لغة إس كيو إل Sql ثم إنشاء متغير من نوع جدول إسناد البيانات إلى الجدول ثم التعامل مع البيانات من خلال الكود من حيث ( الإضافة والتعديل والبحث والحذف ) وكل العمليات التي تتم على البيانات 0

بالنسبة لي أنا أفضل الطريقة الأخيرة رقم ( 3 ) وخصوصاً (( Sql )) مع أنها متعبة للمبرمج إلا أنك تجد فيها المتعة حيث يمكنك التلاعب بالبيانات كما يحلو لك وكما يخطر ببالك كما أنك لا تجد في قاعدة الواجهة أي جدول أو استعلام هذه الطريق إلا أن هذه الطريقة كما اسلفت متعبة وتحتاج إلى وقت في عمل أي برنامج كما أنه تتطلب منك الإحاطة بهذا الجانب 0

...........................................

اليوم سنتعرف على مثال بسيط على الطريقة الثالثة (Sql ) حيث سنقوم بإنشاء قاعدتين الأولى تحتوي على الجداول فقط والثانية على واجهة البرنامج ثم نقوم بالاتصال بقاعدة البيانات التي تحتوي على الجداول ونتعامل مع البيانات من خلال الواجهة ونقوم بالإضافة والتعديل والبحث والحذف .

أولاً : نقوم بإنشاء قاعدة خاصة بالجداول ونسميها : EmployeesData ونضيف إليها جدول ونسميه مثلاً Employees يحتوي على الحقول التالية :

1. رقم الموظف _____ EmpNo

2. اسم الموظف _____ EmpName

3. رقم هاتفه _____ EmpTel

4. المدينة _____ EmpCity

ونقوم بإنشاء قاعدة الواجهة ونسميها : EnterFace ونضيف نموذج ونسميه : EmployeesFrm ثم نضيف إليه مربعات النصوص التالية :

1. رقم الموظف _____ TxtEmpNo

2. اسم الموظف _____ TxtEmpName

3. رقم هاتفه _____ TxtEmpTel

4. المدينة _____ TxtEmpCity

ثم نضيف أزرار الأوامر التالية :

1. الحفظ _____ cmdSave

2. التحديث _____ cmdUpDate

3. بحث _____ CmdSearch

4. حذف _____ cmdDeleteRc

5. جديد _____ NRecord

الآن ننشيء وحدة نمطية عامة Module ونسميها في إطار قاعدة البيانات أي اسم وفي صفحة الكود لتلك الوحدة النمطية :

أولاً نعلن عن ثلاث متغيرات عمومية نستطيع استدعاءه من أي مكان في البرنامج وذلك كما يلي

Public MyDatabase As Database
Public MySQL As String
Public MyTable As Recordset

الأول : خاص اسمه (MyDatabase ) بقاعدة البيانات

الثاني : اسمه (MySQL ) خاصة بلغة Sql

الثالث : اسمه (MyTable ) خاص بالسجلات

ثم نكتب الكود التالي :

Public Sub Opdatabase()
1  Dim ProgramPath As String
2  ProgramPath = (Application.CodeProject.Path & "\EmployeesData.mdb")
3  Set MyDatabase = OpenDatabase(ProgramPath)
End Sub

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

أعلنا هنا عن متغير أسمينها (ProgramPath ) نخزن فيه مسار القاعدة التي تحتوي على الجداول المراد فتحها . ويجب أن تكون تلك القاعدة في نفس مجلد البرنامج وإلا نحدد مسار القاعدة كاملاً في الكود وخصوصاً عندما تكون على سيرفر.

نسند مسار القاعدة للمتغير كما في السطر رقم ( 2 ) ثم نفتح قاعدة البيانات في الذاكرة بواسطة سطر الأمر رقم ( 3 ) .

الآن نحن متصلين بقاعدة بيانات الجداول ويمكننا التعامل مع الجداول والبيانات نذهب إلى النموذج وتحديداً زر الحفظ وفي حدث عند النقر في الوحدة النمطية الخاصة بهذا الحدث نكتب الكود التالي :

Opdatabase

   MySQL = "INSERT INTO Employees "
   MySQL = MySQL & "(EmpNo,"
   MySQL = MySQL & "EmpName,"
   MySQL = MySQL & "EmpTel,"
   MySQL = MySQL & "EmpCity)"
   MySQL = MySQL & " values ("

   MySQL = MySQL & Me!TxtEmpNo & ",'"
   MySQL = MySQL & Me!TxtEmpName & "','"
   MySQL = MySQL & Me!TxtEmpTel & "','"
   MySQL = MySQL & Me!TxtEmpCity & "');"
   MyDatabase.Execute MySQL
MyTable.Clone
MyDatabase.Close

في السطر رقم ( 1 ) قمنا باستدعاء الوحدة النمطية العامة والخاصة بفتح قاعدة الجداول وهيئنا المتغيرين الخاصين بلغة Sql والسجلات.

في الأسطر من ( 2 _ 6 ) قمنا بتحديد الحقول التي نريد إضافة القيم إليها في الجدول .

في الأسطر من (7 _ 10 ) حددنا القيم التي نريد إضافتها إلى الجدول وذلك بتحديد قيم مربعات والسطر ما قبل الأخيرين هو بمعنى نفذ محتوى الشفرة البرمجية أو ( الكود ) ويبقى السطرين الأخيرين وهما إغلاق قاعدة بيانات الجداول والجدول حتى لا نسبب إزعاج للذاكرة فتزعل علينا.

....................................................

إلى هنا نتوقف لأنني تعبت اليوم.

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

تمنياتي للجميع دوام التوفيق

ياليت من يعرف ان لا يحرمنا من الجواب

وشاكر لكم مره اخرى

تحيتي لكم

#2

يا اخوان هذا درس الاخ مصلح .. لكن عندي مشكله ولم استطه تطبيق الدرس

من يعرف دروس لاتصال قواعد البيانات فل يفيدني رجاااااااء

مصلح الحريصي كتب:
الاتصال بقواعد البيانات والتعامل مع ما تحتويه من بيانات:

هناك عدة طرق للاتصال بقواعد البيانات والتعامل مع ما تحتويه من بيانات وأنا من الأشخاص الذين يعشقون التعامل مع البيانات في البرمجة وتلك الطرق منها:

1. إنشاء الجداول في نفس قاعدة البيانات _ وهذا الطريقة لا تحتاج مجهود من المبرمج في التعامل مع البيانات لأنه يسهل الاتصال بالبيانات0

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

3. إنشاء واجهة البرنامج وإنشاء قاعدة البيانات منفصلة عن الواجهة ويتم التعامل مع البيانات عن طريق الكود وفي هذا الحالة يتم الاتصال بقاعدة البيانات والتعامل مع البيانات بواسطة أدوات الاتصال بقواعد البيانات والتي هي :( ADO _ DAO _ Sql ( وهذه الطريقة تختلف عن سابقتها حيث أنك تقوم بالاتصال بقواعد البيانات والتعامل مع البيانات بدون أن تكون الجداول في نفس قاعدة الواجهة أو يكون للجداول اختصارات في قاعدة الواجهة وهذه الطريقة صعبة على المبرمجة حيث يقوم بكتابة اكواد بشكل كبير على سبيل المثال : الاتصال بواسطة Sql

سيحتاج إلى إنشاء متغير لقاعدة البيانات ثم فتحها في الذاكرة ثم إنشاء لغة إس كيو إل Sql ثم إنشاء متغير من نوع جدول إسناد البيانات إلى الجدول ثم التعامل مع البيانات من خلال الكود من حيث ( الإضافة والتعديل والبحث والحذف ) وكل العمليات التي تتم على البيانات 0

بالنسبة لي أنا أفضل الطريقة الأخيرة رقم ( 3 ) وخصوصاً (( Sql )) مع أنها متعبة للمبرمج إلا أنك تجد فيها المتعة حيث يمكنك التلاعب بالبيانات كما يحلو لك وكما يخطر ببالك كما أنك لا تجد في قاعدة الواجهة أي جدول أو استعلام هذه الطريق إلا أن هذه الطريقة كما اسلفت متعبة وتحتاج إلى وقت في عمل أي برنامج كما أنه تتطلب منك الإحاطة بهذا الجانب 0

...........................................

اليوم سنتعرف على مثال بسيط على الطريقة الثالثة (Sql ) حيث سنقوم بإنشاء قاعدتين الأولى تحتوي على الجداول فقط والثانية على واجهة البرنامج ثم نقوم بالاتصال بقاعدة البيانات التي تحتوي على الجداول ونتعامل مع البيانات من خلال الواجهة ونقوم بالإضافة والتعديل والبحث والحذف .

أولاً : نقوم بإنشاء قاعدة خاصة بالجداول ونسميها : EmployeesData ونضيف إليها جدول ونسميه مثلاً Employees يحتوي على الحقول التالية :

1. رقم الموظف _____ EmpNo

2. اسم الموظف _____ EmpName

3. رقم هاتفه _____ EmpTel

4. المدينة _____ EmpCity

ونقوم بإنشاء قاعدة الواجهة ونسميها : EnterFace ونضيف نموذج ونسميه : EmployeesFrm ثم نضيف إليه مربعات النصوص التالية :

1. رقم الموظف _____ TxtEmpNo

2. اسم الموظف _____ TxtEmpName

3. رقم هاتفه _____ TxtEmpTel

4. المدينة _____ TxtEmpCity

ثم نضيف أزرار الأوامر التالية :

1. الحفظ _____ cmdSave

2. التحديث _____ cmdUpDate

3. بحث _____ CmdSearch

4. حذف _____ cmdDeleteRc

5. جديد _____ NRecord

الآن ننشيء وحدة نمطية عامة Module ونسميها في إطار قاعدة البيانات أي اسم وفي صفحة الكود لتلك الوحدة النمطية :

أولاً نعلن عن ثلاث متغيرات عمومية نستطيع استدعاءه من أي مكان في البرنامج وذلك كما يلي

Public MyDatabase As Database
Public MySQL As String
Public MyTable As Recordset

الأول : خاص اسمه (MyDatabase ) بقاعدة البيانات

الثاني : اسمه (MySQL ) خاصة بلغة Sql

الثالث : اسمه (MyTable ) خاص بالسجلات

ثم نكتب الكود التالي :

Public Sub Opdatabase()
1  Dim ProgramPath As String
2  ProgramPath = (Application.CodeProject.Path & "\EmployeesData.mdb")
3  Set MyDatabase = OpenDatabase(ProgramPath)
End Sub

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

أعلنا هنا عن متغير أسمينها (ProgramPath ) نخزن فيه مسار القاعدة التي تحتوي على الجداول المراد فتحها . ويجب أن تكون تلك القاعدة في نفس مجلد البرنامج وإلا نحدد مسار القاعدة كاملاً في الكود وخصوصاً عندما تكون على سيرفر.

نسند مسار القاعدة للمتغير كما في السطر رقم ( 2 ) ثم نفتح قاعدة البيانات في الذاكرة بواسطة سطر الأمر رقم ( 3 ) .

الآن نحن متصلين بقاعدة بيانات الجداول ويمكننا التعامل مع الجداول والبيانات نذهب إلى النموذج وتحديداً زر الحفظ وفي حدث عند النقر في الوحدة النمطية الخاصة بهذا الحدث نكتب الكود التالي :

Opdatabase

   MySQL = "INSERT INTO Employees "
   MySQL = MySQL & "(EmpNo,"
   MySQL = MySQL & "EmpName,"
   MySQL = MySQL & "EmpTel,"
   MySQL = MySQL & "EmpCity)"
   MySQL = MySQL & " values ("

   MySQL = MySQL & Me!TxtEmpNo & ",'"
   MySQL = MySQL & Me!TxtEmpName & "','"
   MySQL = MySQL & Me!TxtEmpTel & "','"
   MySQL = MySQL & Me!TxtEmpCity & "');"
   MyDatabase.Execute MySQL
MyTable.Clone
MyDatabase.Close

في السطر رقم ( 1 ) قمنا باستدعاء الوحدة النمطية العامة والخاصة بفتح قاعدة الجداول وهيئنا المتغيرين الخاصين بلغة Sql والسجلات.

في الأسطر من ( 2 _ 6 ) قمنا بتحديد الحقول التي نريد إضافة القيم إليها في الجدول .

في الأسطر من (7 _ 10 ) حددنا القيم التي نريد إضافتها إلى الجدول وذلك بتحديد قيم مربعات والسطر ما قبل الأخيرين هو بمعنى نفذ محتوى الشفرة البرمجية أو ( الكود ) ويبقى السطرين الأخيرين وهما إغلاق قاعدة بيانات الجداول والجدول حتى لا نسبب إزعاج للذاكرة فتزعل علينا.

....................................................

إلى هنا نتوقف لأنني تعبت اليوم.

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

تمنياتي للجميع دوام التوفيق

#3

أخي هناك خطأ في الكود

استبدل السطرين التاليين

MyTable.Clone
MyDatabase.Close

بالسطرين التاليين

   Set MyTable = Nothing
	Set MyDatabase = Nothing

وأخبرني بما يتم معك

#4

شاكر لك كثير الشكر اخووي مصلح

راح اجرب وارد لك خبر

#5

اشكرك كثير الشكر اخووي مصلح

تم تطبيق درس الاظافة والحمد لله نجح

وحفظنا كود الاظافة

الله يعطيك الف عافية .. واشكرك كثير الشكر

وان شاء الله جاري تطبيق باقي دروس الاتصال من بحث وتحديث وتعديل وحذف

اشكرك مره اخرى .. واي حاجه ترى ماراح اخليك بجي واسئلك .. ابي استفيد منك يامهندس

#6

أهلا وسهلا بك أخي الكريم

ولن بخل عليك بأي شيء أعرفه

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…