تم النشر منذ 10 Mar 2014 السلام عليكملو كان لدي داتاسيت تحتوي على جدولين واريد استرجع القيم الناتجة من الربط منهم من خلال اجراء استعلام بين جداول الداتاسيت جدول 1 داخل الداتاسيتidfnameجدول 2 داخل الداتاسيتidsalaryاريد ان اربطهم واسترجع الراتب الذي اعلى من 10000 يرجى المساعدةمع الشكر والتقدير 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 17 Mar 2014 الموضوع أبسط من ذلك أخى استخدم جملة LinqمثالDim qry As IEnumerable(Of DataRow) = From row In ds.Tables("tbl1").AsEnumerable(), row2 In ds.Tables("tbl2").AsEnumerable() Where (row.Field(Of Integer)("id") = row2.Field(Of Integer)("id")) And row2.Field(Of Integer)("sallary") > 1000 Select row2ابحث عن Linq to datasetاو ضع ما تريده بالتفصيل لاعطيك الجمله التى تريدها 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 14 Mar 2014 Dim SQLstr As String = "SELECT t1.id,t1.fname,t2.salary FROM T1 ,t2 where t2.salary > 10000" 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 14 Mar 2014 (معدل) طريقة أخرى للإستعلام باستخدام INNER JOIN Dim sql As String = _ " SELECT * " & _ " FROM [table1] " & _ " " & _ " INNER JOIN [table2] " & _ " ON ([table2].[id] = [table1].[id]) " & _ " " & _ " WHERE ([table2].[salary] > 10000) " تم تعديل 14 Mar 2014 بواسطه vbnetvbnet 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 14 Mar 2014 (معدل) إذا كنت تستخدم داتاسيت جاهزة بالبيانات لديك فإليك مثال على طلبك، حاولت فيه التبسيط قدر المستطاع فقط أضف بوتون باسم Button1 وجرب المثال(ستلاحظ وجود إجراء CreateDataSet لإنشاء داتاسيت برمجياً مع تعبئتة بجداول وبيانات وهو فقط لتجربة المثال ولا يلزمك في النهاية)(لا تنس بعد التجربة أت تستبدل اسم dataset1 باسم الداتاسيت التي لديك والاستغناء عن الاجراء CreateDataSet) Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '' استخدم اسم الداتاست التي لديك بدلا من '' dataset1 '' واستغن عن الدالة '' CreateDataSet '' مع حذف السطر التالي Dim dataset1 As DataSet = CreateDataSet() '' إنشاء داتاست للتجربة '' الذي يهمك من هنا =============== Dim resultRows() As DataRow = dataset1.Tables("table2").Select("salary > 10000") For i = 0 To resultRows.Count - 1 Dim fname As String = dataset1.Tables("table1").Select("id=" & resultRows(i).Item("id"))(0).Item("fname") Dim salary As String = dataset1.Tables("table2").Select("id=" & resultRows(i).Item("id"))(0).Item("salary") '' '' عرض السطر الناتج بشكل منسق MsgBox(String.Format( _ "Name: " & vbTab & "{1}{0}" & _ "Salary: " & vbTab & "{2}{0}" _ , vbNewLine, fname, salary)) Next '' إلى هنا =============== End Subدالة CreateDataSet لإنشاء داتاست برمجياً '' دالة إنشاء داتاست برمجياً وتعبئتها بجداول وبيانات للتجربة =============================== Private Function CreateDataSet() As DataSet Dim ds As New DataSet ds.Tables.Add("table1") ds.Tables("table1").Columns.Add(New DataColumn("id", GetType(Integer))) ds.Tables("table1").Columns.Add(New DataColumn("fname", GetType(String))) ds.Tables("table1").Rows.Add(1, "ahmed") ds.Tables("table1").Rows.Add(2, "salem") ds.Tables("table1").Rows.Add(3, "wael") ds.Tables("table1").Rows.Add(4, "nabil") ds.Tables("table1").Rows.Add(5, "hesham") ds.Tables.Add("table2") ds.Tables("table2").Columns.Add(New DataColumn("id", GetType(Integer))) ds.Tables("table2").Columns.Add(New DataColumn("salary", GetType(Double))) ds.Tables("table2").Rows.Add(1, 8252.23) ds.Tables("table2").Rows.Add(2, 11254.57) ds.Tables("table2").Rows.Add(3, 7253.89) ds.Tables("table2").Rows.Add(4, 10120.11) ds.Tables("table2").Rows.Add(5, 9802.32) Return ds End Functionالله يوفقك تم تعديل 14 Mar 2014 بواسطه vbnetvbnet 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 15 Mar 2014 مشكور على الردولكني اريد ان اسوي استعلام بين الجدولين بدول استخدام for و if يعني اربط الجدول الاول من الداتاسين مع الجدول الثاني من الداتاسيت من خلال شفرة sql انا حاولت اربط الجدولين باستخدام relation ولكن تستخدم فقط مفتاح ربط واحد وكذلك تستخدم في حالة المفتاح نفس الاسم للجدولينفهل هناك طريقة للربط بدون استخدام الfor مع الشكر والتقديرإذا كنت تستخدم داتاسيت جاهزة بالبيانات لديك فإليك مثال على طلبك، حاولت فيه التبسيط قدر المستطاع فقط أضف بوتون باسم Button1 وجرب المثال(ستلاحظ وجود إجراء CreateDataSet لإنشاء داتاسيت برمجياً مع تعبئتة بجداول وبيانات وهو فقط لتجربة المثال ولا يلزمك في النهاية)(لا تنس بعد التجربة أت تستبدل اسم dataset1 باسم الداتاسيت التي لديك والاستغناء عن الاجراء CreateDataSet) Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '' استخدم اسم الداتاست التي لديك بدلا من '' dataset1 '' واستغن عن الدالة '' CreateDataSet '' مع حذف السطر التالي Dim dataset1 As DataSet = CreateDataSet() '' إنشاء داتاست للتجربة '' الذي يهمك من هنا =============== Dim resultRows() As DataRow = dataset1.Tables("table2").Select("salary > 10000") For i = 0 To resultRows.Count - 1 Dim fname As String = dataset1.Tables("table1").Select("id=" & resultRows(i).Item("id"))(0).Item("fname") Dim salary As String = dataset1.Tables("table2").Select("id=" & resultRows(i).Item("id"))(0).Item("salary") '' '' عرض السطر الناتج بشكل منسق MsgBox(String.Format( _ "Name: " & vbTab & "{1}{0}" & _ "Salary: " & vbTab & "{2}{0}" _ , vbNewLine, fname, salary)) Next '' إلى هنا =============== End Subدالة CreateDataSet لإنشاء داتاست برمجياً '' دالة إنشاء داتاست برمجياً وتعبئتها بجداول وبيانات للتجربة =============================== Private Function CreateDataSet() As DataSet Dim ds As New DataSet ds.Tables.Add("table1") ds.Tables("table1").Columns.Add(New DataColumn("id", GetType(Integer))) ds.Tables("table1").Columns.Add(New DataColumn("fname", GetType(String))) ds.Tables("table1").Rows.Add(1, "ahmed") ds.Tables("table1").Rows.Add(2, "salem") ds.Tables("table1").Rows.Add(3, "wael") ds.Tables("table1").Rows.Add(4, "nabil") ds.Tables("table1").Rows.Add(5, "hesham") ds.Tables.Add("table2") ds.Tables("table2").Columns.Add(New DataColumn("id", GetType(Integer))) ds.Tables("table2").Columns.Add(New DataColumn("salary", GetType(Double))) ds.Tables("table2").Rows.Add(1, 8252.23) ds.Tables("table2").Rows.Add(2, 11254.57) ds.Tables("table2").Rows.Add(3, 7253.89) ds.Tables("table2").Rows.Add(4, 10120.11) ds.Tables("table2").Rows.Add(5, 9802.32) Return ds End Functionالله يوفقك 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 23 Mar 2014 مع الشكر والتقديروكيف اخزن الناتج في الداتاتيبل وثم اعرضة في الكردفيوالموضوع أبسط من ذلك أخى استخدم جملة LinqمثالDim qry As IEnumerable(Of DataRow) = From row In ds.Tables("tbl1").AsEnumerable(), row2 In ds.Tables("tbl2").AsEnumerable() Where (row.Field(Of Integer)("id") = row2.Field(Of Integer)("id")) And row2.Field(Of Integer)("sallary") > 1000 Select row2ابحث عن Linq to datasetاو ضع ما تريده بالتفصيل لاعطيك الجمله التى تريدها 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 24 Mar 2014 انا اؤيد طريقة ِAbo_Yossof باستعمال Linq to Dataset وكيف اخزن الناتج في الداتاتيبل وثم اعرضة في الكردفيوليس هناك داعي لحفظ النتيجة في datatable اذا افترضنا code كما استعمله Abo_YossofDim qry As IEnumerable(Of DataRow) = From row In ds.Tables("tbl1").AsEnumerable(), row2 In ds.Tables("tbl2").AsEnumerable() Where (row.Field(Of Integer)("id") = row2.Field(Of Integer)("id")) And row2.Field(Of Integer)("sallary") > 1000 Select row2 Dim bs As New BindingSource bs.DataSource = qry.ToList DataGridView1.datasource = bs 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 25 Mar 2014 اشكركم على الرد وجزاكم الله خيراً 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 2 Apr 2014 السلام عليكمطبقت الشفرة التاليةFinalDS.Tables.Add(dt_DB1) FinalDS.Tables.Add(dt_DB2) Dim qry As IEnumerable(Of DataRow) = From row In FinalDS.Tables(0).AsEnumerable(), row2 In FinalDS.Tables(1).AsEnumerable() Where (row.Field(Of Integer)(feildneeded.Text) = row2.Field(Of Integer)(FieldTo.Text)) Select row Dim bs As New BindingSource bs.DataSource = qry.ToList Dd.DataSource = bsولكن الناتج يظهر الحقولRowError, Rowstate, Table, HasErrorولا يظهر لي حقول البياناتفما هو الحلمع الشكر والتقدير 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 4 Apr 2014 بامكانك استعمال qty.CopyToDataTable ولكن هذا سوف لن يعطيك نتيجة صحيحة حيث انك لما عملت select row سوف تخنار الحقول من جدول واحد فقط وهي id و name ولن ياتي بي حقل salary هذا الكود ياتيك بهم Dim qry = From t1 In ds.Tables(0), t2 In ds.Tables(1) Where t1("id") = t2("id") Select New With {.id=t1("id"),.name=t1("fname"),.salary=t2("salary")} Dim bs As New BindingSource bs.DataSource = qry dataGridView1.DataSource = bs 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
تم النشر منذ
السلام عليكم
لو كان لدي داتاسيت تحتوي على جدولين واريد استرجع القيم الناتجة من الربط منهم من خلال اجراء استعلام بين جداول الداتاسيت
جدول 1 داخل الداتاسيت
id
fname
جدول 2 داخل الداتاسيت
id
salary
اريد ان اربطهم واسترجع الراتب الذي اعلى من 10000
يرجى المساعدة
مع الشكر والتقدير
شارك هذا الرد
رابط المشاركة
شارك الرد من خلال المواقع ادناه