تعلم كيفية ربط جدولين مختلفين فى قاعدتين بيانات مختلفتين !!!؟

إرسال مساهمة في موضوع

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

تعلم كيفية ربط جدولين مختلفين فى قاعدتين بيانات مختلفتين !!!؟

مُساهمة من طرف أبوسجود في الأحد مايو 26, 2013 12:27 pm

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

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

1_ قم بفتح مشروع جديد ...ثم قم بادراج المكتبات التالية للمشروع

Microsoft ActiveX Data Objects 2.6 Library (ADO)
Microsoft ADO Ext. 2.6 for DDL and Security (ADOX)

2_ نقوم بالاعلان عن المتغيرات اللازمة و التى سيتم استخلامها وهى على النحو التالى :

الرمز:
Dim app_path As String
Dim db_file As String
Dim conn As ADODB.Connection
Dim adox_catalog As ADOX.Catalog
Dim adox_table As ADOX.Table
Dim rs As ADODB.Recordset
Dim i As Integer
Dim txt As String

3_ نقوم بالحصول أو معرفة مسار البرنامج و ذلك على النحو التالى :

الرمز:
app_path = App.Path
    If Right$(app_path, 1) <> "" Then app_path = app_path _
        & ""

4_ نقوم بالاتصال و فتح قاعدة البيانات الاولى ...وذلك باستخدام الكود التالى :

الرمز:
db_file = app_path & "Depts.mdb"
    Set conn = New ADODB.Connection
    conn.ConnectionString = _
        "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & db_file & ";" & _
        "Persist Security Info=False"
    conn.Open

5_ نقوم بانشاء ارتباط بالجدول المراد ربطة فى قاعدة البيانات الثانية على أفتراض ان الجدول هو Employees و قادة البيانات الاخرى هى Emp و ذلك على النحو التالى :

الرمز:
    Set adox_catalog = New ADOX.Catalog
   
    Set adox_catalog.ActiveConnection = conn

    Set adox_table = New ADOX.Table
    With adox_table
        Set .ParentCatalog = adox_catalog
        .Name = "LinkedTable"
        .Properties("Jet OLEDB:Link Datasource") = app_path & "Emps.mdb"
        .Properties("Jet OLEDB:Link Provider String") = "MS Access"
        .Properties("Jet OLEDB:Remote Table Name") = "Employees"
        .Properties("Jet OLEDB:Create Link") = True
    End With

فى السطر الاول من الكود أعلاه ...قمنا باشتقاق كائن جديد من adox_catalog

فى السطر الثانى قمنا بتحديد كائن الاتصال للكائن adox_catalog وهو الكائن conn و الذى قام بفتح قاعدة البيانات الاولى ...

فى السطر الثالث قمنا باشتقاق الكائن adox_table و الذى سيقوم بالربط و الاتصال بجدول قاعدة البيانات الثانية

فى السطر الخامس قمنا بتحديد اسم للارتباط وهو LinkedTable

و السطر السادس و السابع قمنا بتحديد قاعدة البيانات الثانية Emps.mdb ونوعها MS Access و جدوها المراد الربط به Employees

6_ إضافة الجدول إلى مجموعة الجداول....بأستخدام الكود التالى :


الرمز:
adox_catalog.Tables.Append adox_table

7_ تنفيذ استعلام لجلب البيانات من الجدولين ....باستخدام الكود التالى :

الرمز:
Set rs = conn.Execute( _
        "SELECT * " & _
        "FROM Departments, LinkedTable " & _
        "WHERE Departments.DepartmentId = LinkedTable.DepartmentId", , _
        adCmdText)

8_ عرض النتائج ....وذلك با ساتخدام الكود التالى :

الرمز:
Do While Not rs.EOF
        txt = txt & rs.Fields(0).Value
        For i = 1 To rs.Fields.Count - 1
            txt = txt & ", " & rs.Fields(i).Value
        Next i
        txt = txt & vbCrLf
       
        rs.MoveNext
    Loop
    rs.Close
    txtResults.Text = txt

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

9_ حذف رابط الاتصال بين الجدولين باستخدام الكود التالى :

الرمز:
 adox_catalog.Tables.Delete "LinkedTable"

10 _ إغلاق قاعدة البيانات الاولى

conn.Close

وفى النهاية أرجوا ان يكون الدرس مفيد ....و اليكم مثال فى المرفقات
المرفقات
Join two tables in different databases.zip لا تتوفر على صلاحيات كافية لتحميل هذه المرفقات.(16 Ko) عدد مرات التنزيل 12

أبوسجود
.....
.....

تاريخ التسجيل: 18/02/2011
المساهمات: 87
النقاط: 162
التقيم: 7
الجنس: ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية ربط جدولين مختلفين فى قاعدتين بيانات مختلفتين !!!؟

مُساهمة من طرف م/موسي في الأحد مايو 26, 2013 12:53 pm

أصحبت من المحترفين يا ابو سجود

م/موسي
الاشراف
الاشراف

تاريخ التسجيل: 18/02/2011
المساهمات: 129
النقاط: 251
التقيم: 8
الدولة : تونس
الجنس: ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية ربط جدولين مختلفين فى قاعدتين بيانات مختلفتين !!!؟

مُساهمة من طرف أبوسجود في الأحد مايو 26, 2013 6:16 pm

دا من بعض ما عندكم يا هندسة

أبوسجود
.....
.....

تاريخ التسجيل: 18/02/2011
المساهمات: 87
النقاط: 162
التقيم: 7
الجنس: ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


صلاحيات هذا المنتدى:
تستطيع الرد على المواضيع في هذا المنتدى