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

أسئله بخصوص ربط قواعد البيانات بالado Control

بدأه Xeon_1001 في 5 أبريل 2008 · 16 رد · 2,089 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السؤال الاول : كيف أربط قاعدة البيانات بالبرنامج عن طريق UDL Files ؟

السؤال الثاني : كيف أربط قاعدة البيانات بالبرنامج عن طريق ODBC ؟

السؤال الأخير : كيف أقدر أن أستعمل خاصية ConnectionString مع Execute علماً بأني استخدمت هذا الكود ولكن تظهر رسالة خطأ :

 </P> 
Db.ConnectionString = "Provider=microsoft.jet.OLEDB.4.0" & _
"Data Source=app.Path + \Mydata.mdb"</P> 
Db.Execute "select * from tb1</P>

"

أريد إستخراج البيانات بدون أن أستعمل Recordset هل أقدر ؟؟

ومشكورين مقدماً

#2

الأخ الفاضل بخصوص السؤال الأول والثانى فهناك العديد والعديد من الأمثلة فى المنتدى سواء فى قسم الفيجوال بيسك او قواعد البيانات

اما السؤال الثالث والخاص بالأمر Execute

فهذا الأمر لايستخدم مع كل انواع قواهد البيانات فمثلا لايمكنك اضافة جدول من خلال هذا الأمر فى قاعدة بيانات اكسيس فى حين يمكنك عمل ذلك مع قاعدة بيانات MySql - هذا فى حدود علمى والله أعلم -

شكرا ....

كن كالنخيل عن الأحقاد مرتفعا .. يرمى بصخر فيرمى أطيب الثمر

#3

مشكور أخي على اهتمامك

#4
اقتباس
فهذا الأمر لايستخدم مع كل انواع قواهد البيانات فمثلا لايمكنك اضافة جدول من خلال هذا الأمر فى قاعدة بيانات اكسيس فى حين يمكنك عمل ذلك مع قاعدة بيانات MySql - هذا فى حدود علمى والله أعلم -

شكرا ....

معزرتاً أخي ، هذا الأمر وظيفتة الرئيسية هو تنفيذ أوامر وليس له علاقة بنوع قاعدة البيانات أياً كان مصدرها !!!

المهم أخي ، الأمر Execute مجرد منفذ أوامر فقط لا غير ، ولكن كل قاعدة بيانات تحتوي علي نظام إدارة قواعد البيانات الخاصة بها ، وأهم شيء هو لغة الإستعلامات SQL سواء DDL أو DML ، وأياً كان نوع قاعدة البيانات المهم طريقة إستخدام الـ DBMS ، والأمر Execute وظيفتة الرئيسية هو إرسال أوامر لـ DBMS فقط لا غير ، وإذا كان الأمر خطأ يرتجع لك سبب الخطأ من قاعدة البيانات نفسها

فهو منفذ أوامر فقط لا غير ، إذا أدرجت أمر صحيح سينفذ الأمر جيداً ، وإذا أدرجت أمر غير صحيح سيرتجع لك الخطأ الذي حدث في قاعدة البيانات

ولكي أثبت لك هذا إليك مجموعة من الأمثلة المنفذة بقاعدة بيانات Access :

اولاً قم بالإتصال مع قاعدة بيانات أولاً ، ثم نفذ مجموعة الأوامر التالية بحيث أن كل أمر يدرج في زر أمر خاص :

1- إدراج جدول الموظف :

SQL = "Create Table Emp"
SQL = SQL & "(Emp_ID  Counter,"
SQL = SQL & "Emp_Code VarChar(20),"
SQL = SQL & "Emp_Name VarChar(50),"
SQL = SQL & "Constraint PK_Emp Primary Key(Emp_ID),"
SQL = SQL & "Constraint UQ_Emp_Code Unique(Emp_Code),"
SQL = SQL & "Constraint UQ_Emp_Name Unique(Emp_Name))"
Cn.Execute SQL

2- إدراج مجموعة سجلات للموظف :

Cn.Execute "Insert Into Emp(Emp_Code,Emp_Name) Values('1','May')"
Cn.Execute "Insert Into Emp(Emp_Code,Emp_Name) Values('2','Ahmed')"
Cn.Execute "Insert Into Emp(Emp_Code,Emp_Name) Values('3','Usif')"
Cn.Execute "Insert Into Emp(Emp_Code,Emp_Name) Values('4','Aly')"

3- إرتجاع مجموعة السجلات المدرجة من جدول الموظف بجريد Grid :

Set Rs = Cn.Execute("Select * From Emp")
Set fg.DataSource = Rs

والأمر السابق ينفذ نفس عمل جملة Open ، ولكن كل شيء له إستخداماتة .

4- تعديل السجل الأول :

Cn.Execute "Update Emp Set Emp_Name = 'Mostapha' Where Emp_Code = '1'"

5- حذف كافة السجلات الثالث :

Cn.Execute "Delete From Emp Where Emp_Code = '3'"

6- حذف الجدول :

Cn.Execute "Drop Table Emp"

إذاً ، فالأمر Execute وظيفته الرئيسية هو تنفيذ مجموعة أوامر SQL المهم تكون الأوامر صحيحة

شكراً

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#5

مشكور على التوضيح وجزاك الله خيرا

انا جربت الكود ولكن تظهر رسالة خطأ

الكود المستخدم :

Db.ConnectionString = "Provider=microsoft.jet.OLEDB.4.0" & _
"Data Source=app.Path + \Mydata.mdb"


SQL = "Create Table Emp"
SQL = SQL & "(Emp_ID  Counter,"
SQL = SQL & "Emp_Code VarChar(20),"
SQL = SQL & "Emp_Name VarChar(50),"
SQL = SQL & "Constraint PK_Emp Primary Key(Emp_ID),"
SQL = SQL & "Constraint UQ_Emp_Code Unique(Emp_Code),"
SQL = SQL & "Constraint UQ_Emp_Name Unique(Emp_Name))"
Db.Execute SQL

رسالة الخطأ :

the operation is not allowed when the object Closed

فما هو السبب

#6

لأنك ترسل قيمة ConnectionString دون إجراء فتح لكائن الـ Cn ، ولكن الصحيح كما يلي :

Db.ConnectionString = "Provider=microsoft.jet.OLEDB.4.0" & _
"Data Source=app.Path + \Mydata.mdb"
If(Db.State = 1)Then Db.Close
Db.Open

SQL = "Create Table Emp"
SQL = SQL & "(Emp_ID  Counter,"
SQL = SQL & "Emp_Code VarChar(20),"
SQL = SQL & "Emp_Name VarChar(50),"
SQL = SQL & "Constraint PK_Emp Primary Key(Emp_ID),"
SQL = SQL & "Constraint UQ_Emp_Code Unique(Emp_Code),"
SQL = SQL & "Constraint UQ_Emp_Name Unique(Emp_Name))"
Db.Execute SQL

شكراً

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#7

أخي انا جربت الكود بتظهر هذه الرسالة

post-155288-1207591700_thumb.gif

استحمل أخوك الصغير :lol:

#8

هناك فاصلة منقوطة ناقصة بعد Provider في الـConnection String ..

Db.ConnectionString = "Provider=microsoft.jet.OLEDB.4.0;" & _
"Data Source=app.Path + \Mydata.mdb"

سبحان الله وبحمده ... سبحان الله العظيم

#9
Xeon_1001 كتب:
مشكور على التوضيح وجزاك الله خيرا

انا جربت الكود ولكن تظهر رسالة خطأ

الكود المستخدم :

Db.ConnectionString = "Provider=microsoft.jet.OLEDB.4.0" & _
"Data Source=app.Path + \Mydata.mdb"


SQL = "Create Table Emp"
SQL = SQL & "(Emp_ID  Counter,"
SQL = SQL & "Emp_Code VarChar(20),"
SQL = SQL & "Emp_Name VarChar(50),"
SQL = SQL & "Constraint PK_Emp Primary Key(Emp_ID),"
SQL = SQL & "Constraint UQ_Emp_Code Unique(Emp_Code),"
SQL = SQL & "Constraint UQ_Emp_Name Unique(Emp_Name))"
Db.Execute SQL

رسالة الخطأ :

the operation is not allowed when the object Closed

فما هو السبب

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

كل ما عليك فعله هو التعديل البسيط الاتي

db.Open "Provider=microsoft.jet.OLEDB.4.0;" & _
"Data Source=app.Path + \Mydata.mdb"

تحياتي

تم تعديل هذه المشاركة بواسطة omani في 7 أبريل 2008 في 23:24

OMANI FOR EVER

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

post-12787-12780191801974.jpg

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

#10

جزاكم الله خيرا على تعاونكم الحمد لله تم تنفيذ الكود بنجاح بإستخدام هذا الكود :

Db.Open "Provider=microsoft.jet.OLEDB.4.0; Data Source=" & App.Path & "\Mydata.mdb"

والان هذه الاسئلة ياريت لو رابط للموضوع اللي بيتكلم عنه

اقتباس
السؤال الاول : كيف أربط قاعدة البيانات بالبرنامج عن طريق UDL Files ؟

السؤال الثاني : كيف أربط قاعدة البيانات بالبرنامج عن طريق ODBC ؟

#11

إنشاء إتصال مع ODBC :

تتبع الخطوات التالية لإنشاء إتصال مع قاعدة البيانات من نوع Access من خلال ODBC

1- قم بالذهاب الي Control Panel وأدخل علي Administrative Tools ومن ثم أنقر علي أيقونة Data Sources (ODBC) أو الذهاب الي مسار البرنامج مباشرتاً system32\odbcad32.exe علي نظام التشغيل .

2- ستعرض لك نافذة ODBC Data Source Adminstrator حدد التبويب الأول User DSN ومن ثم أنقر علي زر أمر Add .

3- ستظهر لك نافذة Create New Data Source حدد Microsoft Access Driver(*.mdb) وذلك للإتصال مع قاعدة بيانات من نوع Access ، ثم أنقر Finish .

4- ستظهر لك نافذة حدد فيها كلاً من Data Source Name وهذا الإسم الذي ستعمل علية ، ثم حدد مسار قاعدة بيانات Access من خلال النقر علي زر أمر Select .

5- أنقر علي موافق لتنفيذ الأمر كلياً OK ومن ثم لإظهار الإسم الذي أدخلتة من قبل بقائمة أسماء الإتصالات ، علي سبيل المثال الإسم هو ( DB ) .

6- الآن حان الوقت للإتصال مع الـ ODBC من خلال الفيجوال 6.0 ، أفتح مشروع جديد ومن ثم قم بإدراج كائن الربط ADODB ثم أنشأ كائن Connection ومن ثم أتصل مع القاعدة كما يلي :

Cn.Open "Dsn=DB"

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

Cn.Open "Dsn=DB;Password=150"

لكن أخي أنتبه ، هل معني ذلك أنه من الشرط كل مرة تجعل المستخدم يقوم بإنشاء إتصال مع الـ ODBC بنفس هذه الخطوات وتعطية معلومات قاعدة البيانات مثل الـ Password ، هذا غير صحيح !!!

ولكن الصحيح هو تنفيذ كل هذا برمجياً !!!

ولكي يتم إنشاء كل هذه الخطوات عليك بمسجل النظام ، وذلك في المسار التالي :

HKEY_CURRENT_USER\SOFTWARE\ODBC\

1- أنشأ مفتاح جديد بهذا المسار وأعطة إسم DB مثلاً ، ومن ثم أدرج بداخلة مجموعة من القيم التالية :

اقتباس
- أنشأ مفتاح من نوع String Value تحت إسم DBQ ، وإدرج به مسار قاعدة البيانات كاملة كما يلي :

DBQ = C:\Documents and Settings\MMA\Desktop\DB\DB.mdb

- أنشأ مفتاح جديد من نوع String Value تحت إسم Driver ومن ثم حدد به مسار خادم Access :

Driver = C:\WINDOWS\system32\odbcjt32.dll

- أخيراً قم بإدراج مفتاح جديد من نوع Dword Value تحت إسم DriverId كما يلي :

DriverId = H19

حيث يحتوي علي قيمة ثابتة ( 19 ) وتختلف من نوع الي آخر ، كما أن هناك أنوع أخري من قواعد البيانات لا تحتاج إليها من أساسة !!!

علي العموم يمكنك إنشاء إتصال بالفكرة الأولي والذهاب الي المسار المحدد بمسجل النظام وشاهد ما تريدة

2- في المسار HKEY_CURRENT_USER\SOFTWARE\ODBC\ قم بالذهاب الي المفتاح ODBC Data Sources وأنشأ مفتاح فرعي من نوع String Value ومن ثم أمنح له نفس إسم المفتاح الرئيسي السابق ، وبمثالنا هو ( DB ) ، ومن ثم أدرج له أي قيمة توضح نوع الإتصال ، مثلا% Microsoft Access أو قيمة مناسبة !!!

ملحوظة ، هذه الطريقة فقط الهدف منها هو عرض الإتصال بنافذة ODBC الموجودة بـ Control panel فقط لا غير ، ولكن يمكن الإستغناء عنها حتي لا يعلم المستخدم العادي طريقة الربط مع قاعدة البيانات ، وحتي لا يلعب في محتويات الإتصال .

ملحوظة أخيرة ، يمكن بناء الإتصال مع ODBC كما يلي :

Cn.Open "Data Source=DB;Password=150"

بدلاً من :

Cn.Open "Dsn=DB;PWD=150"

حيث الطريقة الأولي متبعة مع أي نوع من أنواع قواعد البيانات ، أما الثانية فهي متبعة من Access فقط لا غير !!!

آخر قولي لك ، يمكنك إنشاء مفتاح فرعي من نوع String Value تحت إسم Password لهدف تخزين كلمة المرور بها ، ولكن من المفضل تخزين كلمة المرور داخل الملف التنفيذي EXE .

الإتصال UDL Files :

بخصوص هذا الموضوع ، صراحتاً أخي أنا لم أتذكرة ، لكن بعد إذن حضرتك ذكرني ما وظيفة هذا الإتصال !!!

هل يتم تخزين ملف بيانات به الإتصال وإستخدامة ؟ وإذا كان الأمر هكذا هل تقصد ملفات من نوع DSN ODBC ؟

ياريت حضرتك تذكرني ، لعل وعسي أن أقدر علي مساعدتك

شكراً

تم تعديل هذه المشاركة بواسطة MMA_EG_Cairo في 8 أبريل 2008 في 03:59

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#12

الف الف شكلا لك اخي

MMA_EG_Cairo

كلمات اتعبت الملائكة في كتابة الأجر فذهبوا وشكوا إلى ربهم .... ماذا يفعلون

فقال لهم سبحانه وتعالى اطووها بصحائفها وضعوها تحت عرشي فتبقى حسناتها إلى يوم القيامة الله اكبر

(( اللهم لك الحمد كما ينبغي لجلال وجهك وعظيم سلطانك))

#13

أولاً أخي أريد أن اشكرك كثيييييييييييييييييييير واسف على تعبك

أما بخصوص الاتصال بUDL files فانا لا أعرف عنه شيء الا انه عبارة عن طريقة لاتصال قاعدة البيانات بالبرنامج فعند الاتصال يتم إنشاء ملف به معلومات عن كل المعلومات الخاصه بالاتصال مثلا معلومات عن نوع المحرك لقاعدة البيانات ويتم عمل هذا عن طريق الاداة ADO Control ... ويكون امتداد هذه الملفات UDL

#14

الأخ الكريم ، تحية طيبة وبعد ،

أنظر الكود التالي :

Cn.Open "File Name=" & App.Path & "\Cnn.udl"

لكن بجد أنا لا أرشح لك هذه العملية ، وكذلك لا أرشح إستخدام إمتداد dsn !!!

حيث يترك المعلومات بملف يمكن الإتطلاع علية بواسطة المستخدم العادي ، ولكن في نفس الوقت سريع المفعول ويمكن التعامل معه بكل سهولة طالما الملف موجود بالمسار المحدد ، ومعلومات الإتصال مخزنة بالملف !!!

ولكن الربط المباشر من داخل الفيجوال أفضل بكثير !!!

شكراً

Simble.rar

تم تعديل هذه المشاركة بواسطة MMA_EG_Cairo في 8 أبريل 2008 في 23:35

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#15

اخي مشكور جدا على تجاوبك معاي وانا الحمد لله لقيت الرابط الذي يوجد به الشرح

رابط الشرح

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

نص عادي الى ملف UDL ..... هل هذا له علاقة بإصدار البرنامج الذي أعمل علية

#16
اقتباس
الان عندي مشكلة بسيطة وهي عندما انشىء ملف نص عادي امتدادة txt احاول اغير امتدادة الى UDL لايتم تحويل الملف من ملف

نص عادي الى ملف UDL ..... هل هذا له علاقة بإصدار البرنامج الذي أعمل علية

لا يا أخي ليس هذا له علاقة بإصدار البرنامج ، ولكن أخي المشكلة في الملف نفسة ، أنت لم تغير إمتدادة ، ولكنك قمت بتغيير أسم الملف لا إمتدادة !!!!

بإختصار شديد الملف + الإمتداد كما يلي :

Cnn.udl.txt

يجب عليك حذف قيمة txt نفسة !!!!

ولكي تري الإمتدادات كلياً يجب عليك عرض الملف وإمتدادة في نظام التشغيل نفسة !!!

أفتح My Computer وفي قائمة Tools أختر أمر Folder Options وفي التبويب View حدد الأمر :

Show hidden files and folders

وألغي التفعيل عن :

Hide extensions for known file types

ومن ثم أنقر OK

بعد ذلك ستجد جميع الإمتدادات ظاهرة ، غير الإمتداد الي الإمتداد المناسب

شكراً

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#17

انا اللي اشكرك جزاااك الله الف الف خيراً وأكسبك الله رضا الوالدين :lol:

كل شيء إتنفذ 100 100 :rolleyes:

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

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

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

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

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