PDA

View Full Version : نمايش سه فيلد هم جنس از سه جدول مختلف در يك combobox



بیتافرهی
سه شنبه 14 آبان 1387, 00:29 صبح
من 4 تا جدول دارم:
1-جدول سيستم عامل ها (كه اسامي انواع os ها همراه با مشخصات و... در اين جدول آمده )
(يكي از فيلد هاي آن name_operating_sysاست.)
2-جدول نرم افزار هاي عمومي(يكي از فيلد هاي آن name _general_soft است)
3-جدول نرم افزار هاي تخصصي و محاسباتي(يكي از فيلد هاي آن Name_specilize_soft است)
-----------------------------------
4-جدول نرم افزار هاي خريداري شده براي سازمان

///////////////////////////////////////////////////////////////////////////////
من يه فرم دارم كه از طريق اين فرم مي خواهم جدول 4 را پر كنم. كه يكي از اجزاي اين فرمم ،يك combo box است كه اطلاعاتي كه كاربر از اين combo انتخاب مي كند،مربوط به يكي از فيلد هاي جدول 4 ، است.

مي خوام وقتي كاربر روي اين combo كليك كرد ،تا محتويات آن را ببيند،
محتويات اين combo از مجموع اطلاعات فيلد name_operating_sys از جدول يك+اطلاعات فيلد name _general_soft از جدول دو+اطلاعات فيلد Name_specilize_soft از جدول سه ،باشد.

نمي دونم اين مسئله را چطور بايد پياده كنم:
مي دونم بايد از اين سه جدول select بگيرم ولي موقع بايند كردن خود combo ،من اونوبايد به كدوم بايند كنم؟؟
من كد زير را نوشتم ولي خط اولش را ارور مي گيره.


private void comboBox2_DropDown(object sender, EventArgs e)
{
this.tbl_receiveSoftware_fc11TableAdapter.Fill(thi s.iso4DataSet57.tbl_receiveSoftware_fc11);

DataSet ds3 = new DataSet();
string strsql3;
SqlDataAdapter da3;
comboBox2.Update();
// strsql3 = "select * from tbl_printer_scanner_fc8";
strsql3 = "SELECT tbl_soft_pub.*, tbl_soft_speci.*, tbl_operating_sys.*" +
"FROM tbl_soft_pub INNER JOIN" +
" tbl_soft_speci ON tbl_soft_pub.id = tbl_soft_speci.id INNER JOIN" +
" tbl_operating_sys ON tbl_soft_pub.id = tbl_operating_sys.id";
da3 = new SqlDataAdapter(strsql3, con);
da3.Fill(ds3, "tbl_receiveSoftware_fc11");
comboBox2.DataBindings.Clear();
comboBox2.DataBindings.Add(new Binding("text", ds3, "tbl_receiveSoftware_fc11.name_soft"));
con.Close();

}

smt_414
سه شنبه 14 آبان 1387, 09:38 صبح
سلام

این نمونه کد رو ببینید
1-تا حد امکان از sp استفاده کنید

کد زیر یک فیلد از تیبل رو در کمبو باکس می ریزه
شما می تونید هر 3 فیلد مورد نظر رو در حلقه قرار بدید اینطوری فیلدها به صورت 2 تا در میان قرار می گیرند و اگر خواستید اطلاعات هر فیلد پشت سر هم قرار بگیره برای هرکدوم حلقه رو دوباره نویسی کنید


//پر کردن کمبو باکس انواع کد
public static DataSet fill()
{
SqlConnection objConnection = new SqlConnection(connection string);
DataSet objDataSet = new DataSet();
SqlDataAdapter objDataAdapter = new SqlDataAdapter();
objDataAdapter.SelectCommand = new SqlCommand();
objDataAdapter.SelectCommand.CommandText = "show_all_tozih_cod";
objDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
objDataAdapter.SelectCommand.Connection = objConnection;
objDataAdapter.Fill(objDataSet, "cod");

return objDataSet;
}



//پر کردن کمبو باکس کد
void show_all_cod()
{
for (int i = 0; i < /class name/.fill().Tables[0].DefaultView.Count; i++)
cob_cod_enter.Items.Add(/class name/.fill().Tables[0].DefaultView[i]["tozih_cod_sazman"].ToString());

}


موفق باشید

بیتافرهی
چهارشنبه 15 آبان 1387, 09:52 صبح
من درست متوجه نشدم.
cob_cod_enter.Items.Add(/class name/.fill().Tables[0].DefaultView[i]["tozih_cod_sazman"].ToString());
ميشه بيشتر توضيح بديد؟

smt_414
چهارشنبه 15 آبان 1387, 10:06 صبح
سلام


ميشه بيشتر توضيح بديد؟

کدوم بخش احتیاج به توضیحات بیشتر داره

اگرمنظورتون

/class name/
تابع fill رو publici static تعریف شده و از داخل کلاس دیگه ای فراخوانی میشه مثلا project1.class1
اگر تابع در همون فرم یکه قرار استفاده شه دیگه احتیاجی به اون نیست

یا اگر

["tozih_cod_sazman"]
این هم اسم فیلدی که قرار محتویاتش از table[0] برداشته شه و در کمبو باکس ریخته شه

یااگر

fill().Tables[0]
همونطور که ملاحظه می کنید تایه fillمقداری که برمی گردونه ازنوع dataset می باشد


اگر مطلب دیگه ای هست بفرمایید
موفق باشید

SabaSabouhi
چهارشنبه 15 آبان 1387, 10:13 صبح
سلام
خیلی راحت‌تر هم می‌شه. کافیه در Query خودتون اون سه جدول رو Union کنید.




SELECT MyCode = OSName FROM OS_Systems
UNION ALL
SELECT ProgramName FROM General_Programs
UNION ALL
SELECT ProgramName FROM Special_Programs



صبا صبوحی