متشکرم.ولی مثل اینکه من سوالم درست و کامل نبوده.
شرمنده؛اگه می شه لطف کنین بگین چطوری با اطلاعات توی دیتا بیس این کارو انجام بدم.
دو تا جدول دارم که ارتباط یک به چند دارن.
اون آیتمی که از کمبو باکس اولی انتخاب می شه محتویات مرتبط جدول دوم (که nتا هستن)رو توی کمبو باکس دوم نشون می ده.
من نمی تونم درست منظورم رو بگم:| اگه لطف کنین باز جوب بدین ممنون می شم.
فرض کنیم که دو ComboBox داشته باشیم که بایستی در یکی مدل محصول و در دیگری رنگ محصول انتخاب شود.
پس دو Table خواهیم داشت، در یکی لیست مدل های محصولات ثبت می شود، و در دیگری لیست رنگهایی که هر محصول
دارد. بایستی لیست رنگ ها بر اساس مدل انتخاب شده تغییر کند. در واقع بین دو Table یک ارتباط وجود دارد.
به عنوان مثال یک دیتابیس را با Microsoft Access ایجاد کردم که دو Table با نام های Table1 و Table2 دارد.
در Table1 فیلدی با نام Model و فیلدی با نام Code وجود دارد. فیلد Model عنوان مدل یک محصول و Code کد شناسایی مدل
را مشخص می کند :
کد:
ID Model Code
1 Model M1 MC1
2 Model M2 MC2
3 Model M3 MC3
در Table2 فیلد Code و فیلد Color وجود دارد که Color رنگ هایی که در هر مدل وجود دارد را مشخص می کند :
کد:
ID Code Color
1 MC1 Red
2 MC1 Green
3 MC1 Blue
4 MC1 Silver
5 MC2 Black
6 MC2 White
7 MC3 Blue
8 MC3 Yellow
9 MC3 Magenta
ما بر اساس ارتباط میان فیلدهای Code ای که در هر دو جدول Table1 و Table2 وجود دارد، یک Query با نام Query 1 می سازیم
که فیلد های Model و Code و Color را در خود لیست می کند. حسن استفاده از Query این است که بدون نیاز به کد نویسی،
ارتباط میان فیلد Code را در دو جدول نمایش می دهد. صرفا بایستی Query را بر اساس مدل انتخاب شده فیلتر کنیم تا
فقط رکوردهایی را نمایش دهیم که مربوط به یک Model خاص باشند.
در فرم برنامه، ما دو ComboBox با نام های comboBox1 و comboBox2 داریم.
در comboBox1 ما یکی از Model ها (از Table1) را انتخاب می کنیم و و در comboBox2 رنگ هایی که در فیلد Color مربوط
به کد آن Model انتخاب شده وجود دارند، از Query 1 استخراج شده و وارد لیست می شوند.
در داخل مشخصات comboBox1 مقدار DataSource روی table1BindingSource1 (که اشاره به جدول table1 دارد) و مقدار
DisplayMember روی فیلد Model در Table1 قرار دارد. به همین دلیل، به محض اجرا شدن برنامه، لیست Model هایی که
در Table1 ذخیره شده اند، بطور خودکار در comboBox1 درج می شوند.
کاری که ما اکنون بایستی با کد نویسی انجام دهیم، انتخاب کردن (Select) رکورد هایی از Query 1 است که Model
انتخاب شده در comboBox1 را شامل شوند و اضافه کردن فیلد Color آن رکورد ها در داخل comboBox2 می باشد :
کد:
string Model = comboBox1.Text;
DataRow[] ModelColor;
comboBox2.Items.Clear();
if (Model.Length > 0)
{
ModelColor = databaseDataSet.Query_1.[B]Select[/B]("Model = '" + Model + "'");
for (int i = 0; i < ModelColor.Length; i++)
comboBox2.Items.Add(ModelColor[i]["Color"]);
}
توجه داشته باشید که مفاهیم پایگاه داده و برنامه نویسی دیتابیس با مباحث کنترل ها و زبان خاصی مانند #C ارتباط
مستقیمی ندارند. اگر با برنامه نویسی برای پایگاه داده آشنا باشید، در هر زبان ویژوالی می توانید به سادگی
مقصود خود را پیاده سازی کنید، وگرنه اینکه کنترل هدف شما ComboBox باشد یا DataGrid فرق چندانی نمی کند.
اگر احساس کردید که در بکارگیری کد های پایگاه داده مشکل دارید، از کتاب هایی که بصورت تخصصی به
برنامه نویسی بانک اطلاعاتی می پردازند استفاده کنید.
کد کامل برنامه به همراه فایل دیتابیس (Database.mdb) و فایل اجرایی (ComboBoxDatabase.exe) ضمیمه این پست
می باشد.