PDA

View Full Version : نمایش نام و ذخیره کد مربوط به ان نام در دیتابیس



Rezakakaei
چهارشنبه 06 آذر 1392, 23:36 عصر
سلام خدمت همه دوستان یک سوال داشتم
یک صفحه دارم با 3 تا کمبو باکس میخوام مثلا تو کمبو باکس یکم مثلا جدول استاد فیلد نام را نمایش بده ولی میخوام فقط نمایش بده
یعنی 3 تا کمبو من وصل میشه به 3 تا جدول یکیش نام استاد یکیش نام درس یکیش نام رشته نمیخوام نامهای اینا ذخیره بشه تو این جدول جدیدم میخوام کد هر کدومشون ذخیره بشه مثلا کد استاد کد درس و کد رشته
چی کار میتونم بکنم ممنون میشم کمکم کنید مرسی

aagghh
پنج شنبه 07 آذر 1392, 01:32 صبح
زمانیکه شما بخواهید مستقیما comboBox رو به dataSource ای که در #C ایجاد کردید متصل کنید خاصیت DataSource مربوط به comboBox رو از توی properties تعیین میکنید و در زمانیکه از sqlserver یا بانک اطلاعاتی خارج از #C استفاده می کنید با یک query و گرفتن مقادیر dataTable میتونید comboBox رو پر کنید.
ولی از اونجایی که comboBox هایتان به هم ربط دارند و با انتخاب هر مقداری از هر کدام از آنها باید مقادیر بقیه نیز تغییر کند راهی جز کوئری زدن به طور پویا ندارید.
در روش دوم کوئری تان یک چیزی شبیه به قطعه کد زیر میشه:

#region connection
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = connection.CreateCommand();
DataSet DS = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter();
DataTable ddt = new DataTable();
#endregion

#region fill combobox
command.CommandText = "YOUR_QUERY";
try
{
connection.Open();
adapter.SelectCommand = command;
adapter.Fill(DS, "A");
ddt = DS.Tables[0];
connection.Close();
for (int i = 0; i <= **; i++)
comboBox.Items.Add(ddt.Rows[i][0]);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
#endregion


در صورتیکه منظورتون چیز دیگست یا من منظورتون رودرست متوجه نشدم یا هر دلیل دیگه ای بگین تا اگه در توانم بود کمکتون کنم

Rezakakaei
پنج شنبه 07 آذر 1392, 13:41 عصر
سلام کدهای بالا درست
ببنید الان مثلا کمبو 1 من وصل شده به بانک استادهام (بانک استادم شامل اسمشون و یک کد شناسایی یکتا هستش این 2 تا فیلد را داره )
من میخوام کمبو نام را نمایش بده ولی تو جدولم کد اون نام ذخیره بشه
مثلا استاد علی زارعان را نمایش میده کمبو ولی میخوام هنگام ذخیره تو یک بانک دیگم کد علی زارعان ثبت بشه
این جوری نمیدونم متوجه شدید یا نه اگر نه بگید تا کلا بهتون با عکس بگم چی میشه

aagghh
پنج شنبه 07 آذر 1392, 15:27 عصر
خوب الان دوتا موضوع پیش اومد.
1- شما میخواهید اسم استادهارو بیارید توی یک comboBox (یعنی از دیتابیس به application)
2- شما میخواهید کد استادهارو که نامشونو میدونید ذخیره کنید (یعنی از application به دیتابیس)

درهر صورت با کوئری مناسب همه این تغییرات ممکن است.
اگه یکم موضوع واضح تر بشه بهتر میتونم کمکتون کنم.

Rezakakaei
پنج شنبه 07 آذر 1392, 19:30 عصر
ببنید این طوری هستش فکر کنید 3 تا جدول داریم
جدول اول نام استاد و کد استاد tbl-ostad
جدول دوم نام درس و کد درس tbl-dars

یک فرم داریم با 2 تا کمبو باکس اولین کمبو باکس وصل میشه به tbl-ostad و نام را نمایش میده
کمبو دوم وصل میشه به tbl-dars و نام درس را نمایش میده
این تا اینجاش اوکی هستش هیچ مشکلی هم ندارم درستش کردم

مشکل من اینجاست
مثلا الان کمبو 1 نام استاد مثلا "حسینی" را داره نمایش میده (کد حسینی 1 هستش )
کمبو دوم نمایش میده مثلا ریاضی (کد درس ریاضی 2250 هستش )

حالا یک دکمه ثبت من دارم که موقع اجرا میشه این دکمه
این کارا واسم بکنه
تو یک جدول دیگه حالا مثلا tbl-erae بیاد و برای من کد اینا را ذخیره کنه
به جای که حسینی داخلش ذخیره بشه 1 ذخیره بشه و به جای که ریاضی ذخیره بشه 2250 ذخیره بشه داخل جدول
به این صورت
ممنون میشم کمکم کنید جون واقعا گیر کردن مرسی تشکر

salehsam
پنج شنبه 07 آذر 1392, 19:39 عصر
سلام
DATASOURCE کمبو باکس رو برابر با کوئری قرار بدین (یه کوئری از جدول بگیرین)
DATAMEMBER رو برابر فیلدی که میخواین نشون بدین
DATAVALUE رو برابر فیلد کد قرار بدین
بعد تو دستور ذخیره SELECTED VALUE رو قرار بدین
الان به ویژوال اتادیو دسترسی ندارم
مشکلی بود بگین تا اگه بتونم کمکتون کنم

tehran11
پنج شنبه 07 آذر 1392, 20:18 عصر
اینم یه راه دیگه :

دوست عزیز شما میتونین یه آرایه از کلاسهایی داشته باشین که نام و کد استاد (برای درس و رشته هم همینطور) رو توش ذخیره کنین و combobox ها رو با اون کلاسه پر کنین
حالا موقع انتخاب کاربر کد استاد رو از اون کلاسه درمیاری

تعریف کلاس :


public class clsTeachers
{
int _id;
string _name;
public clsTeachers(int id, string name)
{
this.id = id;
this._name = name;
}
public int id
{
get { return this._id; }
set { this._id = value; }
}
public string name
{
get { return this._name; }
set { this._name = value; }
}
public override string ToString()
{
//return this._name;
return "(" + this._id.ToString() + ") " + this._name;
}
}



تابع برای پر کردن آرایه :

public ArrayList fill_TeacherArr() //////////////////
{
ArrayList al = new ArrayList();
DataTable dt = new DataTable();
dt = the table of teachers <--
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
int z = int.Parse(dt.Rows[i].ItemArray[0].ToString());
string s = dt.Rows[i].ItemArray[1].ToString();
al.Add(new clsTeachers(z, s));
}
return al;
}
return null;
}

پر کردن کامبو باکس :

comboTeachers.Items.AddRange(fill_TeacherArr().ToA rray());

گرفتن مقدار انتخاب شده بصورت string :

string teacherID = ((clsTeachers)comboTeachers.SelectedItem).id.ToStr ing();

گرفتن مقدار آرایه بصورت int :

int teacherID = ((clsTeachers)comboTeachers.SelectedItem).id;

Rezakakaei
پنج شنبه 07 آذر 1392, 21:06 عصر
سلام
DATASOURCE کمبو باکس رو برابر با کوئری قرار بدین (یه کوئری از جدول بگیرین)
DATAMEMBER رو برابر فیلدی که میخواین نشون بدین
DATAVALUE رو برابر فیلد کد قرار بدین
بعد تو دستور ذخیره SELECTED VALUE رو قرار بدین
الان به ویژوال اتادیو دسترسی ندارم
مشکلی بود بگین تا اگه بتونم کمکتون کنم
ببخشید میتونید بهم بگید چه کوئری باید قرار بدم دیتا سورسم را ؟
ممنون میشم با کد بهم بگید چی شد جریان چی زیاد حرفه ایی نیستم متاسفانه

Rezakakaei
پنج شنبه 07 آذر 1392, 21:08 عصر
اینم یه راه دیگه :

دوست عزیز شما میتونین یه آرایه از کلاسهایی داشته باشین که نام و کد استاد (برای درس و رشته هم همینطور) رو توش ذخیره کنین و combobox ها رو با اون کلاسه پر کنین
حالا موقع انتخاب کاربر کد استاد رو از اون کلاسه درمیاری

تعریف کلاس :


public class clsTeachers
{
int _id;
string _name;
public clsTeachers(int id, string name)
{
this.id = id;
this._name = name;
}
public int id
{
get { return this._id; }
set { this._id = value; }
}
public string name
{
get { return this._name; }
set { this._name = value; }
}
public override string ToString()
{
//return this._name;
return "(" + this._id.ToString() + ") " + this._name;
}
}



تابع برای پر کردن آرایه :

public ArrayList fill_TeacherArr() //////////////////
{
ArrayList al = new ArrayList();
DataTable dt = new DataTable();
dt = the table of teachers <--
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
int z = int.Parse(dt.Rows[i].ItemArray[0].ToString());
string s = dt.Rows[i].ItemArray[1].ToString();
al.Add(new clsTeachers(z, s));
}
return al;
}
return null;
}

پر کردن کامبو باکس :

comboTeachers.Items.AddRange(fill_TeacherArr().ToA rray());

گرفتن مقدار انتخاب شده بصورت string :

string teacherID = ((clsTeachers)comboTeachers.SelectedItem).id.ToStr ing();

گرفتن مقدار آرایه بصورت int :

int teacherID = ((clsTeachers)comboTeachers.SelectedItem).id;

اول ممنون بابط راهکارتون دوم میگم متاسفانه اینقد حرفه ایی نیستم که بتونم بفهمم چی شد کداش را متوجه نمیشم اگر یک کد نویسی ساده تر بهم بگید ممنون میشم