تقييم الموضوع :
  • 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 ك ب / التحميلات : 83)
الرد }}}
تم الشكر بواسطة:
#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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  سؤال عن الاسمبلي و النيم سبيس justforit 0 103 07-12-25, 12:28 AM
آخر رد: justforit
  فائدة بخصوص التعامل مع علامات التنصيص مع {سؤال} justforit 4 270 02-11-25, 11:19 PM
آخر رد: justforit
  [سؤال] طريقة توسيط النص داخل اداة comboBox سمير1404 7 3,858 24-08-25, 01:01 PM
آخر رد: أبو خالد الشكري
  [نقاش] سؤال MetoDas 2 1,489 20-04-25, 10:21 PM
آخر رد: Kamil
  [سؤال] سؤال ترددت قبل نشرة:طابعة الباركود لماذا تطبع أكثر من ليبل فارغ قبل السليم dr.programming 1 511 20-04-25, 09:26 PM
آخر رد: Kamil
  سؤال لو سمحتم احبتى فى الله خالد كامل1 4 807 09-02-25, 12:02 AM
آخر رد: princelovelorn
  سؤال واستفسار خالد كامل1 1 402 04-02-25, 09:31 PM
آخر رد: aliday03
  سؤال فى تقرير كريستال خالد كامل1 0 393 04-02-25, 05:50 AM
آخر رد: خالد كامل1
Question [VB.NET] هناك سؤال يهم كل مبرمج الماذا برنامجك يظهر على بعض الشاشات اكثر دقه بشكل مصغر ومشوه Microformt 0 448 01-02-25, 03:48 PM
آخر رد: Microformt
  [سؤال] سؤال في الكونسول justforit 1 367 21-12-24, 02:57 PM
آخر رد: aljzazy

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


يقوم بقرائة الموضوع: