سلام.
من چند تا مشکل تو سی شارپ دارم.
1:
فرض کنید یه جدول تو دیتابیس دارم واسه رشته که دوتا فیلد "نام" از جنس nvarchar و یه کلید اصلی اتونامبر" آیدی" از جنس smallint داره.
یه جدول هم واسه استاد دارم که یه فیلد "نام استاد" داره از جنس nvarchar، یه فیلد "کد رشته" smallint.وقتی می خوام یه استاد جدید رو تو برنامه ثبت کنم،اول از کمبو باکس رشته رو انتخاب می کنم، می خوام "آیدی" مربوط به اون رشته و نامی که برای استاد وارد کردم توی جدول استاد ذخیره شه.اما بعضی وقت ها اشتباهی "آیدی" یه رشته ی دیگه رو ذخیره می کنه.نمیدونم چرا ؟؟؟
این کد ثبت استاد :
private void button2_Click(object sender, EventArgs e)
{
if (textBox2.Text != "")
{
SqlConnection con2 = new SqlConnection();
con2.ConnectionString = "data source=localhost;initial catalog=tamrin;integrated security=sspi;persist security info=true";
con2.Open();
SqlCommand com2 = new SqlCommand();
com2.CommandText = "insert into t_ostad (KodeReshte,name) values ('" + comboBox1.SelectedValue + "',N'" + textBox2.Text + "')";
com2.Connection = con2;
com2.ExecuteNonQuery();
con2.Close();
MessageBox.Show("ثبت استاد با موفقیت انجام شد");
comboBox1.Text = "Select";
textBox2.Text = "";
}
else
MessageBox.Show("نام استاد را وارد نمایید");
}
2:
می خوام دو تا کمبو باکس داشته باشم که یکیش کل رشته هارو نشون بده، بعد من هر رشته ای رو انتخاب کردم، کمبوباکس دوم فقط اسم استاد هایی که مربوط به اون رشته است نشون بده.کد این قسمت رو توی رویداد تغییر اندیس کمبوباکس اول نوشتم،اما نمیدونم چه جوری باید بنویسم که خطا نده.
وقتی میگم همه ی استاد هارو نشون بده مشکلی نداره ،اما where که میزارم این خطا رو میده :
Syntax error converting the nvarchar value 'System.Data.DataRowView' to a column of data type smallint
این هم کد دوتا کمبو باکس:
SqlConnection con4 = new SqlConnection();
con4.ConnectionString = "data source=localhost;initial catalog=tamrin;integrated security=sspi;persist security info=true";
con4.Open();
SqlDataAdapter sda4 = new SqlDataAdapter("select * from t_ostad where (KodeReshte=N'" + comboBox4.SelectedValue + "')", con4);
DataSet ds4 = new DataSet();
ds4.Tables.Add("t_ostad");
sda4.Fill(ds4, "t_ostad");
comboBox5.DataSource = ds4.Tables["t_ostad"];
comboBox5.DisplayMember = ds4.Tables["t_ostad"].Columns["name"].ToString();
con4.Close();