PDA

View Full Version : سوال: master/ deatil دو جدول



sepideh_aghel
یک شنبه 21 تیر 1388, 14:32 عصر
دو تا Combo box دارم می خواهم وقتی از اولی مقداری رو انتخاب کرده ام اطلاعات موجود در combo box دومی فقط اطلاعات زیر مجموعه master را نمایش دهد

morteza_ghn
یک شنبه 21 تیر 1388, 15:56 عصر
سلام
اگه اطلاعات شما به همدیگر لینک Relation شده باشند مشکل حله
کافیه اون دو یا سه چند جدول رو در یک dataset قرار بدی و بعد مشخصه selectedValue کومبو باکس بچه را که به id که که مرتبط با جدول پدر هست انتخاب کنی .انجام بدی میبینیش

sepideh_aghel
دوشنبه 22 تیر 1388, 08:50 صبح
آن کار رو هم انجام دادم ولی بازهم بقیه شون نشون میده

sepideh_aghel
دوشنبه 22 تیر 1388, 12:00 عصر
این کار رو وقتی انجام دادم اولین داده مرتبط رو نشان میده ولی زمانیکه کمبو رو باز می کنم همه دادها موجود رو نمایش میده خواهش می کنم کمک کنید

h.jaza
دوشنبه 22 تیر 1388, 13:55 عصر
قبلا از اعمال تغییرات، کمبوباکس دوم رو خالی می کنی یا نه صرفا اطلاعات جدید رو بهش اضافه می کنی؟

Yasersadegh
دوشنبه 22 تیر 1388, 13:56 عصر
سلام دوست عزيز
راهه ساده اي كه مي تونيد استفاده كنيد اينه كه در رويداد onChange كمبوباكس اولي يه كوئري بنويسيد كه تمام ركوردهايي كه فيلد مربوط به كمبو اول برابر با مقدار كمبو اول بود رو سلكت كنه و در ديتا ريدر بريزه و در نهايت از ديتاريدر بخونيد و در كمبوباكس دومي اضافه كنيد!!:لبخندساده:
هر بار كه مقدار كمبو باكس اول عوض ميشه اين كد اجرا ميشه و اطلاعات مورد نظر رو در كمبوباكس دوم قرار ميده!!:لبخندساده:
**نكته: همونطور كه دوستمون h.jaza (http://barnamenevis.org/forum/member.php?u=71208) گفتن بايد قبل از اضافه كردن اطلاعات در كمبوباكس دوم آن را خالي كنيد!!
اميدوارم كه مفيد واقع شده باشه!
موفق باشيد:چشمک:

sepideh_aghel
چهارشنبه 24 تیر 1388, 10:59 صبح
ببخشید من برای پاک کردن کمبو از دستور
()comboBox2.Items.Clear استفاده کردهام ولی این خطا رو میده:
Items collection cannot be modified when the DataSource property is set

Yasersadegh
چهارشنبه 24 تیر 1388, 14:36 عصر
ببخشید من برای پاک کردن کمبو از دستور
()comboBox2.Items.Clear استفاده کردهام ولی این خطا رو میده:
Items collection cannot be modified when the DataSource property is set
خوب دوست عزيز اين پيغام برايه اينه كه شما خاصيت DataSource كمبو باكستو به يه فيلد ديتابيس مرتبط كردي بنابراين اجازه پاك كردن كمبو رو به شما نميده!:لبخندساده:
اگه از روشي كه در پست قبليم خدمتتون عرض كردم استفاده كرديد بايد اين خاصيت (DataSource) رو پاك كنيد و به هيچ فيلدي مرتبط نكنيد!!:لبخندساده:
موفق باشيد:چشمک:

h.jaza
چهارشنبه 24 تیر 1388, 15:24 عصر
ببخشید من برای پاک کردن کمبو از دستور
()comboBox2.Items.Clear استفاده کردهام ولی این خطا رو میده:
Items collection cannot be modified when the DataSource property is set

این مشکل زمانی پیش میاد که Databse رو با Dataset به کمبوباکس Bind کرده باشی نه در حالت معمولی و با کد...

sepideh_aghel
چهارشنبه 24 تیر 1388, 15:48 عصر
لطف می کنید کدش برام بذارید ممنون میشم:خجالت:

Yasersadegh
چهارشنبه 24 تیر 1388, 16:26 عصر
دوست عزيز كدهاي زير رو در بخشهاي مربوطه بنويسي مشكلت حل ميشه!!



private void Form2_Load(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;data source='database1.mdb';");
OleDbCommand com = new OleDbCommand("select * from table1", con);
con.Open();
OleDbDataReader dr;
dr = com.ExecuteReader();
comboBox1.Items.Clear();
while (dr.Read())
{
comboBox1.Items.Add(dr[0].ToString());
}
con.Close();
}


اين كد برايه پرشدن كمبو باكس اولي است كه حتما انجامش داديد!! اين رو در لود فرمتون بنويسيد!!



private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;data source='database1.mdb';");
OleDbCommand com = new OleDbCommand("select * from table2 where id='"+comboBox1.Text+"'" , con);
con.Open();
OleDbDataReader dr;
dr = com.ExecuteReader();
comboBox2.Items.Clear();
while (dr.Read())
{
comboBox2.Items.Add(dr["field1"].ToString());
}
con.Close();

}

اين كد هم برايه پرشدن كمبو باكس دوم بر اساس اولي است كه اين كد رو در رويداد SelectedIndexChanged كمبوباكس اولي مي نويسيد!!
**توجه داشته باشيد كه اين مد برايه ديتابيس اكسس هستش كه اگه برايه اسكوئل بخواهيد فقط كافه connectionString تون رو عوض كنيد!!:لبخندساده:

موفق باشيد:چشمک: