View Full Version : سوال: query analyzer
soft-c
یک شنبه 03 مرداد 1389, 00:32 صبح
سلام.
من یک مشکل داشتم در حرف های فارسی مثل ی، ک و... .
با جستجو در سایت به کدی رسیدم که با دستور update مشکلم حل شد . ولی این دستور را در دلفی در هر button می نویسم .
در یکی از تاپیک ها خواندم که می گفت این کد را در query analys بنویس مشکلت حل مشه .
در sql2005 nv در new qury این کار را کردم ولی مشکل اینجاست که فقط یک بار با execute اجرا میشه و دیگر کارای ندارد .یعنی اگر کاربر اطلاعات جدید وارد کند این اطلاعات جدید همان مشکل حروف فارسی را دارند .( یعنی این دستور در این مکان به روز نمیشه ) .
آیا راه حلی برای این مشکل سراغ دارید ؟
یعنی طوری که وقتی این دستور را برای جدولی می نویسم دیگر نیاز به اجرای مجدد نداشته باشد و خود به خود update شود.
دستور این بود :
update table-name set [column-name] =replace([column-name]nchar(unicode),nchar(unicode))]]
تشکر.
pezhvakco
یک شنبه 03 مرداد 1389, 08:12 صبح
درود :
شما نوع ستون رو nvarchar تعیین کردین و باز هم با این حروف مشکل دارین .
فکر خوش .
soft-c
یک شنبه 03 مرداد 1389, 09:47 صبح
سلام.
بله من فیلدها را ازنوع nvarchar تعریف کردم .من در ورود حروف مشکلی ندارم ولی وقتی می خواهم جستجو انجام بدهم با حروفی مثل ک ، ی مشکل دارد .یعنی مثلا اسم مصرفی را پیدا نمی کند چون آخرش ی است .
این کد را در جستجو پیدا کردم ولی مشکل این است که اگر بخواهم در برنامه بنویسم باید قبل از هر select یک دستور اینچنینی بنویسم .
می خواهم بدانم که آیا راهی است که یک بار در sql بنویسم و برای همیشه از این مشکل راحت شوم .
در new query که می نویسم فقط برای فیلدهای قبلی این عمل را انجام می دهد ولی اگر فیلد جدید وارد کنم این عملیات را روی فیلدهای جدید انجام نمی دهد .
تشکر.
pezhvakco
یک شنبه 03 مرداد 1389, 10:57 صبح
شما در هنگام جستجو یه N قبل از مورد جستجو قرار بده ببین درست میشه .
WHERE (name LIKE N'نام')
فکر خوش .
soft-c
یک شنبه 03 مرداد 1389, 12:15 عصر
سلام.
دوست عزیز تشکر.
1- من وقتی search می کنم از این کد استفاده می کنم:
....where (name='''+edit1.text+''')حالا این دستوری که شما می گویید را کجا قرار بدم.
2- این کدی که قبلا نوشتم مشکلی نداره فقط می خواهم بدانم اگر بخواهم این کد را دردلفی ننویسم و فقط یک بار برای هر جدول در sql استفاده کنم چه جوریه ؟(آیا امکان این کار هست ) .
تشکر از راهنماییهای شما .
pezhvakco
یک شنبه 03 مرداد 1389, 13:24 عصر
1 - کد دستور جستجو تو به این تغییر بده >
WHERE (name LIKE N' + QuotedStr(Edit1.Text) + ')
2 - کدی که قبلا نوشتین مشکلی نداره ولی لازم نیست این کار رو انجام بدین . کد دستور جدید در هنگام جستجو سریعتر این کار رو انجام میده .
فکر خوش .
hamidkarimy
یک شنبه 17 مرداد 1389, 18:29 عصر
دوستان سلام
مشکل با یونیکد نیست
مشکل از اینجا حاصل میشه که ما دو تا 'ک' دو تا 'ی' داریم
یک ی داریم که زیرش دوتا نقطه هست و یک ک هم داریم که سرکش داره
متاسفانه کد کاراکترها یادم نیست ولی
من این مشکل رو سالها قبل توی شرکتی که کار می کنم برطرف کردم
خیلی راحت مونید با 2 خط دستور از این مشکل رها بشید در رویداد onwillexecute کاننکشن mainadoconnection می تونید
از دستور sql رسیده رو به این شکل اصلاح کنید
command := replacetext(command,#x,#y)
command := replacetext(command,#j,#k)
به جای x کاراکتر ی عربی و به جای j کاراکتر ک سرکش دار رو قرار بدید
می تونید تو یه حلقه تو sqlserver از 1000 تا 2000 همه کاراکترها رو select nchar(i) کنید
و کد اون دو تا کاراکتر رو در بیارید ولی اگه نتونستید بگید تا کد کاراکترها رو نگاه کنم و بیارم براتون
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.