PDA

View Full Version : اتصال گزینه های combobox به table ها



maryam206
سه شنبه 21 بهمن 1382, 10:29 صبح
سلام
در یک فرم من یک combobox و یک dbgrid دارم و می خوام که با انتخاب هر کدام از گزینه های آن یک سری رکوردهای خاص را نمایش دهد(در مثالی که من روش کار می کنم گزینه های combobox باید استان های کشور باشد که با انتخاب هر کدام از آنها آن رکوردهایی را نمایش دهد که فیلد استان آنها با اون گزینه انتخابی یکسان باشد )
در ضمن یه سوال دیگه هم دارم آیا می شه که هر کدام از گزینه های combobox به یک جدول جدا متصل باشد یعنی از چند تا جدول بتونم استفاده کنم اگه می شه راهشم به من بگید
اگه سوالام مبتدیه به بزرگی خودتون ببخشید
باتشکر فراوان

SReza1
سه شنبه 21 بهمن 1382, 10:42 صبح
بله میشه
شما میتونید برای اتصال به بانک اطلاعاتی از dbcombobox استفاده کنید. کافیه که listsourceاونو مشخص کنید به کدوم datasource وصل میشود. حتی میتپونید به یک query وصل شوید.
در مورد اینکه میخواستید با توجه به مقادیر اتخاب شده در combo فیلتر کنید اونم میشه. در ebent onclick بروید و بعد از آن ebent فیلتر مرود نظر را انجام بدهیید.
مثلا

table1.filtered := False
table1.filter := ' Ostan = ' + comboox1.text;
table1.filtered := False
همین

maryam206
سه شنبه 21 بهمن 1382, 10:57 صبح
آخه یک datasource مگه فقط به یک جدول وصل نمی شه ؟
اگه این طوری که من می گم باشه که به یک جدول فقط متصل می شه نه به چند تا جدول در حالی که من می خوام به چند تا جدول وصل بشم :(
شایدم من منظورتونو درست متوجه نشدم
ولی آن قسمت دومی که کد هم براش آوردیدو کاملا متوجه شدم و واقعا از شما متشکرم که راهنماییم کردین خیلی خوشحالم کردین :)

SReza1
سه شنبه 21 بهمن 1382, 11:05 صبح
خوب شما از ساختارتون خیلی کم گفنید.
شما میتونید حاصل یک query که مثلا چند تا جدول به متصل شده است را در datasource بریزید.
اگه جواب نگرفتید نوع جداول با مشحصه فیلدها رو بنویس به همراه نحوه اتصال به بانک تا مشکلتو بتونیم دقیق حل کنیم

moradi_am
سه شنبه 21 بهمن 1382, 11:44 صبح
میتوانید جدول دیتا سورس را نیر از داخل برنامه عوض کنید :

if ComboBox1.ItemIndex=1 then
DataSource1.DataSet:=Table1
else
DataSource1.DataSet:=Table2;

maryam206
سه شنبه 21 بهمن 1382, 11:47 صبح
گزینه های comboboxam شامل 3 گزینه روبه رو است(آمار اتومبیل ها -آمار تجهیزات-آمار وسایل ارتباطی)و به ازای هر کدامشان هم یک جدول دارم و می خوام که با انتخاب هر کدام از اینا به جدول مربوطه متصل بشم و در dbgrid اطلاعات آن جدول انتخاب شده + رکوردی از یک جدول دیگه رو که آن آمار بالا مربوط به اونه را نمایش بده
من منتظر جوابتون هستم
از کمکی که به من می کنید کمال تشکر را دارم

Gladiator
سه شنبه 21 بهمن 1382, 12:08 عصر
با سلام

دوست گرامی خیلی سادست .

شما مثلا 25 استان دارید ( 25 آیتم در کامبو باکس ) از همون ItemIndex استفاده کن .

برای استان تهران ( مثلا آیتم اول ) به این شکل عمل کن .


if combobox1.itemindex=0 then begin
فرامین مربوط به فیلتر در هر تیبل به دلخواه شما ...
end;

و به همین شکل الا آخر .
موفق باشی .

Gladiator
سه شنبه 21 بهمن 1382, 12:13 عصر
گزینه های comboboxam شامل 3 گزینه روبه رو است(آمار اتومبیل ها -آمار تجهیزات-آمار وسایل ارتباطی)و به ازای هر کدامشان هم یک جدول دارم و می خوام که با انتخاب هر کدام از اینا به جدول مربوطه متصل بشم و در dbgrid اطلاعات آن جدول انتخاب شده + رکوردی از یک جدول دیگه رو که آن آمار بالا مربوط به اونه را نمایش بده
من منتظر جوابتون هستم
از کمکی که به من می کنید کمال تشکر را دارم

و باز هم خیلی سادست .

در این کامبو باکس شما 3 آیتم دارید ( Itemindex 0 , 1 , 2 )

اگر اولی انتخاب شد اطلاعات مربوط به اون تیبل رو که توی Data Module قرار داره بروی DBGrid نمایش میده . ( فقط لازمه که از Data Module ) استفاده کنی .

و به همین شکل برای 2 آیتم دیگه .

خیلی سادست . زیاد به خودت سخت نگیر که گیج بشی .

موفق باشی .

Gladiator
سه شنبه 21 بهمن 1382, 12:13 عصر
اگر نیاز شد بگو تا یک نمونه برات بنویسم و ارسال کنم .

maryam206
سه شنبه 21 بهمن 1382, 12:43 عصر
آخه تیپلو چه جوری باید بنویسم که هر دفعه بره و فقط رکوردایی رو بیاره که فیلد استانشون مثلا تهرانه از filter ای که در بالا بهم گفتم استفاده کردم ولی هیچ اتفاقی نمی یفته
میشه ازت خواهش کنم یه نمونه برام بفرستی البته خیلی ببخشیدا که بهتون زحمت می دم :oops:
اگه برام بفرستی دیگه از دست سوالای مسخره من راحت می شی :wink:

Gladiator
سه شنبه 21 بهمن 1382, 13:24 عصر
با سلام

سوالات شما اصلا مسخره نیست .

یدونه نقلیشو مینویسم و برات ارسال میکنم .

موفق باشی .

Gladiator
سه شنبه 21 بهمن 1382, 20:35 عصر
با سلام

ببین این مثال درسته یا خیر .

اگر درست متوجه نیاز شما شده باشم به همین سادگی مشکلت حل میشه .

موفق باشی .

maryam206
چهارشنبه 22 بهمن 1382, 10:15 صبح
سلام
گلادیاتور خیلی ممنونم از پروژه ای که برام فرستادی فهمیدم که باید چه کار کنم.
از زحمتی که کشیدید خیلی ممنونم.

بازم اگه مشکلی داشتم بهتون زحمت میدم

Gladiator
چهارشنبه 22 بهمن 1382, 11:52 صبح
خواهش میکنم .

موفق باشی .

Delphi-Clinic
چهارشنبه 22 بهمن 1382, 14:37 عصر
گلادیاتور جان

واقعا متشکرم رفیق :D

maryam206
چهارشنبه 22 بهمن 1382, 18:27 عصر
سلام مجدد
ببخشید یه سوال دیگه برام بوجود اومده در آن قسمت که باید استان را انتخاب کنه با ید قابلیت اینو داشته باشه که اگه استانی به کشور اضافه بشه بازم بتونه به کارش ادامه بده یعنی اگه جستجویی بر اساس استان جدید انجام بده باید از جدول آن رکوردهایی را که فیلد استانشان با آن مطابقت داره را نمایش بده . اینجاست که با استفاده از itemindex نمی تونیم کارو انجام بدیم چون برای آن گزینه قبلا itemindex وجود نداشته و حالا اضافه شده برای این مسئله باید چی کار کنم :?:
با تشکر

Gladiator
چهارشنبه 22 بهمن 1382, 21:05 عصر
با سلام مجدد

این هم راه حلی داره .

به جای استفاده از ItemIndex میتونی بر اساس نوشته آیتم انتخاب شده عمل کنی .

مثلا :

آیتم اول :‌ تهران
آیتم دوم : شیراز
آیتم سوم : مشهد
آیتم چهارم : بندر عباس
و ....

هر آیتمی که انتخاب شد ٬ برنامه اول نوشته آیتم رو چک کنه . برای مثال :


if ComboBox1.Text='تهران' then begin
فرامین مورد نظر ...
end;

حالا هر شهری که اضافه میشه برنامه میتونه تشخیص بده که این کدوم شهره !

موفق باشی .

maryam206
پنج شنبه 23 بهمن 1382, 17:03 عصر
سلام
مثلا فرض کن شهر اهواز را نداشته باشیم بعدا کاربر اونو وارد کنه حالا دیگه دستور combobox1.text = 'اهواز ' نداریم چون تازه اضافه شده حالا باید چی کار کنیم ؟ :oops:
با تشکر

moradi_am
شنبه 25 بهمن 1382, 08:15 صبح
بهتر است از dbcombobox استفاده کنید که این قابلیت را هم دارد چون میتوانید مستقیم به بانک شهرهاتون متصل کنید .

Gladiator
شنبه 25 بهمن 1382, 08:26 صبح
با سلام

شما میتونی قبل از اینکه اون اضافه کنه فکرش رو بکنی .

یعنی : برای همه شهرها از قبل کدی رو بنویسی . یا از همون DbCombobox استفاده کنی که البته به نظر من گزینه خوبی نیست .

موفق باشی .