PDA

View Full Version : سوال: مشکل در ارتباط بین combobox و textbox با داده integer در بانک اطلاعاتی



reza1699
پنج شنبه 29 فروردین 1392, 11:26 صبح
من یک کومبوباکس دارم که کد های سهامداری از طریق این کد در اون ست میشه و ضمنا از این فیلد در دیتابیس از جنس int هست :
sql2 = "select * from person;";
SqlDataAdapter da1 = new SqlDataAdapter(sql2, cnn);
DataSet ds1 = new DataSet();
da1.Fill(ds1, "person");
comboBox10.DataSource = ds1;
comboBox10.DisplayMember = "person.code";
comboBox2.Text = "1";

بعد از اینکه اینها در کومبو باکس وارد شد ، میخوام بعد از انتخاب هر کد ، اسم و دیگر مشخصات کد انتخاب شده در تکست باکس ها بایند بشه و این کد رو براش نوشتم :

private void comboBox10_SelectedIndexChanged(object sender, EventArgs e)
{
sql3 = "select person.code,person.name,person.family,person.fathe rname,saham.final_saham from person inner join saham on person.code=saham.code where ozv=1 and person.code=" + comboBox10.Text ;
SqlDataAdapter da4 = new SqlDataAdapter(sql3, cnn);
DataTable dt3 = new DataTable();
da4.Fill(dt3);
textBox1.DataBindings.Clear();
textBox11.DataBindings.Clear();
textBox12.DataBindings.Clear();
textBox14.DataBindings.Clear();
textBox1.DataBindings.Add("text", dt3, "name");
textBox11.DataBindings.Add("text", dt3, "family");
textBox12.DataBindings.Add("text", dt3, "fathername");
textBox14.DataBindings.Add("text", dt3, "final_saham");
}

ولی در این حالت با این ارور مواجه میشم :

Conversion failed when converting the varchar value 'System.Data.DataViewManagerListItemTypeDescriptor ' to data type int.

بعضی وقتا هم این ارور :
The multi-part identifier "System.Data.DataViewManagerListItemTypeDescriptor" could not be bound.

وقتی هم میام از طریق کد زیر تبدیل کنم اطلاعات درون کومبوباکس رو به اینتجر
sql3 = "select person.code,person.name,person.family,person.fathe rname,saham.final_saham from person inner join saham on person.code=saham.code where ozv=1 and person.code=" + Convert.ToInt32(comboBox10.Text) ;

با این ارور مواجه میشم :
Input string was not in a correct format.


لازم به توضیح هست این برنامه برای داده های رشته ای به درستی کار میکنه و مشکلی نداره ! ولی برای داده اینتجر داره بدجور اذیت میکنه منو !
خواهش میکنم اگه کسی عیب کار رو می دونه ، راهنمایی کنه !
با تشکر

reza1699
پنج شنبه 29 فروردین 1392, 15:26 عصر
خواهش ميكنم اگر دوستان ميتونن در اين خصوص كمك بكنن بهم.
خيلي اين مسئله مشكل ساز شده براي من و علتش هم نميدونم.

plus
پنج شنبه 29 فروردین 1392, 15:34 عصر
چه موقع خطا میده و روی چه خطی؟

reza1699
پنج شنبه 29 فروردین 1392, 16:02 عصر
وقتی میخوام کانورت کنم دقیقا روی کانورت ارور میده
در حالت معمولی که بدون کانورت هست روی خطی ارور میده که میخواد اطلاعات رو وارد دیتا تیبل کنه
جالب اینجاست همین کد در رویداد فورم لود کار میکنه ولی در رویداد کومبوباکس...
خط ارور شماره شش قطعه کد دومی هست

plus
پنج شنبه 29 فروردین 1392, 16:09 عصر
کدوم خط؟ خط مربوط به Convert رو پیدا نمیکنم.

reza1699
پنج شنبه 29 فروردین 1392, 22:11 عصر
کدوم خط؟ خط مربوط به Convert رو پیدا نمیکنم.

Convert.ToInt32(comboBox10.Text)

اگر کانورت انجام بدم ، روی این خط ارور میده
ولی اگر انجام ندم ، جایی ارور میده که دیتا آداپتور رو داخل دیتاتیبل میریزم !

reza1699
پنج شنبه 29 فروردین 1392, 22:11 عصر
واقعا کسی نمیدونه دلیل این مشکل چی هست؟
خواهش میکنم کمک کنید

reza1699
پنج شنبه 29 فروردین 1392, 23:02 عصر
کدوم خط؟ خط مربوط به Convert رو پیدا نمیکنم.

مشکل من اینه که من در هیچ رویدادی از کومبوباکس نمیتونم داده داخلش رو تبدیل به اینتجر کنم!!!
ولی در رویداد های دیگر فرم میتونم این کارو بکنم
چرااااااا؟؟؟؟؟؟؟؟؟؟؟؟

plus
پنج شنبه 29 فروردین 1392, 23:36 عصر
مشخصه DisplayMember مربوط به ComboBox رو بجای person.code، برابر با code بگذارید، و مشخصه ValueMember رو هم همینطور.

reza1699
پنج شنبه 29 فروردین 1392, 23:59 عصر
مشخصه DisplayMember مربوط به ComboBox رو بجای person.code، برابر با code بگذارید، و مشخصه ValueMember رو هم همینطور.

برادر من شما خودتون چیزی رو که میگید یه تست بکنید ببینید اصلا جواب میده یا خیر !
من دیتاست استفاده کردم ، توی دیتا ست باید اسم تیبل بیاد
ضمنا من در ست کردن اطلاعات توی کومبوباکس اصلا مشکلی نداشتم که شما این راه رو دادید به من !

همچنین با راه شما تنها کد 1 در کومبوباکس ادد میشد !

plus
جمعه 30 فروردین 1392, 00:27 صبح
درسته، خوب شما روی خطی که مربوط به Convert هست Break Point بگذارید ببینید مقدار ComboBox چی هست که Convert.ToInt32 خطا میده.

reza1699
جمعه 30 فروردین 1392, 19:16 عصر
درسته، خوب شما روی خطی که مربوط به Convert هست Break Point بگذارید ببینید مقدار ComboBox چی هست که Convert.ToInt32 خطا میده.

دوست عزیز ازتون ممنونم ! خودم مشکل رو پیدا کردم

در قطعه کد اول باید جای خط 5 و 6 عوض میشد ! همین !

یعنی به جای
comboBox10.DataSource = ds1;
comboBox10.DisplayMember = "person.code";

نوشته میشد :

comboBox10.DisplayMember = "person.code";
comboBox10.DataSource = ds1;