PDA

View Full Version : مشكل جستجوي حروف ك و ي در ديتابيس



mohammad-bahrami
چهارشنبه 25 بهمن 1391, 18:08 عصر
با سلام
من يه برنامه دفترچه تلفن نوشته ام روي سيستم خودم هنگام جستجو اگر حروف ك يا ي بين آنها باشد هيچ ركوردي پيدا نمي كند ولي روي سيستم دوستم وقتي كلمه كه حرف ي يا ك داشته باشد پيدا ميكند ديدم كه روي سيتم دوستم روي زبان فارسي يه سرويس نصب بشه ولي اين سرويس روي سيستم من نصب نيست مي خواستم چطوري اين سرويس نصب منم تا جستجو درست انجام بشه اگر شما به عكس هاي ضميمه نگاهي بيندازيد در قسمت Regional AND Language در كنترل پنل سرويس ميبينيد .
100010100011

mohammad-bahrami
چهارشنبه 25 بهمن 1391, 21:46 عصر
یعنی هیچ کس نمی دونه؟خواهش میکنم کمک کنید

SHD.NET
چهارشنبه 25 بهمن 1391, 22:00 عصر
منم با این شکل بر خورده بودم، قبل جستجو باید حرف ک عربی رو به فارسی و هم چنین ی عربی رو به فارسی تبدیل کنید، کد زیر رو من برای یه نرم افزار قرآن تست کرده بودم، برای جستجو کلمات، همین مشکل بود،

string a;
a = textBox1.Text.Replace("ك", "ک").Replace("ي", "ی").Replace("ﯼ", "ی").Replace("ى", "ی").Replace("ة", "ه");


بعدشم مقادیر رو بر حسب متغیر a جستجو کنید

**موفق باشید**

mohammad-bahrami
شنبه 28 بهمن 1391, 17:03 عصر
مهندسان خواهش مي كنم كمك كنيد

bohlooli
شنبه 14 اردیبهشت 1392, 02:02 صبح
برای حل مشکل این کلاس را یک ساب کلاس از تکست باکسه را به پروژت اضافه کن و تمام متغیرهای از نوع تکست باکس را به پرشین تکست باکس تغییر بده. این روش راحت ترین راهه تا نخوای درگیر تغییر در کد برنامت بشی. این کلاس طبق روشی که تو پست قبلی اومده، موقعی که تایپ کلمه در تکست باکس تموم میشه و بعد از خروج از تکست باکس تمام کاف و یاهای عربی را به معادل فارسیشون تغییر داده و فاصله های اضافی را هم حذف میکنه. اگه نیازی به حذف فاصله های اضافی نداری شرطها را از تابع حذف کن. اینم سورس کلاس ساده ی پرشین تکست باکس:
using System;
using System.Windows.Forms;

namespace MyProject
{
class PersianTextBox : TextBox
{
protected override void OnLeave(EventArgs e)
{
// replace arabic kaf and ya
string strText = this.Text.Replace("ك", "ک").Replace("ي", "ی").Replace("ﯼ", "ی").Replace("ى", "ی").Replace("ة", "ه");

// remove extra spaces
for (int i = 0; i < strText.Length; i++)
{
if (strText[i] == ' ')
if (strText[i - 1] == 'آ' || strText[i - 1] == 'ا' || strText[i - 1] == 'د' || strText[i - 1] == 'ذ' || strText[i - 1] == 'ر' || strText[i - 1] == 'ژ' || strText[i - 1] == 'و' || strText[i - 1] == ' ')
{
strText = strText.Remove(i, 1);
i--;
}
}
// change current text to new created text
this.Text = strText;

}//OnLeave

}//class

}

Behnam6670
شنبه 14 اردیبهشت 1392, 08:21 صبح
سلام دوست عزیز.میشه لطف کنی و بگی از این کلاس چطوری استفاده کنیم؟؟من اضافش کردم به پروژم منتهی نمیدونم چجوری باید استفادش کنم
پروژه من چند تا فرم داره و خیلی هم توش تکست باکس استفاده کردم و همین مشکل حروف عربی رو باهاش دارم ممنون میشم راهنماییم کنی

Behnam6670
شنبه 14 اردیبهشت 1392, 08:24 صبح
ممنون مشکلم حل شد.بعد از اظافه کردن یک بار کل پروژه رو Build کنی تو قسمت ابزارها اضافه میشه

jalil_m
یک شنبه 18 اسفند 1392, 18:46 عصر
منم با این شکل بر خورده بودم، قبل جستجو باید حرف ک عربی رو به فارسی و هم چنین ی عربی رو به فارسی تبدیل کنید، کد زیر رو من برای یه نرم افزار قرآن تست کرده بودم، برای جستجو کلمات، همین مشکل بود،

string a;
a = textBox1.Text.Replace("ك", "ک").Replace("ي", "ی").Replace("ﯼ", "ی").Replace("ى", "ی").Replace("ة", "ه");


بعدشم مقادیر رو بر حسب متغیر a جستجو کنید

**موفق باشید**


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

علی شهریاری
دوشنبه 11 فروردین 1393, 16:35 عصر
سلام دوست عزیز
در دستور select کارکتر n رو قرار بده تا درست بشه مثل زیر



select * from t_name where c_name like N'%word%'

m_karimi
یک شنبه 23 مهر 1396, 11:54 صبح
برای حل مشکل این کلاس را یک ساب کلاس از تکست باکسه را به پروژت اضافه کن و تمام متغیرهای از نوع تکست باکس را به پرشین تکست باکس تغییر بده. این روش راحت ترین راهه تا نخوای درگیر تغییر در کد برنامت بشی. این کلاس طبق روشی که تو پست قبلی اومده، موقعی که تایپ کلمه در تکست باکس تموم میشه و بعد از خروج از تکست باکس تمام کاف و یاهای عربی را به معادل فارسیشون تغییر داده و فاصله های اضافی را هم حذف میکنه. اگه نیازی به حذف فاصله های اضافی نداری شرطها را از تابع حذف کن. اینم سورس کلاس ساده ی پرشین تکست باکس:
using System;
using System.Windows.Forms;

namespace MyProject
{
class PersianTextBox : TextBox
{
protected override void OnLeave(EventArgs e)
{
// replace arabic kaf and ya
string strText = this.Text.Replace("ك", "ک").Replace("ي", "ی").Replace("ﯼ", "ی").Replace("ى", "ی").Replace("ة", "ه");

// remove extra spaces
for (int i = 0; i < strText.Length; i++)
{
if (strText[i] == ' ')
if (strText[i - 1] == 'آ' || strText[i - 1] == 'ا' || strText[i - 1] == 'د' || strText[i - 1] == 'ذ' || strText[i - 1] == 'ر' || strText[i - 1] == 'ژ' || strText[i - 1] == 'و' || strText[i - 1] == ' ')
{
strText = strText.Remove(i, 1);
i--;
}
}
// change current text to new created text
this.Text = strText;

}//OnLeave

}//class

}


اگر بخواهم از تکس باکس یه کامپوننت دیگه استفاده کنم باید چه تغییری در کد کلاس بدهم؟

danialafshari
دوشنبه 24 مهر 1396, 04:17 صبح
اگر بخواهم از تکس باکس یه کامپوننت دیگه استفاده کنم باید چه تغییری در کد کلاس بدهم؟

با سلام
در کد بالا یک کامپوننت (User Control) جدید با نام PersianTextBox ساخته است که متد Onleave رو Override کرده. باید کامپوننت نویسی یاد بگیرید
PersianTextBox : TextBox = باید TextBox رو تغییر بدید و جاش textbox کامپوننت خودتون رو بصورت کامل بنویسید مثلاً devExpress میشه : DevExpress.XtraEditors.TextEdit
موفق باشید
146765