الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكنني عمل Update لل Dataset مع العلم ان ال Dataset مرتبطة بعدة جداول بواسطة جملة ال Outer Join,, ؟؟

بدأه lo2i في 24 ديسمبر 2009 · 5 رد · 2,310 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

صبحكم الله بالخير

عندي استفسار بسيط لو تفضلتوا ,,,

كيف يمكن عمل تحديث للداتاسيت وعلماً ان الداتاسيت مرتبطة بجدوليين من قاعدة البيانات بواسطة جملة ال sql ,,,, left outer join

وهذه هي الاكواد

Imports System.Data.OleDb
Public Class Form1
    Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0; data source =" & Application.StartupPath & "/db.mdb")
    Dim ds As New DataSet
    Dim da As New OleDbDataAdapter("SELECT emp.name,ex.be FROM(emp)left outer JOIN ex ON emp.id = ex.Id order by emp.name", con)

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim bUL As New OleDbCommandBuilder(da)
        con.Open()
        Me.DataGridView1.DataSource = ds.Tables("st")
        da.Update(ds, "st")
        Me.DataGridView1.Refresh()
        con.Close()
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        con.Open()
        ds.Clear()
        da.Fill(ds, "st")
        con.Close()
        DataGridView1.DataSource = ds
        DataGridView1.DataMember = "st"
    End Sub
End Class

والخطأ الذي يخرج هو ,,, {"Dynamic SQL generation is not supported against multiple base tables."}

اي ان هذه الخاصية لا تدعم الجداول المرتبطة :(

هل يوجد تعديل للكود ام ان هناك طريقة اخرى

افيدوني افادكم الله ,,

اخوكم لؤي !

.

#2

ياشباب بارك الله فيكم هل من حل !! :)

ياشباب بارك الله فيكم هل من حل !! :)

.

#3

لا يمكن الا في طريقه واحده انك تعمل جمل ال sql بشكل يدوي مع برامترز

اقصد بجمل الاضافه والتعديل والحذف ..

ادخل الداتاست واختار ال table adapter

بالخصائص يمكنك اضافة الجمل

InsertCommand

SelectCommand

UpdateCommand

DeleteCommand

انصحك بكتابة الجمل في StoredProcedure اسهل... غير الخاصيه CommandType

بالتوفيق

#4
naji-m كتب:

لا يمكن الا في طريقه واحده انك تعمل جمل ال sql بشكل يدوي مع برامترز

اقصد بجمل الاضافه والتعديل والحذف ..

ادخل الداتاست واختار ال table adapter

بالخصائص يمكنك اضافة الجمل

InsertCommand

SelectCommand

UpdateCommand

DeleteCommand

انصحك بكتابة الجمل في StoredProcedure اسهل... غير الخاصيه CommandType

بالتوفيق

السلام عليكم ,,

وفقك الله اخي الكريم ,, لو تكرمت هل لي بمثال بسيط على ال stored procedure ...

تحياتي ..

naji-m كتب:

لا يمكن الا في طريقه واحده انك تعمل جمل ال sql بشكل يدوي مع برامترز

اقصد بجمل الاضافه والتعديل والحذف ..

ادخل الداتاست واختار ال table adapter

بالخصائص يمكنك اضافة الجمل

InsertCommand

SelectCommand

UpdateCommand

DeleteCommand

انصحك بكتابة الجمل في StoredProcedure اسهل... غير الخاصيه CommandType

بالتوفيق

السلام عليكم ,,

وفقك الله اخي الكريم ,, لو تكرمت هل لي بمثال بسيط على ال stored procedure ...

تحياتي ..

.

#5
lo2i كتب:

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

صبحكم الله بالخير

عندي استفسار بسيط لو تفضلتوا ,,,

كيف يمكن عمل تحديث للداتاسيت وعلماً ان الداتاسيت مرتبطة بجدوليين من قاعدة البيانات بواسطة جملة ال sql ,,,, left outer join

وهذه هي الاكواد

Imports System.Data.OleDb
Public Class Form1
    Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0; data source =" & Application.StartupPath & "/db.mdb")
    Dim ds As New DataSet
    Dim da As New OleDbDataAdapter("SELECT emp.name,ex.be FROM(emp)left outer JOIN ex ON emp.id = ex.Id order by emp.name", con)

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim bUL As New OleDbCommandBuilder(da)
        con.Open()
        Me.DataGridView1.DataSource = ds.Tables("st")
        da.Update(ds, "st")
        Me.DataGridView1.Refresh()
        con.Close()
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        con.Open()
        ds.Clear()
        da.Fill(ds, "st")
        con.Close()
        DataGridView1.DataSource = ds
        DataGridView1.DataMember = "st"
    End Sub
End Class

والخطأ الذي يخرج هو ,,, {"Dynamic SQL generation is not supported against multiple base tables."}

اي ان هذه الخاصية لا تدعم الجداول المرتبطة :(

هل يوجد تعديل للكود ام ان هناك طريقة اخرى

افيدوني افادكم الله ,,

اخوكم لؤي !

[/quote

tفعل خاصية cascade في ال update حتي يتم التحديث في الجداول بشكل تام في الجداول لتي بينها علاقة (ارجع الي قاعدة البيانات وتاكد من تفعيلها بين الجداول المترابطة ام لا )

#6

بارك الله فيك اخي الكريم ,, امر ال cascade مُفعل في العلاقات ,, :)

ولكنه لايعمل

.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…