تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] سؤال حول ربط combobox
#1
Heart 
السلام عليكم
سؤال حول كيفية ربط combo عدد 2 ببعضهم
حيث combo 2 تأخذ قيمتها من combo 1

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

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


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


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


الملفات المرفقة
.rar   Test_Relation.rar (الحجم : 192.59 ك ب / التحميلات : 71)
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم
تفضل اخي الكريم
كود :
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
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







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

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

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

هذا هو مقصدي
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , سعود
#4
السلام عليكم اخي الكريم
لم اجرب ماتريد سابقا ربما يجيبك احد الزملاء 
دمت بخير
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: سعود
#5
بارك الله بك أخي وبجهودك
شكرا لك على الإهتمام
الرد }}}
تم الشكر بواسطة: سعود , ابراهيم ايبو
#6
(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

اللهم اني قد نذرت نفسي لمساعدت الاخرين فوفقني وكن لي معين
جاهز لمساعدة اي حد يحتاج لمساعدتي
طبيب اعشق البرمجة . 
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو



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


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