تقييم الموضوع :
  • 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.
أتمنى لك التوفيق
واعبد ربك حتى يأتيك اليقين
الرد
تم الشكر بواسطة: مبرمج بلا حدود , mr_hso
#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
إستخدم للتحديث اوامر الاتصال المتصل بحيث يقرا معرف كل عمود بشكل مستقل عن العمود المربوط.
[صورة مرفقة: msp.png]
الرد
تم الشكر بواسطة: مبرمج بلا حدود


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كود حذف صورة من جدول اكسس samira20 1 135 05-07-19, 07:50 PM
آخر رد: elgokr
  منع التكرار في اضافة بيانات لقاعدة بيانات أكسس vb.net ahmedshafea 3 5,694 01-07-19, 12:28 PM
آخر رد: essamprog
  الربط بين جهازين لقاعدة بيانات واحده makky 11 432 23-06-19, 12:07 AM
آخر رد: حريف برمجة
Information [سؤال] انشاء قاعدة بيانات access واضافة جدول وحقول بكود vb.net fefooo29 4 3,574 10-06-19, 09:31 PM
آخر رد: sherf
  مساعدة في تصميم قاعدة بيانات ادارة ساعات عمل الموظفين Rabeea Qbaha 6 241 06-06-19, 12:23 AM
آخر رد: elgokr
  استدعاء بيانات من اكثر من جدول المتألق9 1 212 04-06-19, 10:29 PM
آخر رد: احمد نعمة السلامي
  [VB.NET] رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# sniperjawadino 11 601 28-05-19, 10:50 PM
آخر رد: sniperjawadino
  قاعدة البيانات بتقفل كل شوية احمد خطاب 5 328 11-05-19, 04:24 AM
آخر رد: احمد خطاب
  عرض اسم عميلين في جدول العملاء بشرط ارقامهم بجدول اخر يونس علي 1 193 26-04-19, 03:16 AM
آخر رد: محمد كريّم
  [VB.NET] قاعدة بيانات postgress tarek 2 285 06-04-19, 09:07 PM
آخر رد: elgokr

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


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