PDA

نسخه کامل مشاهده نسخه کامل : ارتباط دو ombobox



mefmef
29-01-2007, 21:59
دوستان سلام
چطور می شه با کلیک برروی یکی از ایتمهای یک کامبو باکس اطلاعات مربوط به ان ایتم در یک کامبوباکس دیگه ظاهر بشه مثلا با انتخاب یک استان شهرستانهای متناظر با ان در کامبوباکس دیگه در دسترس قرار بگیره

delphianddotnet
30-01-2007, 01:32
بيشتر توضيح بده
اگه برنامه ات ديتابيس بگو تا حل كنيم

soltanmahdi
30-01-2007, 07:09
با سلام خدمت دوستان.
دوست عزیز برای این کار می توان این طور عمل کرد. طبیعتا شما در بانک اطلاعاتی خود یک ستون برای استان دارید و یک ستون برای شهرستان. خوب می توان در قسمت onchange کمبو باکس اول از دستور locate استفاده کرد و مقادیره فیلد شهرستان رکورد هایی که برابر استان انتخاب شده هستند را به combobox دوم اضافه کند.
امید وارم که به دردت بخورد.

MasterData
30-01-2007, 09:49
اگه از ديتا بيس استفاده مي كني جداول رو Master/Slave كن

mahdi bg
30-01-2007, 17:29
سلام

فرض
یه جدول داریم 3 تا فیلد داره
ID و State و City
حالا دو تا ComboBox و دو تا ADOTable و یه دونه ADOConnection1

دوتا ADOTable ها به جدول مون وصل هستن

روی فرم بذار و کارا زیر رو انجام بده
توی FormCreate در form

ADOTable1.First;
while not(ADOTable1.Eof) do
begin
if (ComboBox1.Items.IndexOf(ADOTable1.FieldValues['State'])=-1)or(ComboBox1.Items.Count=0) then
ComboBox1.Items.Add(ADOTable1.FieldValues['State']);
ADOTable1.Next;
end;
توی Select در ComboBox1


ComboBox2.Clear;
ADOTable2.Filter:='State='+ComboBox1.Text;
ADOTable2.First;
while not(ADOTable2.Eof) do
begin
ComboBox2.Items.Add(ADOTable2.FieldValues['City']);
ADOTable2.Next;
end;
چند تا نکته
ComboBox1 نا استانها
ComboBox2 نام شهر ها
ComboBox2.Clear; رو پاک کن ببین چه گندی بالا می آد
شرط if یرای این که نام استان تکراری وارد نشه
اگه من بودم از ADOQuery استفاده می کردم
Filter مربوط به ADOTable رو فعال کن
اگه مشکلی بود در خدمتم البته اگه بتونم
اگه خواستی بگو تا فایل رو برات یه جا آپلود کنم

MasterData
30-01-2007, 19:31
جناب mahdi bg
دليل اينكه از Slave/Master استفاده نم كنيد چيه؟
اينهمه كد نويسي و كنترل تازه اونم ممكنه خطا داشته باشه

mahdi bg
31-01-2007, 06:40
سلام

این که میگین Slave/Master دقیقا یعنی چی؟
من خیلی این کلمه رو دیدم اما نمی دونم منظورتون
چیه و با چیزی که من به این اسم می شناسم یکیه یا نه.

این کد ها رو میشه به 2-3 خط هم نوشت
برای این که قابل فهم باشه با تفضیل نوشتم

delphianddotnet
31-01-2007, 12:25
با يه ارتباط ساده متر ديتيل از كدهاي اضافه جلوگيري كنيد

mahdi bg
01-02-2007, 05:39
سلام

با يه ارتباط ساده متر ديتيل از كدهاي اضافه جلوگيري كنيد
مثلا برای سوال که مطرح شده با مستر ديتيل چطوری جواب داده میشه؟
میشه برنامه ای که می نویسید رو یه جا آپلود کنید
ممنون

MasterData
01-02-2007, 13:08
ببینید شما دوتا table دارین و دوتا datasource که به تیبلها نسبت دادین
خاصیت MasterSource جدول شهرستانهای استان رو به datasource استانها تنظیم میکنید
و خاصیت MasterFields رو به فیلدی که بین دو تا جدوب مشترک هست یمثلا کد استان که در جدول شهرستانها نیز باید باشد(از نظر طراحی دیتابیس یه رابطه باید بین استانهاو شهرستانها برقرار باشد که همان کد استانها در جدوب شهرستانها است)
حالا هررکوردی که از جدول استانها فال (رکورد جاری) باشه فقط شهرستانهای همون استاد در جدول شهرستانها قرار میگیره
یعنی یه جور اتوماتیک فیلتر میکنه

mahdi bg
01-02-2007, 22:58
سلام


ببینید شما دوتا table دارین و دوتا datasource که به تیبلها نسبت دادین
خاصیت MasterSource جدول شهرستانهای استان رو به datasource استانها تنظیم میکنید
و خاصیت MasterFields رو به فیلدی که بین دو تا جدوب مشترک هست یمثلا کد استان که در جدول شهرستانها نیز باید باشد(از نظر طراحی دیتابیس یه رابطه باید بین استانهاو شهرستانها برقرار باشد که همان کد استانها در جدوب شهرستانها است)
حالا هررکوردی که از جدول استانها فال (رکورد جاری) باشه فقط شهرستانهای همون استاد در جدول شهرستانها قرار میگیره
یعنی یه جور اتوماتیک فیلتر میکنه

OK
این چیزی که شما میگی.
من فقط برای دوستمون یه کد نوشتم که یه
Combobox رو با یه combobox انتخاب کنه

MasterData
03-02-2007, 01:57
من فقط برای دوستمون یه کد نوشتم که یه
Combobox رو با یه combobox انتخاب کنه
اين روش مزيتش اينه كه شما هر DataControl رو ميتوني كنترل كني
مثلا DataGrid از اين روش براي نشون دادن اطلاعات Detail اسفاده ميشه