PDA

View Full Version : مشكل ي در جستجو كردن



mahdighasemi
شنبه 23 آذر 1387, 15:18 عصر
سلام دوستان
وقتي اطلاعات در بانك SQL 2000 ذخيره مي شود براي كلمتي كه حرف ي در آنها بكار رفته جستجو گر مشكل پيدا ميكند آيا بدون استفاده از DLLهاي استاندارد سازي كيبورد روش ديگري هم هست

ehsaniran59
شنبه 23 آذر 1387, 19:01 عصر
من هم با این مشکل در SQL 2005 روبرو هستم . وقتی در خود محیط SQL کلماتی با ی درج می کنم در #C آن کلمات موقع جستجو پیدا نمی شود ... ممنون از راهنمایی دوستان !

alishirazi
شنبه 23 آذر 1387, 22:51 عصر
من این مشکل رو داشتم ، و ی هایی که از C# اضافه بشن و ذخیره بشن در db مشکلی ندارن، پس یه راه اینکه از طریق applicationات و C# ی رو بنویسی

ehsaniran59
یک شنبه 24 آذر 1387, 07:52 صبح
ممنون از راهنمایی شما ، مسئله اینه که ما نیاز داریم بعضی مقادیر را در یک Store
Procedure بصورت پیش فرض درج کنیم . پس مشکل به قوت خودش باقیه !!!
اگه راه دیگه ای هست دوستان راهنمایی کنند !

mannai29
یک شنبه 24 آذر 1387, 09:08 صبح
دلیل و ریشه مشکل، وجود 2 تا ی با کدهای اسکی متفاوته.
بنابراین شما اگر کد اسکی هر دو تا ی رو بدست بیارین مینونین در جستجوها ازش استفاده کنین یا اینکه در درج کنترل کنین و یا هر پردازش دیگری...
مثلا در جستجو بجای ی اول کد اسکی ی دوم را جایگزین در دستور جستجو بکنید.

sara_B
یک شنبه 24 آذر 1387, 12:06 عصر
با سلام
من خودم اين مشكل رو ندارم،اما همونطور كه mannai29 هم گفتن ، دو نوع حرف "ي" داريم :
1- ي
2-ی
مثلا روي كيبورد من، دكمه ي "D" همون حرف "ي" هست ، ولي " Shift+V" حرف "ی" .
حالا تست كنيد كه با كدوم "ي" مشكل حل ميشه و موقع درج مقادير توي SQL از همون "ی" استفاده كنيد .
اميدوارم مشكل حل بشه!

ASKaffash
یک شنبه 24 آذر 1387, 16:29 عصر
سلام
همانطور که دوستان گفتند دو نوع وجود دارد پس در شرط جستجو با تابع Replace باید هردو ی را به یک ی تبدیل کرد.

ehsaniran59
یک شنبه 24 آذر 1387, 17:47 عصر
ممنون از کمک دوستان

abi_sarab
یک شنبه 24 آذر 1387, 18:25 عصر
آقا شما دیتا تایپ فیلدتون رو چی میگیرید؟ که این مشکل رو دارید؟ من که ندارم.

ehsaniran59
دوشنبه 25 آذر 1387, 17:59 عصر
فیلدهای ما از نوع nvarchar تعریف شده !

محمدصالح
یک شنبه 23 فروردین 1388, 17:24 عصر
اشكال از اينجا پيش مياد كه شما ديتا رو مثلا با "ي" اول وارد كرديد و با "ي" دوم دنبال اون مي گرديد.اگر هر دو يكي باشند مشكل پيش نمياد.به خاطر اينكه ما حداقل دو نوع فايل Kbdfa.dll داريم. اوني كه حجمش بيشتره بهتره.روي هر سيستم يك نسخه از اين فايل نصبه در system32. بايد روي همه سيستمهاتون يك نوع kbdfa.dll نصب باشه.اينطوري مشكل پيش نمياد. راه دومش هم همونيه كه دوستمون گفتن: شما هنگام ورود ديتا و جستجو كد اسكي ي مورد نظر رو خودتون جايگزين كنين.

masoud.ramezani
یک شنبه 23 فروردین 1388, 17:40 عصر
سلام

به لینکهای زیر مراجعه نمایید. شاید به شما کمک کند :


http://afsharm.blogspot.com/2008/12/blog-post.html
http://afsharm.blogspot.com/2008/12/blog-post_21.html

bad_boy_2007
یک شنبه 23 فروردین 1388, 17:46 عصر
سلام دوستان
لازم میدونم توضیحاتی بدم
به حروف "ی" فارسی و "ي" عربی - "ک" فارسی و "ك" عربی دقت کنید .
در بین حروف عربی حرف "ی" با دو نقطه در زیر و حرف "ک" با همزه در دل این حرف هستند که کد کاراکتر های متفاوتی با حروف معادل خود در فارسی دارند .
من هم همین مشکل رو تو دیتابیس هام داشتم چون حجم داده هام خیلی نبود و هر جدول بیش از 2000 رکورد بیشتر نداشت با اجرای این تابع هیچ تفاوتی در سرعت خروجی مشاهده نکردم توصیه میکنم تستش کنید :



CREATE FUNCTION [dbo].[FixString]
(
-- Add the parameters for the function here
@In Varchar(max)
)
RETURNS varchar(max)
AS
BEGIN
RETURN replace(replace(@in,'ک','ك'),'ی','ي')
END


اگر حجم داده هاتون زیاده و این تابع باعث افت سرعت برنامه تون میشه که بعید میدونم ، میتونید یک بار این تابع رو روی فیلدهای دیتابیستون پیاده کنید که حروف "ی" و "ک" صحیح جایگزین حروف معادل عربی آنها شود .

mom alone
سه شنبه 25 فروردین 1388, 09:10 صبح
این کد رو کجا بنویسیم
فکر می کنم sql هست بعدا چجوری با برنامه اجرا کنیم
شرمنده من تو sql مبتدی هستم