بتـــــاريخ : 3/1/2011 11:24:32 PM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 3132 0


    درس/ربط الفيجوال بالاوراكل ب OO40 للذين يعشقون الفيجوال مع OO40

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

    كلمات مفتاحية  :

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

    1- orasession :
    هذا الشيء يمثل الاساس في النموذج OO40 وهو يقوم بتشغيل التطبيق وانشاء نسخة من الخادم INPROC SERVER وهو يحتوي على وسائل لانشاء الاتصال بقاعدة بيانات اوراكل.


    2- oradatabase :
    يمثل اتصالا بقاعدة بيانات اوراكل وهو يقدم وسائل لتنفيذ عبارات sql


    3- orasqlstmt :
    وهو يستخدم لتنفيذ عبارات DDL مثل CREATE TABLE


    4-oradynaset :
    يمثل النتائج المعادة من عبارة sql وهو مؤشر في جانب العميل يمكن معالجته والتعامل معه
    ويتم انشائه باستخدام العبارة createdynaset للشء oradatabase
    وهنالك المزيد من الاشياء لكن سوف نتطرق لك واحدة في حينها


    5- oraparameters :
    يمثل متغير ربط في عبارة sql وهو يقدم وسائل لإنشاء ومعالجة قيم المعاملات
    (يستخدم لتمرير متغيرات الاجراءات والدوال وعبارات sql )


    6- oraobject :
    يمثل نسخة من اشياء اوراكل المخزنه على شكل جدول


    7- oraparametersarray
    مثل الشيء oraparameters لكن يكون مصفوفة من المعاملات والمتغيرات






    <span style='font-size:14pt;line-height:100%'>بدء العمل مع الاداة وطريقة الاتصال</span>
    طريقة الاتصال بقاعدة بيانات اوراكل:
    اولا:
    نضيف قبل كل شي الاداة من قائمة project ثم reference ثم ابحث عن oracle objects for OLE 3.0 type library
    ثم نقوم بتعريف ثلاث متغيرات :
    الاول متغير من نوع oraseesion وهو لتكوين سيرفر مع القاعدة وفتح القاعدة.
    الثاني متغير من نوع oradatabase وهو للاتصال مع قاعدة البيانات.
    الثالث متغير من نوع oradynasetلتخزين السجلات المستتنتجة.
    ويمن التعريف كمايلي:

    Dim ses As orasession
    Dim database As oradatabase
    Dim dyn As OraDynaset

    ثانيا/
    نكون inprocserver والاتتصال بقاعدة البيانات وهذه ثابته دائم لاتتغيرفي أي عملية اتصال لابد من وجودهما
    Set ses = CreateObject("oracleinprocserver.xorasession")
    ثم نقوم بفتح قاعدة البيانات كمايلي:
    Set database = ses.OpenDatabase("ddd"," scott/tiger",0&)

    حيث:
    Ses : هذا متغير orasession الذي تم فتحه سابقا.
    OpenDatabase : وسيلة لفتح قاعدة البيانات.
    ddd : هذا اسم قاعدة البيانات لديك وهو الاسم الذي اعطيته لقاعدة البيانات اثناء تنزيل الاوراكل.
    " scott/tiger" : هذا اسم الحساب وكلمة المرور وهو افتراضي في اي قاعدة بيانات يوجد بها هذا المستخدم وكلمة مرورة .او يكون لك اسم مستخدم خاص بك وكلمة مرور له.
    0& تمثل حالة القاعدة الابتدائية.
    والعمليتان السابقتين وهما فتح الاتصال وفنح القاعدة لابد منهما في اي كود لكي تتصل بقاعدة البيانات.
    ثالثا/
    نقوم الان بكتابة الاستعلام الذي نريد من أي جدول في قاعدة البيانات كمايلي
    mysql="select * from emp"
    رابعا/
    كيفيه تشغيل الاستعلام(فتح الاستعلام) وتخزين النتائج كما يلي
    Set dyn = database. CreateDynaset (mysql, 0&)

    وذلك باستخدام الامر CreateDynaset للشي oradatabase
    حيث :
    Mysql : تمثل المتغير الذي تم تخزين الاستعلام به وليس شرطا ان يكون نفس الاسم .
    خامس/
    بعد تنفيذ الاستعلام ولو فرضنا ان الجدول في الاستعلام السابق يحتوي على حقلين الاول empno والثاتي ename ونريد بعد تنفيذ الاستعلام ان يقوم بعرضهما في مربعين نص على النموذج
    ويكون كمايلي :
             Text1.Text = dyn.Fields("empno").Value
              Text2.Text = dyn.Fields("ename").Value

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

    Dim ses As orasession
    Dim database As oradatabase
    Dim dyn As OraDynaset
    Set ses = CreateObject("oracleinprocserver.xorasession")
    Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
    sql = "select * from emp"
    Set dyn = database.CreateDynaset(sql, 0&)
    Text1.Text = dyn.Fields("empno")
    Text2.Text = dyn.Fields("ename")

    وبهذا انهينا طريقة الاتصال بالقاعدة والان لنبدء الابحار في وسائل هذه الاداة
    ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,


    اضافة , تحديث , حذف البيانات.
    لنقم بتكوين جدول للقيم بالتطبيق عليه ولنفرض ان الجدول كمايلي:

    salary job S_name S_no
    الراتب الوظيفة الاسم الرقم

    ولانشاء هذا الجدول نذهب الى sql * plus ونكتب الامر
    Create table employee(
    S_no char(9),
    S_name varchar2(50),
    Job varchar2(50),
    Salary number(10));


    وبهذا نكون قد انشاءنا الجدول

    أ- الاضافة ADDNEW :
    هذه الوسيلة تسمح باضافة الصفوف الجديدة إلى dynaset الذي قمنا بانشاءه ولكي نضيف صف جديد الى الجدول employee السابق نقوم بمايلي.
    اولا نقوم بفتح الاتصال وتكوين dynaset كمايلي:
    Dim ses As OraSession
    Dim database As OraDatabase
    Dim dyn As OraDynaset
    Set ses = CreateObject("oracleinprocserver.xorasession")
    Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
    SQL = "select * from employee"
    Set dyn = database.CreateDynaset(SQL, 0&)

    ولكي تضيف صف نقوم بفتح dynaset للاضافة بالوسيلة addnew كمايلي:
    dyn.AddNew
    ثم نقوم باسناد القيم الجديدة لحقول dynaset كمايلي:
    dyn.Fields("s_no").Value = "1000"
    dyn.Fields("s_name").Value = "ddd"
    dyn.Fields("job").Value = "programming"
    dyn.Fields("salary").Value = "5500"


    ثم نقوم بتثبيت هذه المدخلات بالقاعدة باستخدام الامر update لــ dynaset كمايلي: dyn.Update


    وبالتالي يصبح الكود كامل كمايلي.
    الكود كامل :
    Dim ses As OraSession
    Dim database As OraDatabase
    Dim dyn As OraDynaset
    Set ses = CreateObject("oracleinprocserver.xorasession")
    Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
    SQL = "select * from employee"
    Set dyn = database.CreateDynaset(SQL, 0&)
    dyn.AddNew
    dyn.Fields("s_no").Value = "1000"
    dyn.Fields("s_name").Value = "MOHAMMED"
    dyn.Fields("job").Value = "programing"
    dyn.Fields("salary").Value = "5500"
    dyn.Update
    MsgBox "تمت الاضافة بنجاح"

    ويمكنك تطوير البرنامج السابق وجعله اكثر شمولية وذلك بجعل المدخلات يقوم بادخالها المستخدم وذلك كمايلي :
    بانشاء فورم جديد ووضع به اربع مربعات نص وزر امر وداخل زر الامر اكتب الكود التالي:

    Dim ses As OraSession
    Dim database As OraDatabase
    Dim dyn As OraDynaset
    Set ses = CreateObject("oracleinprocserver.xorasession")
    Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
    SQL = "select * from employee"
    Set dyn = database.CreateDynaset(SQL, 0&)
    dyn.AddNew
    dyn.Fields("s_no").Value = TEXT1.TEXT
    dyn.Fields("s_name").Value = TEXT2.TEXT
    dyn.Fields("job").Value = TEXT3.TEXT
    dyn.Fields("salary").Value = TEXT4.TEXT
    dyn.Update
    MsgBox "تمت الاضافة بنجاح"

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

    قم بتطبيق المثال طبقا للخطوات السابقة وسوف تسعد بالنتائج....
    ب – التعديل UPDAET :
    لتعديل اي سجل موجود بالقاعدة نستخدم الامر edit لـ dynaset
    كمايلي:
    اولا نقوم بفتح الاتصال وتكوين dynaset كمايلي :
    Dim ses As OraSession
    Dim database As OraDatabase
    Dim dyn As OraDynaset
    Set ses = CreateObject("oracleinprocserver.xorasession")
    Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
    SQL = "select * from employee where s_no=1000"
    Set dyn = database.CreateDynaset(SQL, 0&)

    ثم نقوم بعملية التعديل كمايلي :
    نقوم اولا يجعل سماحية التعديل على dynaset كمايلي
    Dyn.edit
    ثم نقوم باجراء التغير كمايلي
    Dyn.fields("s_name").value="ali"
    ثم نقوم بثبيت التعديل باستخدام الامر update لـ dynaset كمايلي:
    Dyn.update
    لناخذ مثال على ذلك :
    في جدول employee قم بتعديل راتب الشخص الذي رقمه 1000 ؟
    ويكون كود التعديل كمايلي:
    Dim ses As OraSession
    Dim database As OraDatabase
    Dim dyn As OraDynaset
    Set ses = CreateObject("oracleinprocserver.xorasession")
    Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
    SQL = "select * from employee where s_no=1000"
    Set dyn = database.CreateDynaset(SQL, 0&)
    Dyn.edit
    Dyn.fields("salary").value="6000"
    Dyn.update
    MsgBox "تم التعديل"

    ويهذا يكون تم التعديل على قاعدة البيانات.



    ج- الحذف DELETE :
    لحذف اي سجل موجود في القاعدة نستخدم delete لـ dynaset
    وللبداية بحذف سجل
    اولا نقوم بفتح الاتصال وتكوين dynaset كمايلي:
    Dim ses As OraSession
    Dim database As OraDatabase
    Dim dyn As OraDynaset
    Set ses = CreateObject("oracleinprocserver.xorasession")
    Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
    SQL = "select * from employee where s_no=1000"
    Set dyn = database.CreateDynaset(SQL, 0&)
    ثم نقوم بعملية الحذف كمايلي:
    Dyn.delete
    وبالتالي يصبح الكود كامل كمايلي:

    Dim ses As OraSession
    Dim database As OraDatabase
    Dim dyn As OraDynaset
    Set ses = CreateObject("oracleinprocserver.xorasession")
    Set database = ses.OpenDatabase("ddd", "scott/tiger", 0&)
    SQL = "select * from employee where s_no=1000"
    Set dyn = database.CreateDynaset(SQL, 0&)
    dyn.Delete
    MsgBox "تم الحذف"
    وبهذا يتم الحذف




    وراح إن شاء الله اضيف في وقت ثاني طريقة استخدام الكود نفسه مع الفيجوال نت مع تغير فرق بسيط

    كلمات مفتاحية  :

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