سالومه
سه شنبه 31 خرداد 1384, 21:03 عصر
من یا جورایی دارم از دست زبون فارسی دیوونه میشم :mad:
من دارم روی یک دیتابیس کار می کنم که اطلاعات اون تماماً به صورت فارسی ( نه عربی ) وارد شده.
مشکل اینجاست که وقتی کاربر میخواد در بین داده ها جستجو کنه وقتی حروف رو وارد می کنه برنامه من رکوردهای مشابه اون رو میاره. اما تا به حرف (ی) و (ک) می رسیم همه چیز خراب میشه!
من اول گفتم نکنه کیبورد عربی هست! دیدم نه فارسیه! بعداً که SQL Query رو دیدم، فهمیدم که این دو کاراکتر به صورت عربی وارد شدن!
بعد از این کد برای تبدیل این دو کاراکتر مسخره استفاده کردم:
for I := 1 to length(S) do
if Ord(S[I]) = 1705 then S[I] := #1603
else if Ord(S[I]) = 1740 then S[I] := #1610;
این هم Query من هست:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Products');
ADOQuery1.SQL.Add(' WHERE pr_NAME LIKE ''%'+SS+'%''');
ADOQuery1.open;
ضمناً من برای ورود اطلاعات از کاربر، از کامپوننت های TNT هم استفاده می کنم!
ولی باز هم همون مشکل هست!!!!!
من برنامه نویسی فارسی زیاد بلد نیستم.
مشکل کارم کجاست؟
من دارم روی یک دیتابیس کار می کنم که اطلاعات اون تماماً به صورت فارسی ( نه عربی ) وارد شده.
مشکل اینجاست که وقتی کاربر میخواد در بین داده ها جستجو کنه وقتی حروف رو وارد می کنه برنامه من رکوردهای مشابه اون رو میاره. اما تا به حرف (ی) و (ک) می رسیم همه چیز خراب میشه!
من اول گفتم نکنه کیبورد عربی هست! دیدم نه فارسیه! بعداً که SQL Query رو دیدم، فهمیدم که این دو کاراکتر به صورت عربی وارد شدن!
بعد از این کد برای تبدیل این دو کاراکتر مسخره استفاده کردم:
for I := 1 to length(S) do
if Ord(S[I]) = 1705 then S[I] := #1603
else if Ord(S[I]) = 1740 then S[I] := #1610;
این هم Query من هست:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Products');
ADOQuery1.SQL.Add(' WHERE pr_NAME LIKE ''%'+SS+'%''');
ADOQuery1.open;
ضمناً من برای ورود اطلاعات از کاربر، از کامپوننت های TNT هم استفاده می کنم!
ولی باز هم همون مشکل هست!!!!!
من برنامه نویسی فارسی زیاد بلد نیستم.
مشکل کارم کجاست؟