PDA

View Full Version : جستجوی یک رکورد



setak
دوشنبه 27 تیر 1384, 14:12 عصر
من در برنامه ام از sql server استفاده می کنم . یکی از فیلدهای دیتابیس شماره کارمندی است حالال می خوام با نوشتن یک شماره کارمندی در یک textbox و فشار دادن دکمه جستجو اطلاعات آن رکورد در textbox هایی که برای اینکار bind کرده ام مشاهده شود لطفا مرا راهنمایی کنید .

علیرضا مداح
دوشنبه 27 تیر 1384, 22:10 عصر
سلام .
اگر فیلد "شماره کارمندی" ، Primary Key میباشد ، میتوانید از تابع Find مربوط به کالکشن DataRows استفاده نمایید که مقداری را به عنوان پارامتر ورودی دریافت کرده و در بانک اطلاعاتی و در فیلد کلید اصلی آن را جستجو مینماید و مقدار بازگشتی آن از نوع DataRow میباشد ، اما باید توجه داشته باشید که برای استفاده از تابع Find میبایست دیتاست مورد نظر را با استفاده از متد FillSchema مربوط به شی ء DataAdapter پر نمایید تا تمام محدودیت ها(Constraints) و کلید اصلی و خواص ستونها در داخل دیتاست پیکربندی شوند . مثال :


[C#]
DataRow dr;
dr = MyDataSet.Tables[0].Rows.Find(PersonalNumber);
txtFirstName.Text = dr["FirstName"].ToString();
txtFirstName.Text = dr["LastName"].ToString();

[VB.Net]
Dim dr As DataRow
dr = MyDataSet.Tables(0).Rows.Find(PersonalNumber)
txtFirstName.Text = dr("FirstName")
txtLastName.Text = dr("FirstName")


همچنین شیء DataTable دارای تابعی به نام Select میباشد که مقدار پارامتر ورودی آن شرط مورد نظر برای فیلتر نمودن داده میباشد و مقدار بازگشتی آن شی ء DataRowCollection میباشد . به طور مثال :



[C#]
DataRow[] dr;
dr = MyDataSet.Tables[0].Select("PersonalNumber = 12");
txtFirstName.Text = dr[rownumber]["FirstName"].ToString();
txtLastName.Text = dr[rownumber]["LastName"].ToString();

[VB.Net]
Dim dr() As DataRow
dr = MyDataSet.Tables(0).Select("PersonalNumber = 12")
txtFirstName.Text = dr(rownumber)("FirstName")
txtLastName.Text = dr(rownumber)("FirstName")


البته راه های دیگری نیز در جهت انجام اینکار وجود دارد .

Behrouz_Rad
سه شنبه 28 تیر 1384, 06:57 صبح
پاسخ جناب مداح صحیح اما...
از آنجا که هر کارمند با یک شماره کارمندی منحصر به فرد مشخص می شود، پس برای هر کارمند تنها یک رکورد می تواند وجود داشته باشد.
در این حالت، در بین انتخاب های مختلف، DataReader به دلیل خاصیت بارگذاری تنها یک رکورد در هر زمان در حافظه، سریعترین و بیشترین کارایی رو از خودش نشون میده.
پس از ریخته شدن اطلاعات در DataReader، می توان با استفاده از دستور (myTextBox = DataReader.Item(0، اطلاعات یک ستون را در تکست باکس مورد نظر قرار داد.

علیرضا مداح
سه شنبه 28 تیر 1384, 08:49 صبح
بله . بنده هم عرض کردم که راههای مختلفی برای انجام اینکار وجود دارد ...
و در تکمیل پیشنهاد آقای بهروز راد بهتر است که از یک Stored Procedure استفاده نموده و در درون برنامه پارامترهای مورد نظر را به آن پاس کرده و خروجی را داخل یک DataReader بریزید ...