PDA

View Full Version : کد جستجو در c#



violet68
چهارشنبه 28 اردیبهشت 1390, 22:55 عصر
سلام
من میخام یک buttonبرای جستجو بر اساس id ایجاد کنم تا همه اطلاعات مربوط به اون id در textboxها نمایش داده بشن و هر کدوم از اون اطلاعات که مورد نیاز بود ویرایش بشن .ولی کدی برای جستجو و نمایش اطلاعات بلد نیستم. تا هفته دیگه باید پروژم رو تحویل بدم.لطفا راهنماییم کنید. ممنون میشم:چشمک:

shecarchi
چهارشنبه 28 اردیبهشت 1390, 23:37 عصر
درباره پروژه توضیح بده که میخوای تو فایل بگردی یا تو دیتابیس بگردی یا تو ارایه؟

violet68
پنج شنبه 29 اردیبهشت 1390, 09:21 صبح
میخام تو دیتابیس جستجو کنه

javad_r_85
پنج شنبه 29 اردیبهشت 1390, 12:02 عصر
ار بایندیگ سورس استفاده کن

zare69
پنج شنبه 29 اردیبهشت 1390, 14:16 عصر
سلام میتونی از بانک select بگیری براساس
select * from tbl1 where id=1

violet68
پنج شنبه 29 اردیبهشت 1390, 18:49 عصر
این کدی که شما نوشتید رو بلدم ولی برای datagrideview برای textbox ها هم همینو باید بنویسم؟

morteza271
پنج شنبه 29 اردیبهشت 1390, 18:56 عصر
یعنی چی برای DataGridView و برای TextBox؟!!
با استفاده از همون کدی که دوستمون گذاشتن شما میتونید اطلاعات مربوز به یه id خاص رو از دیتابیس بخونین و در TextBox و یا هرچیز دیگه نمایش بدین!
اگه منظورتون چیز دیگه ای لطفا بیشتر توضیح بدین.
موفق باشید

violet68
پنج شنبه 29 اردیبهشت 1390, 20:22 عصر
ببینید من این کد رو برای نمایش دارم :
sqlconnection con =new sqlconnection
sqldataadapter da = new sqldataadapter ("select*from tb1 where id="+textbox1.text.trim()+"",con)
dataset ds= new dataset()
da.fill(ds,"tb1")
datagridview1.datasource = ds.tables["tb1"].defaultview


اما همونطور که گفتم تو دیتاگریدویو نمایش اطلاعات میده اما من میخام برای راحتی کاربر کدی بنویسم که اطلاعات رو توی textbox های مربوط به هر فیلد مثل نام،نام خانوادگی و... نمایش بده و کاربر هرفیلدی رو که میخاد ویرایش کنه و مجبور نباشه اطلاعات دیگرو که نیاز به ویرایش ندارن دوباره بنویسه.
نمیدونم تونستم منظورمو برسونم یا نه

morteza271
پنج شنبه 29 اردیبهشت 1390, 20:38 عصر
اوکی.
شما میتونید اینطوری این کار رو بکنید:

SqlConnection con = new SqlConnection();
SqlDataAdapter da = new SqlDataAdapter("select Name,LastName,Mobile,BirthDay from tb1 where id=1", con);
DataTable dt = new DataTable();
da.Fill(dt);

txtName.Text = dt.Rows[0]["Name"].ToString();
txtLastName.Text = dt.Rows[0]["LastName"].ToString();
txtMobile.Text = dt.Rows[0]["Mobile"].ToString();
txtBirthDay.Text = dt.Rows[0]["BirthDay"].ToString();

برای ویرایش هم میتونید یه دکمه بذارید که هر وقت کاربر اون رو زد تغییرات رو ذخیره کنه.
موفق باشید

javad_r_85
پنج شنبه 29 اردیبهشت 1390, 22:53 عصر
دوستان این چه کاریه که هر بار اطلاعات جدید را از دیتابیس بخونید این کار باعث کاهش سرعت می شه شما همون یه بار که اطلاعا ت کل را گرفتی با استفاده از بایندیگ سورس در دفعات بعد می تونی این اطلاعات را به راحتی فیلتر کنی و اونی که می خوایی را نمایش دهی

morteza271
پنج شنبه 29 اردیبهشت 1390, 23:01 عصر
خوب این کد من فقط یه نمونه مثال هست برای اینکه کار دوستمون رابیفته وگرنه نگفتم که بهترین روشه و بهینه ترینه!!!
دوستمون طریقه نمایش در تکست باکس میخواستن و من هم براشون گذاشتم.

F.zeinali
پنج شنبه 29 اردیبهشت 1390, 23:36 عصر
سلام میتونی از کد زیر استفاده کنی

string ConnectionString = "Data Source=(local);User id=sa;password=12345;initial catalog=BankName";
using (SqlConnection cn=new SqlConnection(ConnectionString))
{
SqlCommand cmd = cn.CreateCommand();
cmd.CommandText = "SELECT * FROM Employee WHERE ID=@id";
cmd.Parameters.Clear();
SqlParameter id = new SqlParameter();
id.ParameterName = "@id";
id.SqlDbType = SqlDbType.Int;
id.IsNullable = false;
id.Value = textBox1.Text;
cmd.Parameters.Add(id);
try
{
DataTable DT = new DataTable();
cn.Open();
IDataReader dr = cmd.ExecuteReader();
DT.Load(dr);
dataGridView1.DataSource = DT;
cn.Close();


}
catch (SqlException ex)
{

throw ex;
}
catch(Exception ex)
{
throw ex;
}

F.zeinali
پنج شنبه 29 اردیبهشت 1390, 23:37 عصر
البته روش بهتر و اسون تر اینه که از Binding Source استفاده کنی

violet68
جمعه 30 اردیبهشت 1390, 10:48 صبح
binding source ؟ میشه 1 نمونه از کدش رو برام بذارید؟ من با کدش آشنایی ندارم. ممنون میشم

violet68
جمعه 30 اردیبهشت 1390, 11:17 صبح
این کدی که گذاشتید id.Value = textBox1.Text; یعنی id رو از تکست باک بخونه ؟یا مقدار تکست باکس 1 رو جایگزین مقدار قبلی بکنه؟

morteza271
جمعه 30 اردیبهشت 1390, 11:28 صبح
چون دوستمون نبودن جواب بدن من با اجازشون جواب میدم:
توی کوئری تون یه پارامتر دارین به نام @id و برای اینکه کوئری اجرا بشه نیاز به این داره که یه مقداری رو به @id بدین.
و کد دوستمون به این صورته که مقدار پارامتر رو از داخل تکست باکس میخونه و سپس اطلاعات مربوط به اون id رو میخونه و در یه گریدویو نمایش میده.
در اصل کد دوستمون همون کدی هست که من دیشب براتون گذاشتم با کمی تغییرات.
موفق باشید.

hesam.rezaee
چهارشنبه 10 آبان 1391, 15:20 عصر
سلام من هم همین مشکل را دارم تغریبا
من برنامه انبارداری مینویسم با sql server
تو قسمت ویرایش اطلاعات انبار میخوام بر اساس نوع کالا دیگر فیلدهای جدول را داخل تکس باکسای جدا گونه ای نمایش بده یعنی بعداز پیدا کردن کالای مورد نظر با دبل کلیک روی کالای مورد نظر تمامی اطلاعات داخل تکس باکسا بالای فرمم نمایش بده و بعد ویرایش ذخیرش کنم

لطفا کمکم کنید ممنونم94460
من از این کد استفاده میکنم اما بجای جستجو میادا ی فیلد میسازه با نام kala

private void tbxserch_TextChanged(object sender, EventArgs e)
{



SqlConnection conn = new SqlConnection();
conn.ConnectionString = @"Data Source=MNGI-PC;Initial Catalog=Store;Integrated Security=True";
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select *from tanbar where kala= '" + tbxserch.Text + "' " ;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(dt);
dataGridView1.DataSource = dt;
}