تقييم الموضوع :
  • 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
إستخدم للتحديث اوامر الاتصال المتصل بحيث يقرا معرف كل عمود بشكل مستقل عن العمود المربوط.
الرد }}}
تم الشكر بواسطة: مبرمج بلا حدود


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  استعلام من عدة جداول لقاعدة بيانات اكسس Adel27213 1 702 07-11-23, 08:27 AM
آخر رد: justforit
  [سؤال] عدم إظهار الصور مع النص فى Listview من قاعدة البيانات alims 2 1,581 27-08-23, 12:22 PM
آخر رد: رضوان الجماعي
  [SQL] استفسار عن طريقة تحزم قواعد بيانات MSSQL مع البرنامج VB.NET2019 salemq 2 530 18-05-23, 03:02 AM
آخر رد: سعود
  ما معني بيانات تقع بين الرمز[] في حقل في داتا بيس bassant 3 672 03-04-23, 11:53 PM
آخر رد: sanyor77
  [نقاش] مشاركة قاعدة بيانات SQL على شبكه داخليه morkoskhalaf 3 3,009 06-01-23, 03:20 AM
آخر رد: عبدالكريم برشدان
  قاعدة بيانات xml djelloul 3 2,799 07-11-22, 10:27 PM
آخر رد: Am7
  [عنوان معدل]حفظ بيانات listbox fhad24 36 12,240 08-10-22, 06:55 PM
آخر رد: رضوان الجماعي
  استفسار عن تخزين الوقت في قاعدة البيانات strongriseman 2 1,126 22-04-22, 07:27 PM
آخر رد: strongriseman
  [سؤال] مشكلة فى عرض الصورة من ادخل قاعدة البيانات alims 2 1,264 17-11-21, 10:09 AM
آخر رد: سعود
  كيف اتجنب أخطاء ارسال قيم فارغة الى حقول رقمية في اكسس بسام محمدغانم 2 1,135 09-11-21, 02:09 AM
آخر رد: Anas Mahmoud

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


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