PDA

View Full Version : مشکل با دستور DataView.find



fatemeh rouzbeh
پنج شنبه 25 شهریور 1389, 00:57 صبح
سلام
من می خوام یه رکوردی رو بر اساس چند فیلد پیدا کنم. اما نمی دونم چرا وقتی از dataview استفاده می کنم جواب نمی ده.:ناراحت:
دستور دیگه ای برای search وجود نداره؟؟؟؟

amiramt
پنج شنبه 25 شهریور 1389, 11:14 صبح
سلام
اگه منظورتون را درست فهمیده باشم ، من به این خواسته شما قبلا پاسخ داده ام که در آدرس زیر پست شماره ی 16 می باشد

http://www.barnamenevis.org/forum/showthread.php?t=245726&page=2

اگه دستوری که نوشتم ، کم و کسری دارد همان جا بیان کنید تا پاسخ دهم

s.khoshfekran
پنج شنبه 25 شهریور 1389, 11:38 صبح
هر قیلدی که بخوای توش جستجو کنی اول باید Sort کنی بعدش Find کنی

amiramt
پنج شنبه 25 شهریور 1389, 12:16 عصر
هر قیلدی که بخوای توش جستجو کنی اول باید Sort کنی بعدش Find کنی

نیازی به sort ندارد ، دستوری که نوشتم از رکورد اول تا آخر را جستجو می کند:متفکر:

s.khoshfekran
پنج شنبه 25 شهریور 1389, 12:26 عصر
آقای amiramt این کد شما اصلا" اصولی نیست!!
1- اگر تعداد رکورد ها زیاد باشد سرعت بصورت چشمگیری پایین می آید
2- اگر دو نمونه را پیدا کند فقط نمونه اول را بر می گرداند!
3- قابلیت انعطاف پذیری نداره!!

amiramt
پنج شنبه 25 شهریور 1389, 12:32 عصر
از نظر سرعت درست میگید ولی شما می توانید خصوصیت MultiSelect را فعال کنید و کلمه ی Breck; را از دستور حذف کنید تا تمام سطر های پیدا شده به حالت انتخاب در آید

اگه دستور بهتری پیدا کردید به من هم خبر بدید;)

s.khoshfekran
پنج شنبه 25 شهریور 1389, 12:46 عصر
متد find و Sort تمام رکورد هارو پیدا میکنه برات!
دو خط کده :چشمک:
یه Search بزنی بد نیست :قهقهه:

fatemeh rouzbeh
پنج شنبه 25 شهریور 1389, 17:05 عصر
متد find و Sort تمام رکورد هارو پیدا میکنه برات!
دو خط کده :چشمک:
یه Search بزنی بد نیست :قهقهه:


من از این دستورات یه جای دیگه استفاده کردم و کاملا جواب داده. البته اونجا بر اساس دو فیلد جستجو می کرد. اما الان می خوام جستجو بر اساس 4 فیلد باشه. دستورات کاملا درسته ، نمیدونم چرا کار نمی کنه.:عصبانی:

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



eblaghView.Table = Eblaghds.Tables["eblaghetebar"];
eblaghView.Sort = "subject, bank, radifetebari, sarmayeType";

object[] arrValue = new object[4];

arrValue[0] = cmbSubject.Text.ToString();
arrValue[2] = cmbBank.Text.ToString();
arrValue[1] = cmbRadif.Text.ToString();

if (rdbSabet.Checked)
{
arrValue[3] = rdbSabet.Text.ToString();
}
else
{
arrValue[3] = rdbGardesh.Text.ToString();
}


int check = eblaghView.Find(arrValue);

fatemeh rouzbeh
پنج شنبه 25 شهریور 1389, 18:31 عصر
سلام
اگه منظورتون را درست فهمیده باشم ، من به این خواسته شما قبلا پاسخ داده ام که در آدرس زیر پست شماره ی 16 می باشد

http://www.barnamenevis.org/forum/showthread.php?t=245726&page=2

اگه دستوری که نوشتم ، کم و کسری دارد همان جا بیان کنید تا پاسخ دهم


از کمکتون واقعا ممنونم. ولی ترجیح میدم بتونم از dataview.find استفاده کنم. اگه دستورات درست اجرا بشه تو هر بار سرچ فقط یه رکورد باید پیدا بشه. یه جورایی مجموع این 4 فیلد میشه کلید اصلی. ولی من اونها رو به عنوان کلید استفاده نکردم. به جاش یه فیلد عددی گذاشتم که هر بار اضافه میشه. الانم می خواستم برای جلوگیری از تکرار اون 4 فیلد رو چک کنم که متاسفانه کار نمی کنه.:ناراحت:
شاید با این توضیحات بهتر بتونید کمکم کنید.
مرسی

s.khoshfekran
جمعه 26 شهریور 1389, 18:50 عصر
دستورات به نظر درست میاد:متعجب:
یه بار با FindRows امتحان کنید ببینید بازم نمیشه ؟؟؟
درضمن از متد select کلاس DataTable هم میتونید استفاده کنید!!

fatemeh rouzbeh
شنبه 27 شهریور 1389, 20:01 عصر
من که هر چی سعی کردم نتونستم از find استفاده کنم. از select و gridview استفاده کردم که خوبم کار می کنه. و الان متوجه شدم که برای کار من بهتر هم هست.:لبخندساده:
از دوستان باز هم تشکر می کنم.:قلب: