PDA

View Full Version : مبتدی: پر کردن textbox ها از دیتا بیس



mortezasar
سه شنبه 28 شهریور 1391, 13:43 عصر
با سلام من یک دیتا بیس دارم که توش مشخصات افراد و یک کد منحصر به فرد هستش من در ثبت اطلاعات مشکلی ندارم اما یک فرم دارم میخوام زمانی که کدی رو وارد میکنم و روی دکمه کلیک می کنم مشخصات فردی که این کد مال اون هست توی text box های فرم نمایش داده بشه
مثلا
نام :علی
نام خانوادگی: علوی
کد :100

میخوام زمانیکه توی یک تکست باکس کد 100 رو زدم و روی دکمه کلیک کردم نام و نام خانوادگی ش توی دو تا تکست باکس که واسه نام و نام خانوادگی گذاشتم بیاد
واسه رویداد کلیک دکمه چی بنویسم

ehsan7007
سه شنبه 28 شهریور 1391, 13:56 عصر
در مورد فیلتر و Bind جستجو کنید.

amir4015
سه شنبه 28 شهریور 1391, 16:09 عصر
سلام به وسيله كد زير مي توني با دادن شماره سطر و ستون اين كار رو بكني

textBox26.Text = ds2.Tables["table1"].Rows[(10)]["colesha"];

ehsan7007
سه شنبه 28 شهریور 1391, 16:18 عصر
ولی ایشون گفتن میخوان بر اساس متن یکی از فیلد ها اینکار رو انجام بدن! کد شما فقط متن یک فیلد رو نشون می ده.
یک نوع جستجو ، که به جای نمایش در گرید از تکست باکس استفاده می شه.

ali_habibi1384
سه شنبه 28 شهریور 1391, 16:22 عصر
توي رويداد لود فرمي كه تكست باكسها وجود دارند بايد با يك SQLCommand اطلاعاتتونو از ديتا بيس بخونيد و به يك ديتا تيبل منتقل كنيد.
سپس اطلاعات رو از ديتا تيبل به تكستباكسها منتقل كنيد:

text1.text = datatable1.rows[0]["Name"].tostring();

omidamiry
سه شنبه 28 شهریور 1391, 16:31 عصر
شما باید چندتا کار انجام بدی
1.جستجوی این کد در بانک اگر وجودداشته باشد دیتاست پر میشود و تعداد ردیفش یک است مگر کد کلید نباشه

بعد می تونی با کد زیر به مقدار سطر و ستون جدول بازگشتی دسترسی داشته باشی

ds.table["t_name"].rows[x][y].tostring();

مقدار خروجی رو در تکس باکس ها بذار

danialafshari
سه شنبه 28 شهریور 1391, 18:02 عصر
من از این کد استفاده می کنم

txtCompany.DataBindings.Add("Text", dbDataSet.tbl1, "Company");

Company : نام فیلد
dbDataSet.tbl1 :نام دیتا ست و جدول
Text : نوع

موفق باشید

mortezasar
سه شنبه 28 شهریور 1391, 18:20 عصر
سلام میشه بیشتر توضیح بدید (آخه مبتدی هستم ) یعنی واسه هر تکست باکس یک بار این کد رو بنویسم آخه من میخوام تا توی تکست باکس کد رو زدم و روی باتن کلیک کردم اگه کد توی جدول بود اطلاعاتش بیاد توی تکس باکس ها قرار بگیره اگرم نبود یک پیغام بده

danialafshari
سه شنبه 28 شهریور 1391, 18:28 عصر
سلام میشه بیشتر توضیح بدید (آخه مبتدی هستم ) یعنی واسه هر تکست باکس یک بار این کد رو بنویسم آخه من میخوام تا توی تکست باکس کد رو زدم و روی باتن کلیک کردم اگه کد توی جدول بود اطلاعاتش بیاد توی تکس باکس ها قرار بگیره اگرم نبود یک پیغام بده

نه این کد رو تو فرم لود می ذاری وقتی که جستجو کردی آتوماتیک مقادیر وارد لیبل یا تکست باکس هات میشن

ali_habibi1384
سه شنبه 28 شهریور 1391, 18:32 عصر
سلام میشه بیشتر توضیح بدید (آخه مبتدی هستم ) یعنی واسه هر تکست باکس یک بار این کد رو بنویسم آخه من میخوام تا توی تکست باکس کد رو زدم و روی باتن کلیک کردم اگه کد توی جدول بود اطلاعاتش بیاد توی تکس باکس ها قرار بگیره اگرم نبود یک پیغام بده
خب واسه هر تكست باكس يكبار بايد بخوني از ديتا تيبلت ديگه . كار ديگه اي ميخواي بكني؟
شايد منظورت ويزارده؟

mortezasar
سه شنبه 28 شهریور 1391, 18:37 عصر
نه این کد رو تو فرم لود می ذاری وقتی که جستجو کردی آتوماتیک مقادیر وارد لیبل یا تکست باکس هات میشن

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

danialafshari
سه شنبه 28 شهریور 1391, 19:10 عصر
اگه پروژه ای دارید که دارید روش کار می کنید فکر می کنم بزارید اینجا دوستان اصلاح کنند زودتر به جواب برسی

h_r_sh
سه شنبه 28 شهریور 1391, 20:16 عصر
private void button1_Click(object sender, EventArgs e)
{
string constr = "Data Source=.;Initial Catalog=myDB;Integrated Security=True";
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("select * from myTable where (UserID = @a)", con);
SqlParameter _ap = new SqlParameter("@a", this.txtID.Text);
cmd.Parameters.Add(_ap);
if (con.State != ConnectionState.Open)
con.Open();
SqlDataReader r = cmd.ExecuteReader();
if (r.HasRows)
{
this.txtFirstName.Text = r["UserName"].ToString();
this.txtLastName.Text = r["LastName"].ToString();
}
else
MessageBox.Show("کاربر با این کد وجود ندارد!");
}

mortezasar
چهارشنبه 29 شهریور 1391, 12:02 عصر
سلام ممنون از کد اما حالا یک اخطار میده اگه کدی که وارد میکنم وجود نداشته باشه درست کار میکنه و پیغام میده اما اگه کد تو جدول وجود داشته باشه این ارور رو میده
Invalid attempt to read when no data is present.


private void button1_Click(object sender, EventArgs e)
{
string constr = "Data Source=(local);Initial Catalog=person;Integrated Security=True";
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("select * from psave where (code = @a)", con);
SqlParameter _ap = new SqlParameter("@a", this.txtcode.Text);
cmd.Parameters.Add(_ap);
if (con.State != ConnectionState.Open)
con.Open();
SqlDataReader r = cmd.ExecuteReader();
if (r.HasRows)
{
this.txtname1.Text = r["nam"].ToString();
this.txtfamily1.Text = r["fam"].ToString();
}
else
MessageBox.Show("کاربر با این کد وجود ندارد!");
}

danialafshari
چهارشنبه 29 شهریور 1391, 13:49 عصر
برای نمایش اطلاعات از این کد استفاده کن

بالای فرم در قسمت کلاس اول اینا رو بزار

مسیر connection string بانک خودت رو به جای مال من بزار

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename='D:\Project\D atabase Anbar-Ready\Anbar.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True;Pooling=False");
SqlDataAdapter adap = new SqlDataAdapter();
DataTable dt = new DataTable();

حالا زیرش این تابع رو بزار

public void select(System.Windows.Forms.DataGridView dgv, string source)
{
SqlCommand cmd = new SqlCommand();

con.Open();

cmd.Connection = con;
cmd.CommandText = source.Trim().ToString();
cmd.ExecuteNonQuery();

adap.SelectCommand = cmd;
adap.SelectCommand.ExecuteNonQuery();

dt.Clear();
adap.Fill(dt);
dgv.DataSource = dt;

con.Close();
}


حالا روی دکمه ی جستجوت از تابع به این شکل استفاده کن

select(dataGridView1, @"کوئری");
// مثلا
select(dataGridView1, @"select * from table1");


موفق باشید

h_r_sh
چهارشنبه 29 شهریور 1391, 21:20 عصر
سلام ممنون از کد اما حالا یک اخطار میده اگه کدی که وارد میکنم وجود نداشته باشه درست کار میکنه و پیغام میده اما اگه کد تو جدول وجود داشته باشه این ارور رو میده
Invalid attempt to read when no data is present.


private void button1_Click(object sender, EventArgs e)
{
string constr = "Data Source=(local);Initial Catalog=person;Integrated Security=True";
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("select * from psave where (code = @a)", con);
SqlParameter _ap = new SqlParameter("@a", this.txtcode.Text);
cmd.Parameters.Add(_ap);
if (con.State != ConnectionState.Open)
con.Open();
SqlDataReader r = cmd.ExecuteReader();
if (r.HasRows)
{
this.txtname1.Text = r["nam"].ToString();
this.txtfamily1.Text = r["fam"].ToString();
}
else
MessageBox.Show("کاربر با این کد وجود ندارد!");
}

این خط رو اضافه کنید:

r.Read();



private void button1_Click(object sender, EventArgs e)
{
string constr = "Data Source=(local);Initial Catalog=person;Integrated Security=True";
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("select * from psave where (code = @a)", con);
SqlParameter _ap = new SqlParameter("@a", this.txtcode.Text);
cmd.Parameters.Add(_ap);
if (con.State != ConnectionState.Open)
con.Open();
SqlDataReader r = cmd.ExecuteReader();
if (r.HasRows)
{
r.Read();
this.txtname1.Text = r["nam"].ToString();
this.txtfamily1.Text = r["fam"].ToString();
}
else
MessageBox.Show("کاربر با این کد وجود ندارد!");
}

mortezasar
چهارشنبه 29 شهریور 1391, 22:10 عصر
سلام
آقا مرسی درست شد خیلی ممنون
از همه دوستان که راهنمایی کردن خیلی ممنونم

amir4015
پنج شنبه 30 شهریور 1391, 00:27 صبح
ولی ایشون گفتن میخوان بر اساس متن یکی از فیلد ها اینکار رو انجام بدن! کد شما فقط متن یک فیلد رو نشون می ده.
یک نوع جستجو ، که به جای نمایش در گرید از تکست باکس استفاده می شه.
دوست عزيز اين كد اطلاعات رو درون تكس باكس نشون مي ده
اين جيزي كه شما مي گيد با يك شرط ساده بدست مي ياد اين كه كفتن نداشت

ali_habibi1384
پنج شنبه 30 شهریور 1391, 07:27 صبح
دوست عزيز اين كد اطلاعات رو درون تكس باكس نشون مي ده
اين جيزي كه شما مي گيد با يك شرط ساده بدست مي ياد اين كه كفتن نداشت
بارها گفتم هدف بعضي از افراد بالابردن تعداد تاپيك هستش و نه پاسخگويي مناسب به سوالات كاربران. به دل نگيريد امير آقا.اين وضع در همه برحه هاي زماني بوده:چشمک:

r_s1389@yahoo.com
دوشنبه 01 آبان 1391, 21:00 عصر
بارها گفتم هدف بعضي از افراد بالابردن تعداد تاپيك هستش و نه پاسخگويي مناسب به سوالات كاربران. به دل نگيريد امير آقا.اين وضع در همه برحه هاي زماني بوده:چشمک:
شما که بارها گفتین چه لزومی داشت باز هم بگین شرمنده ها