PDA

View Full Version : اشکال در پیدا نکردن رکورد مورد نظر



amir_pro
یک شنبه 02 دی 1386, 14:10 عصر
سلام به دوستان
داخل قسمتی از برنامه وقتی کاربر مقدار فامیل را وارد می کند اگر فامیل را حتی یک حرف هم وارد کرد فامیلهایی را که با آن حرف شروع می شوند پیدا می کند. ولی اگر کاربر حرف ک را وارد کند چیزی پیدا نمی کند با توجه به اینکه در بانک فامیلهایی که با حرف ک شروع شوند وجود دارند.
این دستور کدی است که برای جستجو استفاده می کنم. اگر مشکلی دارد راهنمایی بفرمایید.

OleDbDataAdapter da;
DataTable dt = new DataTable();
da = new OleDbDataAdapter("select famil,nam,stdno,reshte,maghta,pedar,sh_sh,sodor,bi rthday,codemeli,raked,tel,address from Student where famil like '" + Txtfam.Text + "%' order by famil", con);
da.Fill(dt);
dataGridView1.DataSource = dt;

sinpin
یک شنبه 02 دی 1386, 14:16 عصر
سلام به دوستان
داخل قسمتی از برنامه وقتی کاربر مقدار فامیل را وارد می کند اگر فامیل را حتی یک حرف هم وارد کرد فامیلهایی را که با آن حرف شروع می شوند پیدا می کند. ولی اگر کاربر حرف ک را وارد کند چیزی پیدا نمی کند با توجه به اینکه در بانک فامیلهایی که با حرف ک شروع شوند وجود دارند.
این دستور کدی است که برای جستجو استفاده می کنم. اگر مشکلی دارد راهنمایی بفرمایید.

OleDbDataAdapter da;
DataTable dt = new DataTable();
da = new OleDbDataAdapter("select famil,nam,stdno,reshte,maghta,pedar,sh_sh,sodor,bi rthday,codemeli,raked,tel,address from Student where famil like '" + Txtfam.Text + "%' order by famil", con);
da.Fill(dt);
dataGridView1.DataSource = dt;

مکنه اون دوتا حرف "ک" دقیقا یکی نباشند و دوتا کد اسکی مختلف داشته باشند. این مشکل برای بعضی حروف وجود داره ("ی"، "ک")

ir_programmer
یک شنبه 02 دی 1386, 14:18 عصر
نوع نام فامیل Nvarchar هست یا نه؟

hassan razavi
یک شنبه 02 دی 1386, 14:19 عصر
OleDbDataAdapter da;
DataTable dt = new DataTable();
da = new OleDbDataAdapter("select famil,nam,stdno,reshte,maghta,pedar,sh_sh,sodor,bi rthday,codemeli,raked,tel,address from Student where famil like N'" + Txtfam.Text + "%' order by famil", con);
da.Fill(dt);
dataGridView1.DataSource = dt;


استفاده از N بعد از Like رو امتحان کنید

ir_programmer
یک شنبه 02 دی 1386, 14:22 عصر
جناب رضوی . تو که 2 ستاره قرمز داری (http://barnamenevis.org/forum/images/ranks/star0600.gif) ، پس امضاتو تغییر بده.

amir_pro
یک شنبه 02 دی 1386, 14:33 عصر
ممنون از دوستان که راهنمایی می فرماییند
جناب ir_programmer
بانک اکسس است
جناب Sinpin
وقتی یکی از فامیلها را از داخل بانک کپی کردم و داخل textbox منتقل کردم پیدا میکند-فکر کنم همین است که شما می گویید- اگر ممکنه راهمایی کامل بفرمایید.
جناب razavi
این کد که قابل اجرا نمی باشد.

از دوستان تقاضای راهنمایی کامل را دارم.
با تشکر

hassan razavi
یک شنبه 02 دی 1386, 14:37 عصر
Query زیر رو در NorthWind اجرا کنید ، با N مشکلی نداره. برای رفع مشکل 'ی' با استفاده از N در شرط ،مشکل حل میشد. من تا حالا نشنیده بودم که حرف 'ک' هم مشکل داره ، فکر کنم با اضافه کردن N مشکل حل بشه.


SELECT * FROM dbo.Customers WHERE (CompanyName LIKE N'a%')

در صورت امکان پروژتون رو بگذارید تا بررسی کنیم.

ir_programmer
یک شنبه 02 دی 1386, 14:40 عصر
Query زیر رو در NorthWind اجرا کنید ، با N مشکلی نداره. برای رفع مشکل 'ی' با استفاده از N در شرط ،مشکل حل میشد. من تا حالا نشنیده بودم که حرف 'ک' هم مشکل داره ، فکر کنم با اضافه کردن N مشکل حل بشه.


SELECT * FROM dbo.Customers WHERE (CompanyName LIKE N'a%')

در صورت امکان پروژتون رو بگذارید تا بررسی کنیم.

میگه اکسس هست.

hassan razavi
یک شنبه 02 دی 1386, 14:53 عصر
واقعا ببخشید ، نتیجه بی دقت کار انجام دادن همینه. مرسی جلالی جان.
پس فقط خط آخر :
در صورت امکان پروژتون رو بگذارید تا بررسی کنیم.

mamali_programer
یک شنبه 02 دی 1386, 15:04 عصر
اینجا همه حرفه ای هستند من که جرعت نمی کنم چیزی بگم

mamali_programer
یک شنبه 02 دی 1386, 15:13 عصر
ولی اگر ممکنه در صورت امکان پروژتون رو بگذارید تا بررسی کنیم.

amir_pro
یک شنبه 02 دی 1386, 15:19 عصر
اینم لینک دانلود
"http://www.uploadhut.com/id134919/upload project.rar"
باید مسیر کامل را باز کنید.
فقط دوستان چون برنامه برای جایی خصوصی می باشد چند تا از فرمهای اون را مجبور شدم پاک کنم.

hassan razavi
یک شنبه 02 دی 1386, 15:31 عصر
امیرجان لینک رو فراموش کردی

choobin84
یک شنبه 02 دی 1386, 15:57 عصر
جناب Sinpin
وقتی یکی از فامیلها را از داخل بانک کپی کردم و داخل textbox منتقل کردم پیدا میکند-فکر کنم همین است که شما می گویید- اگر ممکنه راهمایی کامل بفرمایید.

مشکل از آنجایی ناشی می شه که شما در ابتدا با ویندوزی که فارسی اون از حروف ک بدون سرکش و ی بدون اون دوتا نقطه زیرش < اطلاعاتی ر به بانک فرستاده اید و اکنون می خاهید با استفاده از حروف ک با سرکش و ی با اون دو تا نقطه زیرش جستجو انجام بدید
دو تا کار می تونید انجام بدید.
جستجو را با استفاده از هر دو نمونه حرف انجام بدید.کاری سخت و نامناسب.
کار دوم و بهتر اینه که اطلاعات موجود در بانک را با حروف صحیح جایگزین حروف ناصحیح و قدیمی بکنید.
برای این کارم می تونید اطلاعات بانک رو ردیف به ردیف بخونید ، حروف ی و ک رو درون اون با حروف ک و ی مناسب جایگزین کنید و دوباره در بانک ذخیره کنید.

البته به احتمال زیاد بانکتون رکورد های زیادی نداره.بنابراین برای اینکه دوباره از وقوع چنین مشکلی جلوگیری کنید از کد زیر بهره گیری کنید


this.Text = this.Text.Replace ("ی","ی");
this.Text = this.Text.Replace ("ک","ک");

choobin84
یک شنبه 02 دی 1386, 16:02 عصر
مشکل از آنجایی ناشی می شه که شما در ابتدا با ویندوزی که فارسی اون از حروف ک بدون سرکش و ی بدون اون دوتا نقطه زیرش < اطلاعاتی ر به بانک فرستاده اید و اکنون می خاهید با استفاده از حروف ک با سرکش و ی با اون دو تا نقطه زیرش جستجو انجام بدید
دو تا کار می تونید انجام بدید.
جستجو را با استفاده از هر دو نمونه حرف انجام بدید.کاری سخت و نامناسب.
کار دوم و بهتر اینه که اطلاعات موجود در بانک را با حروف صحیح جایگزین حروف ناصحیح و قدیمی بکنید.
برای این کارم می تونید اطلاعات بانک رو ردیف به ردیف بخونید ، حروف ی و ک رو درون اون با حروف ک و ی مناسب جایگزین کنید و دوباره در بانک ذخیره کنید.

البته به احتمال زیاد بانکتون رکورد های زیادی نداره.بنابراین برای اینکه دوباره از وقوع چنین مشکلی جلوگیری کنید از کد زیر بهره گیری کنید


this.Text = this.Text.Replace ("ی","ی");
this.Text = this.Text.Replace ("ک","ک");


این دو خط کد رو موقع درج در بانک و بروز آوری بانک در رویداد Leave تکست باکس ها و کمبو باکس ها قرار بدید.

amir_pro
یک شنبه 02 دی 1386, 16:03 عصر
دوست عزیز تعداد وافعی رکودهای بانک 14000 رکورد است و این تعداد فقط برای نمونه بود.
دوست عزیز این بانک قبلاً تهیه شده بود و من فقط برنامه ی اونا نوشتم.کاملا حق با شماست