PDA

View Full Version : سوال: جلوگیری از درج تکراری در txtbox



maryam64-69
شنبه 24 فروردین 1392, 12:46 عصر
سلام من از این کد برای درج در txtboxاستفاده میکنم ولی اینکد همه داده های تکراری رو هم واسم چاپ میکنه چیکار کنم که داده های تکراری چاپ نشه
SqlConnection con = new SqlConnection("Data Source=SFIX-PC;Initial Catalog=GiahanDarooei;Integrated Security=True");
SqlCommand scom = new SqlCommand("select * from V_Giah where GiahName like N'%" + txt1.Text + "%'", con);
con.Open();
SqlDataReader reader = scom.ExecuteReader();
while (reader.Read())
{
txt2.Text += reader.GetValue(0).ToString() + "\t" + "\t";
txt3.Text += reader.GetValue(9).ToString() + "\t" + "\t";
con.Close();
البته از این کد هم اسبواده کردم ولی چیری درج نمیشد
if (dtt.Rows.Count > 0) txt3.Text = dtt.Rows[0]["GiahName"].ToString();

amir_pro
شنبه 24 فروردین 1392, 13:31 عصر
اگه میخوای داده تکراری ثبت نکنی خیلی راه هست. مثلا اگه قبل ثبت اطلاعاتت رو تو دیتاست میریزی میتونی قبل ثبت شدن ببینی همچین رکوردی با کد خاصی تو دیتاست هست یا نه اگه نبود ثبت کنی. راه دیگش اینه که قبل از ثبت از دیتاریدر و متد executereader مربوط به command استفاده کنی.

dr=cmd.executereader();
if (dr.hasrow()
{
//پیغام خطا چون وجود دارد
}
else
{
//ثبت در بانک
}


همین. راه خیلی هست. باید خودت نسبت به خیلی چیزا راهش رو انتخاب کنی. میزان اطلاعاتی که میخوای بیاری تو رم و ...

maryam64-69
شنبه 24 فروردین 1392, 14:34 عصر
بعد از درج هنگام جستجو و نمایش دوباره اطلاعات.من تو viewیه جدول از فیلدهای مورد نیاز کل جدول هام درست کردم و هنگام جستجو اطالعات اون جدول جیتجو میشه مثلا گیاهی که این خاصیت رو داشته باشه

amir_pro
شنبه 24 فروردین 1392, 14:47 عصر
منظورت رو متوجه نشدم. خوب بعد از درج در هنگام جستجو خوب مشخصه که باید یه مقدار تکراری که قبلا ثبت شده وارد بشه تا جستجو بر اساس اون انجام بشه. اگه میخوای سریعتر به جواب برسی کامل مشکلتا مطرح کن

h_assefi
شنبه 24 فروردین 1392, 15:18 عصر
دوست عزیز مشکلت را کامل بگو تا بشه را حلی گفت

maryam64-69
شنبه 24 فروردین 1392, 16:30 عصر
من یه viewایجاد کردم که از جدول اول من فیلد giahN و از جدول دوم فیلد khavas رو انتخاب کردم که بعنوان مثال گیاه 1 خاصیت های a1,a2وa3رو داره تو viewچون خواص دارای کده هر سه بار که این خاصیت ها تکرار میشن نام گیاه هم تکرار میشه گیاه 1 a1 - گیاه 1 a2 - گیاه 1 a3 حالا زمانی که من خاصیت a1 رو جستجو میکنم همراه با خاصیت a1 سه بار گیاه 1 هم تکرار میشه میخام از این تکرار جلو گیری کنم یعنی داده هایی که کاملا شبیه هم باشن یک بار بیشتر درج نشه

maryam64-69
یک شنبه 25 فروردین 1392, 01:07 صبح
کسی واقعا نمی دونه این کارو چطوری انجام بدم

veniz2008
یک شنبه 25 فروردین 1392, 09:34 صبح
سلام.
دلیل اینکه داده تکرای دارید اینه که از LIKE استفاده می کنید و احتمالا جستجو رو در رویداد TextChanged مربوط به تکست باکس انجام میدید!.
دوست عزی like یعنی شبیه و شما زمانیکه a تایپ میکنید، هر چیزی که شبیه این a باشه (a1 و a2 و a3 و... ) هم نمایش داده میشه.
Like معمولا زمانی استفاده میشه که یا نمیخوایم کاربر همه عبارت رو تایپ کنه یا احتمال میدیم که کل کلمه در ذهن کاربر نباشه یا اینکه قصد داریم عبارات شبیه به هم رو بدست بیاریم.
در مثال شما بهتره که از Like استفاده نکنید. از کد زیر استفاده کنید:

SqlConnection myconnection = new SqlConnection("server=(local);database=BankDari;tr usted_connection=yes");
SqlDataAdapter da = new SqlDataAdapter("select * from V_Giah where GiahName = @giahname", myconnection);
da.SelectCommand.Parameters.AddWithValue( "@giahname", txt1.Text.Trim());
DataTable dt = new DataTable();
da.Fill(dt);
if(dt.Rows.Count > 0)
MessageBox.Show("giah vojod darad");
else
{
// دستورات درج رو اینجا بنویسید
}