منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] سؤال حول ربط combobox - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] سؤال حول ربط combobox (/showthread.php?tid=33916)



سؤال حول ربط combobox - Al Wilaya - 21-03-20

السلام عليكم
سؤال حول كيفية ربط combo عدد 2 ببعضهم
حيث combo 2 تأخذ قيمتها من combo 1

لدي في combo 1 إسم البلدان وكل بلد لديه عدة مدن
أريد أن تظهر في combo 2 المدن المرتبطة بالبلد فقط الذي أختاره في combo 1

قمت بربط combo 1 مباشرة من جدول الأكسس عبر DataSet1
أنا حللت الأمر عبر الكود لملء combo 2 ولكن لاحظت بأن هناك بطء في إستدعاء البيانات وخاصة عندما تصبح البيانات كثيرة


السؤال هل من الممكن ربط combo 2  من جدول الأكسس عبر DataSet1 ويعمل نفس عمل الكود ؟
 وبذلك أستغني عن الكود
 الرجاء التفضل بكامل الإحترام


مرفق مثال عن المشروع


RE: سؤال حول ربط combobox - ابراهيم ايبو - 21-03-20

السلام عليكم
تفضل اخي الكريم
كود :
Imports System.Data.OleDb
Public Class Form1
   Public con As New OleDbConnection("provider=Microsoft.Ace.OLEDB.12.0;" & "data source=MyData.accdb")

   ' صب لملء اي كومبو
   Private Sub fillCombo(strsql As String, Cmb As ComboBox)
       Try
           Dim dtf As New DataTable
           Dim da As New OleDbDataAdapter(strsql, con)
           dtf.Clear()
           da.Fill(dtf)
           Cmb.DataSource = dtf
       Catch ex As Exception

       End Try
   End Sub
   Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

       fillCombo("SELECT * FROM Data_Country WHERE ID_Country = " & ComboBox1.SelectedValue, ComboBox2)
       ComboBox2.DisplayMember = "City"
       ComboBox2.SelectedIndex = -1
   


   End Sub

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       fillCombo("SELECT * FROM Country", ComboBox1)
       ComboBox1.DisplayMember = "Country"
       ComboBox1.ValueMember = "ID_Country"
       ComboBox1.SelectedIndex = -1
     

 End Sub
End Class



RE: سؤال حول ربط combobox - Al Wilaya - 21-03-20

أخي بارك الله بجهودك الرائعة وحياك الله
لكن سؤالي حول ملء ال combo 2 من combo 1 عبر ربط علاقة وليس عبر الكود

في مثالي المرفق قمت بربط combo 1 مباشرة من الاكسس عبر DataSet

لكن أريد ربط combo 2 عبر ال DataSet مثل ال combo 2 ولكن يأخذ فقط المدن المرتبطة بالبلد الذي أختاره في combo 1 وبذلك أستغني عن الكود حيث تبين لي بأن الكود يأخذ بعض الوقت لتنفيذ الملطوب كلما كثرت البيانات المستدعاة

هذا هو مقصدي


RE: سؤال حول ربط combobox - ابراهيم ايبو - 21-03-20

السلام عليكم اخي الكريم
لم اجرب ماتريد سابقا ربما يجيبك احد الزملاء 
دمت بخير


RE: سؤال حول ربط combobox - Al Wilaya - 21-03-20

بارك الله بك أخي وبجهودك
شكرا لك على الإهتمام


RE: سؤال حول ربط combobox - رضوان الجماعي - 13-02-22

(21-03-20, 04:48 PM)ابراهيم ايبو كتب : السلام عليكم
تفضل اخي الكريم
كود :
Imports System.Data.OleDb
Public Class Form1
   Public con As New OleDbConnection("provider=Microsoft.Ace.OLEDB.12.0;" & "data source=MyData.accdb")

   ' صب لملء اي كومبو
   Private Sub fillCombo(strsql As String, Cmb As ComboBox)
       Try
           Dim dtf As New DataTable
           Dim da As New OleDbDataAdapter(strsql, con)
           dtf.Clear()
           da.Fill(dtf)
           Cmb.DataSource = dtf
       Catch ex As Exception

       End Try
   End Sub
   Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

       fillCombo("SELECT * FROM Data_Country WHERE ID_Country = " & ComboBox1.SelectedValue, ComboBox2)
       ComboBox2.DisplayMember = "City"
       ComboBox2.SelectedIndex = -1
   


   End Sub

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       fillCombo("SELECT * FROM Country", ComboBox1)
       ComboBox1.DisplayMember = "Country"
       ComboBox1.ValueMember = "ID_Country"
       ComboBox1.SelectedIndex = -1
     

 End Sub
End Class
انت رائع للغاية استاذ ابراهيم .

اخي العزيز Alwilaya
طلبك ممكن ولكن ليس عن طريق الاكواد وانما عن طريق خصائص الكمبوابكس بتلاقي خيار اسمه Data فيه خيارين Application Settings والاخر Data Binding