تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] تحديث اكثر من جدول داخل قاعدة بيانات اكسس
#1
Lightbulb 
بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته 

اخوتي احبتي في الله 
اساتذتي الكرام حياكم الله وبياكم وللجنة سهل الله خطاي وخطاكم 
وفقكم الله 

لدي سؤال حول تحديث بيانات اكثر من جدول داخل قاعدة بيانات من نوع اكسس ، انا لدي كود لقاعدة بيانات اكسس 2003 والكود عائد للاستاذ (ابو ايهاب) جزاه الله عنا خير وجعله الله صدقة جارية له وانا فقط غيرت فيه
هذا الكود 

'تحديث قاعدة البيانات
con.Open()
dss.Clear()
da.Fill(dss, "T_Information")
con.Close()

حيث dss تمثل الداتا سيت ، والـ da داتا ادبتر
طيب اذا لدينا اكثر من جدول مثلاً جدولين او ثلاثة ماهو الكود لعمل ذلكـ 

جزاكم الله خير وباركـ الله فيكم
حفظكم الله
الرد }}}}
تم الشكر بواسطة:
#2
سلام

هذا ابسط مثال على اساس لديك متغير ID فيه رقم السجل ومتطابق في كل جدول وهنا افترضت ان الجداول مترابطه
كود :
Dim connectionString As String = "Provider=.......الى اخره"

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Using con As New OleDbConnection(connectionString)
        con.Open()

        Dim tran As OleDbTransaction
        tran = con.BeginTransaction

        Using cmd As New OleDbCommand(Nothing, con)

            cmd.Transaction = tran


            cmd.CommandText = "UPDATE [table1] SET ([col1]=?, [col2]=? WHERE [id]=? "
            cmd.Parameters.Clear()
            cmd.Parameters.AddWithValue("@col1", txt_Name.Text.Trim)
            cmd.Parameters.AddWithValue("@col2", txt_phone.Text.Trim)
            cmd.Parameters.AddWithValue("@id", ID)
            Dim update1 As Integer = cmd.ExecuteNonQuery()

            cmd.CommandText = "UPDATE [table2] SET ([col1]=?, [col2]=? WHERE [id]=? "
            cmd.Parameters.Clear()
            cmd.Parameters.AddWithValue("@col1", txt_Name.Text.Trim)
            cmd.Parameters.AddWithValue("@col2", txt_phone.Text.Trim)
            cmd.Parameters.AddWithValue("@id", ID)
            Dim update2 As Integer = cmd.ExecuteNonQuery()

            cmd.CommandText = "UPDATE [table3] SET ([col1]=?, [col2]=? WHERE [id]=? "
            cmd.Parameters.Clear()
            cmd.Parameters.AddWithValue("@col1", txt_Name.Text.Trim)
            cmd.Parameters.AddWithValue("@col2", txt_phone.Text.Trim)
            cmd.Parameters.AddWithValue("@id", ID)
            Dim update3 As Integer = cmd.ExecuteNonQuery()


            If (update1 > 0) And (update2 > 0) And (update3 > 0) Then
                tran.Commit()
                MsgBox("تمت الاضافة")
            Else
                tran.Rollback()
                MsgBox("فشلت الاضافة")
            End If

        End Using

        con.Close()
    End Using
End Sub

موفقين
متغيب
الرد }}}}
تم الشكر بواسطة: مبرمج بلا حدود
#3
(19-08-15, 10:42 PM)الطالب كتب : سلام

هذا ابسط مثال على اساس لديك متغير ID فيه رقم السجل ومتطابق في كل جدول وهنا افترضت ان الجداول مترابطه
كود :
Dim connectionString As String = "Provider=.......الى اخره"

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   Using con As New OleDbConnection(connectionString)
       con.Open()

       Dim tran As OleDbTransaction
       tran = con.BeginTransaction

       Using cmd As New OleDbCommand(Nothing, con)

           cmd.Transaction = tran


           cmd.CommandText = "UPDATE [table1] SET ([col1]=?, [col2]=? WHERE [id]=? "
           cmd.Parameters.Clear()
           cmd.Parameters.AddWithValue("@col1", txt_Name.Text.Trim)
           cmd.Parameters.AddWithValue("@col2", txt_phone.Text.Trim)
           cmd.Parameters.AddWithValue("@id", ID)
           Dim update1 As Integer = cmd.ExecuteNonQuery()

           cmd.CommandText = "UPDATE [table2] SET ([col1]=?, [col2]=? WHERE [id]=? "
           cmd.Parameters.Clear()
           cmd.Parameters.AddWithValue("@col1", txt_Name.Text.Trim)
           cmd.Parameters.AddWithValue("@col2", txt_phone.Text.Trim)
           cmd.Parameters.AddWithValue("@id", ID)
           Dim update2 As Integer = cmd.ExecuteNonQuery()

           cmd.CommandText = "UPDATE [table3] SET ([col1]=?, [col2]=? WHERE [id]=? "
           cmd.Parameters.Clear()
           cmd.Parameters.AddWithValue("@col1", txt_Name.Text.Trim)
           cmd.Parameters.AddWithValue("@col2", txt_phone.Text.Trim)
           cmd.Parameters.AddWithValue("@id", ID)
           Dim update3 As Integer = cmd.ExecuteNonQuery()


           If (update1 > 0) And (update2 > 0) And (update3 > 0) Then
               tran.Commit()
               MsgBox("تمت الاضافة")
           Else
               tran.Rollback()
               MsgBox("فشلت الاضافة")
           End If

       End Using

       con.Close()
   End Using
End Sub

موفقين

وعليكم السلام ورحمة الله وبركاته 
جزاكـ الله خير وباركـ الله فيكـ 
العفو اخي واستاذي الفاضل ربي يحفظكـ 
انا لم اقصد تحديث يعني تعديل  Blush
انا قصدت تحديث مثل الرفريش يعني انعاش  Angel
والجدولين غير مرتطبين جزاكـ الله الجنة
اتمنى تكون وصلت الفكرة ربي يحفظكـ

وعذرا لهذه الخطأ الحاصل من قبلي في عدم التوضيح 
ارجوا المعذرة 
باركـ الله فيكـ
الرد }}}}
تم الشكر بواسطة:
#4
إليك هذا المثال أخي العزيز
PHP كود :
Private conn As OleDbConnection = New OleDbConnection(connStr)
conn.Open()
Dim str As String "SELECT * FROM Heading"
Dim da1 As OleDbDataAdapter = New OleDbDataAdapter(strconn)
Dim ds1 As DataSet = New DataSet("Heading")
da1.Fill(ds1"Heading")
Dim ds2 As DataSet = New DataSet("SubHead")
str "SELECT * FROM SubHeading"
Dim da2 As OleDbDataAdapter = New OleDbDataAdapter(strconn)
da2.Fill(ds2"SubHeading")
Dim ds3 As DataSet = New DataSet("Link")
str "SELECT * FROM Link"
Dim da3 As OleDbDataAdapter = New OleDbDataAdapter(strconn)
da3.Fill(ds3"Link")
ds1.Merge(ds2)
ds1.Merge(ds3)
dataGrid1.DataSource ds1.DefaultViewManager
conn
.Close() 
أتمنى لك التوفيق
الرد }}}}
تم الشكر بواسطة: مبرمج بلا حدود
#5
(19-08-15, 11:14 PM)khodor1985 كتب : إليك هذا المثال أخي العزيز
PHP كود :
Private conn As OleDbConnection = New OleDbConnection(connStr)
conn.Open()
Dim str As String "SELECT * FROM Heading"
Dim da1 As OleDbDataAdapter = New OleDbDataAdapter(strconn)
Dim ds1 As DataSet = New DataSet("Heading")
da1.Fill(ds1"Heading")
Dim ds2 As DataSet = New DataSet("SubHead")
str "SELECT * FROM SubHeading"
Dim da2 As OleDbDataAdapter = New OleDbDataAdapter(strconn)
da2.Fill(ds2"SubHeading")
Dim ds3 As DataSet = New DataSet("Link")
str "SELECT * FROM Link"
Dim da3 As OleDbDataAdapter = New OleDbDataAdapter(strconn)
da3.Fill(ds3"Link")
ds1.Merge(ds2)
ds1.Merge(ds3)
dataGrid1.DataSource ds1.DefaultViewManager
conn
.Close() 
أتمنى لك التوفيق

السلام عليكم ورحمة الله وبركاته 
جزاكـ الله خير اخي وباركـ الله فيكـ ربي يحفظكـ 
لدي عدة استفسارات :Smile
هل تقصد Heading اسم الجدول الاول ، والـ SubHeading اسم الجدول الثاني . 
وهناكـ متغيرات لم اعرف فائدتهن (اعذرني على قصر معرفتي باركـ الله فيكـ)
انا هذه طريقة ربطا لقاعدة لدي 
PHP كود :
Public constr As String "provider=microsoft.ace.oledb.12.0; data source=|datadirectory|\DB_Pharmacy.accdb;jet oledb:database password=ph2015"
 
   Public con As New OleDbConnection(constr
الرد }}}}
تم الشكر بواسطة:
#6
نعم صحيح فقد اجتزءت من الكود
ولكن ما تفكر به صحيح
الرد }}}}
تم الشكر بواسطة: مبرمج بلا حدود
#7
(19-08-15, 11:32 PM)khodor1985 كتب : نعم صحيح فقد اجتزءت من الكود
ولكن ما تفكر به صحيح

جزاكـ الله خير وباركـ الله فيكـ 
ربي يعزكـ ويعلي منزلتكـ 

جاري التجربة وعائد بعد ذلكـ ان شاءالله 
طيب سؤال قبل التجربة (اعذرني على كثرة اسئلتي)
انا استخدم con  هل استخدمة هو ام ما كتبته انت اقصد conn (اعرف انه مجرب تعريف متغير ولكن للاطمئنان)

انا رابط القاعدة عن طريق constr هل استخدمه هو اسم ما تبته حضرتكـ connstr
واعتقد هذه لن احتاجها 
ds1.Merge(ds2)
ds1.Merge(ds3)
dataGrid1.DataSource ds1.DefaultViewManager
لانها تخص الداتا غريد 
بإنتظار ملاحظاتكم حفظكـ الله 
الرد }}}}
تم الشكر بواسطة:
#8
نعم صحيح ما في مشكلة أخي العزيز

ملاحظة أخي العزيز
المنطق البرمجي يقول أن كل DataAdapter يغذي DataTable واحد فقط
فإذا تعددت الجداول فلا بد من إنشاء DataAdapter لكل DataTable

ما هي وظيفة DataAdapter ؟
إستقبال البيانات من قاعدة البيانات وتغذية DataTable أو DataSet أو التأثير على قاعدة البيانات من خلال SqlCommand، فلا يمكن للـ DataAdapter أن يقوم بالتأثير على قاعدة البيانات إلا من خلال أمر وهذا الأمر يتضمن الجملة التنفيذية كـ Insert,Delete,Update.

وعليه، لا بد من إنشاء أكثر من DataAdapter في حالة تعدد DataTable.
أتمنى لك التوفيق
الرد }}}}
تم الشكر بواسطة: مبرمج بلا حدود
#9
(19-08-15, 11:54 PM)khodor1985 كتب : نعم صحيح ما في مشكلة أخي العزيز

ملاحظة أخي العزيز
المنطق البرمجي يقول أن كل DataAdapter يغذي DataTable واحد فقط
فإذا تعددت الجداول فلا بد من إنشاء DataAdapter لكل DataTable

ما هي وظيفة DataAdapter ؟
إستقبال البيانات من قاعدة البيانات وتغذية  DataTable أو  DataSet أو التأثير على قاعدة البيانات من خلال SqlCommand، فلا يمكن للـ DataAdapter أن يقوم بالتأثير على قاعدة البيانات إلا من خلال أمر وهذا الأمر يتضمن الجملة التنفيذية كـ Insert,Delete,Update.

وعليه، لا بد من إنشاء أكثر من DataAdapter في حالة تعدد DataTable.
أتمنى لك التوفيق

جزاكـ الله خير على التوضيح الان وضحت اكثر (اقولكـ شي الصراحة لم اكن اعرف معناها الا الان Blush  ) الله يجزيكـ خير عني وعن المسلمين
باركـ الله فيكـ ، وابشركـ الكود يعمل والحمدلله تمام التمام جزاكـ ربي الجنة 
الحمدلله الذي بنعمته تتم الصالحات 

بقى لدي استفسار ، استفساري لتلافي المشاكل التي قد تحدث 
هل استبدل con.open 
بهذا الكود 
        If con.State = ConnectionState.Closed Then
            con.Open()
        End If
لو تعتقد لا يوجد داعي لهذا
الرد }}}}
تم الشكر بواسطة:
#10
إستخدم للتحديث اوامر الاتصال المتصل بحيث يقرا معرف كل عمود بشكل مستقل عن العمود المربوط.
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة: مبرمج بلا حدود


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشكلة في تصميم قاعدة البيانات djelloul 2 36 06-12-16, 12:36 PM
آخر رد: djelloul
  ابي اربط برنامجي بسيرفر او قاعده بيانات مبارك 3 183 22-11-16, 02:57 PM
آخر رد: مبارك
  [سؤال] المساعدة في نقل سجلات من جدول الى جدول اخر مهندس حيدر 7 278 13-11-16, 02:16 PM
آخر رد: محمود بكرى
  [سؤال] كيفية اضافة عناصر عمود فى جدول من قاعدة بيانات فى جدول اخر hidn 1 173 04-11-16, 09:25 AM
آخر رد: thevirus
  [VB.NET] مثال على جلب ارقام من قاعدة البيانات وحفظها في مصفوفة بدر إشتية 4 354 02-11-16, 02:42 AM
آخر رد: Ahmad ahmed
  [سؤال] قراءة رابط من قاعدة بيانات في ادة التصفح شمس الدين 03 2 84 27-10-16, 10:43 PM
آخر رد: شمس الدين 03
  كيفية الاتصال بقاعدة بيانات Access على الشبكة المحلية warda saeed 7 7,239 27-10-16, 09:53 PM
آخر رد: thevirus
  مساعدة في بناء قاعدة hglogtd 4 137 05-10-16, 03:48 PM
آخر رد: hglogtd
  استفسار حول طريقتي في قاعدة البيانات صبري زينوبي 0 81 29-09-16, 04:35 PM
آخر رد: صبري زينوبي
  ربط قاعدة بيانات اكسس بفجوال دوت نت 2015 كنونو 0 125 26-09-16, 01:35 PM
آخر رد: كنونو

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم