PDA

View Full Version : سوال: مشکل در پر کردن TextBox ها بر اساس اطلاعات جدول در بانک اطلاعاتی؟



پیام حیاتی
سه شنبه 12 اسفند 1393, 15:14 عصر
سلام
این فرم برنامه هست :

129047

می خواهم بعد از وارد کردن شماره پرسنلی و کلیک بر روی دکمه جستجو ، اطلاعات در textbox ها نمایش داده شود.
تشکر

sajadsobh
سه شنبه 12 اسفند 1393, 15:53 عصر
از دیتاریدر استفاده کنید:

try
{
SqlCommand cmd = new SqlCommand("SELECT * FROM Employees WHERE ID = @ID", SqlCon);
cmd.Parameters.AddWithValue("@ID", ID);
SqlCon.Open();
SqlDataReader dr = cmd.ExecuteReader();
dr.Read();
FirstName = dr["FirstName"].ToString();
LastName = dr["LastName"].ToString();
CodeMelli = dr["CodeMelli"].ToString();
Address = dr["Address"].ToString();
Mobile = dr["Mobile"].ToString();
dr.Close();
}
finally
{
if (SqlCon.State != ConnectionState.Closed)
SqlCon.Close();
}

پیام حیاتی
سه شنبه 12 اسفند 1393, 16:41 عصر
بدین شکل نوشتم ، خطا داره :

SqlConnection con = new SqlConnection("Data Source=localhost; Initial Catalog=Project; Integrated Security=TRUE ");
con.Open();
SqlCommand cmd = new SqlCommand("SELECT * from Personels where p_id= '" + textBox17.Text + "' ", con);
SqlDataReader dr = cmd.ExecuteReader();
dr.Read();
textBox16.Text = dr.["p_name"].ToString();
dr.Close();



129051


این روش خودم هست :

SqlConnection con = new SqlConnection("Data Source=localhost; Initial Catalog=Project; Integrated Security=TRUE ");
SqlCommand com = new SqlCommand("SELECT * from Personels where p_id= '" + textBox17.Text + "' ", con);
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet ds = new DataSet();
da.Fill(ds, "MAGMember");
textBox16.Text = ds.Tables["MAGMember"].Rows[1]["p_name"].ToString();

اما به مقدار row گیر یده که وجود نداره ، مقدارش رو برابر 0 قرار میدم باز همین اخطار وجود داره.
129052

نمایی از جدول بانک اطلاعاتی :
129053

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

محمد آشتیانی
سه شنبه 12 اسفند 1393, 17:04 عصر
سلام
به نظر میرسه وقتی شما داری بر اساس شماره پرسنلی جستجو میکنی ، نتیجه فقط یک سطر برگردونده میشه و شما سطر دوم رو داری میخونی که خالیه
یعنی اینجا

textBox16.Text = ds.Tables["MAGMember"].Rows[1]["p_name"].ToString();


به اینصورت اصلاح کن

SqlConnection con = new SqlConnection("Data Source=localhost; Initial Catalog=Project; Integrated Security=TRUE ");
SqlCommand com = new SqlCommand("SELECT * from Personels where p_id= '" + textBox17.Text + "' ", con);
SqlDataAdapter da = new SqlDataAdapter(com);
DataSet ds = new DataSet();
da.Fill(ds, "MAGMember");
textBox16.Text = ds.Tables["MAGMember"].Rows[0]["p_name"].ToString();



موفق باشید.

پیام حیاتی
سه شنبه 12 اسفند 1393, 17:21 عصر
بسیار ممنون مشکل حل شد :قلب: ، فقط من یک اشتباه دیگه داشتم اون هم این بود که به جای p_id باید نام فیلد شماره پرسنلی قرار می گرفت.
برای حالت ComboBox جواب نمیده :
comboBox4.SelectedValue = ds.Tables["MAGMember"].Rows[0]["p_m_id"].ToString();
جدول دیگری داریم به نام مدرک که ارتباط داره با جدول پرسنل ، m_id کلید اصلی جدول مدرک است.
129055

sajadsobh
سه شنبه 12 اسفند 1393, 18:23 عصر
یعنی میخواستین خطا نگیره؟! :متفکر:
اولا که چون آیدی از نوع صحیحه باید کوئری به این شکل باشه:

SqlCommand cmd = new SqlCommand("SELECT * from Personels where p_id= '" + Convert.ToInt32(textBox17.Text) + "' ", con);

بعدشم اینکه واسه خوندن ردیف های دیتاریدر این درسته:

textBox16.Text = dr["p_name"].ToString();

نه اینجوری که شما نوشتی:

textBox16.Text = dr.["p_name"].ToString();

بعدشم در مورد کمبوباکس اگه اون مقدار SelectedValue از نوع صحیح هست نباید String بفرستی دیگه داداش من.

پیام حیاتی
سه شنبه 12 اسفند 1393, 18:47 عصر
یعنی میخواستین خطا نگیره؟! :متفکر:
اولا که چون آیدی از نوع صحیحه باید کوئری به این شکل باشه:

SqlCommand cmd = new SqlCommand("SELECT * from Personels where p_id= '" + Convert.ToInt32(textBox17.Text) + "' ", con);

بعدشم اینکه واسه خوندن ردیف های دیتاریدر این درسته:

textBox16.Text = dr["p_name"].ToString();

نه اینجوری که شما نوشتی:

textBox16.Text = dr.["p_name"].ToString();

بعدشم در مورد کمبوباکس اگه اون مقدار SelectedValue از نوع صحیح هست نباید String بفرستی دیگه داداش من.

منون از پاسخ.
string رو برداشتم اما تغییری نکرد ، value هم همینطور ، با این دستور پر شد :

comboBox4.SelectedText = ds.Tables["MAGMember"].Rows[0]["p_m_id"].ToString();

آیا این کد برای پر کردن combobox روش درستی است؟بعدا" اگر بخوام برای دکمه ویرایش کد ذخیره تغییرات رو انجام بدم مشکلی به وجود نمیاره؟
ممنون