ورود

View Full Version : ورود فارسی و جستجوی فارسی (ASP + SQL-server(



niloo_66
دوشنبه 23 بهمن 1385, 01:58 صبح
سلام به همه

اول اینکه فارسی وارد کردن در SQL-Server تنها باید زمانی که برنامه از IIS اجرا میشود انجام شود ؟ یعنی راهی برای دستی وارد کردن در DB و نمایش صحیح آنها وجود نداره ؟

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

از این دستور استفاده کردم که خطایی هم نمیده اما کار نمیکنه


right(rs("name",1,"ا")
ممنون میشم سریع تر راهنمایی کنید , من در تاپیک ها جستجو هم کردم اما به جواب نرسیدم

موفق باشین

یا حق

zerobit-ltd
دوشنبه 23 بهمن 1385, 10:45 صبح
اول اینکه فارسی وارد کردن در SQL-Server تنها باید زمانی که برنامه از IIS اجرا میشود انجام شود ؟ یعنی راهی برای دستی وارد کردن در DB و نمایش صحیح آنها وجود نداره ؟

خیلی راحت از طریق Enterprise Manager می تونید این کارو انجام بدید.


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

از این دستور استفاده کردم که خطایی هم نمیده اما کار نمیکنه

کد:
right(rs("name",1,"ا")

حقیقنش من اصلا نفهمیدم اینی که شما نوشتی چیه؟ اگر rs همون recordset هستش، با چه query پرش کردی؟
به نظر من راه منطقیش اینه که یه sp بنویسی که پارامتر ورودی بگیره و جستجو رو برای شما انجام بده.

niloo_66
سه شنبه 24 بهمن 1385, 00:18 صبح
سلام

اینکه از Enterprise Manager می تونم استفاده کنم درسته اما مشکل اینجاست که اگر به این طریق اطلاعات فارسی وارد شوند به شکل ؟ (علامت سوال )نشون میده ...

بله RS همون Recordset هست ، من هم اینجا فقط یه بخش از کد رو نوشتم

شما یا دوستان دیگه اگه میشه کد یا Query که برای جستجو بر اساس فیلد نام یک جدول که اطلاعات فارسی دارد را بنویسید مثلا تمامی رکوردهایی که حرف اول فیلد نام آنها با حرف "ب" شروع می شوند را نمایش دهد .

من این کار را برای حروف انگلیسی انجام دادم اما برای فارسی جستجو انجام نمیشود

خیلی ممون

zerobit-ltd
سه شنبه 24 بهمن 1385, 12:14 عصر
اگر به صورت ?????? نمایش داده میشن، به این دلیله که فیلد شما unicode نیست و شما می خواید مثلا داده ها رو به صورت فارسی وارد کنید. برای وارد کردن اطلاعات فارسی، باید فیلد شما از نوع nchar یا nvarchar باشه.
query شما هم برای بازیابی اطلاعات باید به صورت زیر باشه:


select *
from table
where field like 'ب%'

niloo_66
سه شنبه 24 بهمن 1385, 13:54 عصر
ممنون از توجه شما

نوع فیلد nvarchar است و من جدول را در زمان اجرا با استفاده از recordset به صورت فارسی پر کردم ، از Query هم که گفتین به این صورت استفاده کردم :


Dim strSQL, rs
strSQL = "Select * from tbl_calory where name like'ب%'"
set rs = Server.CreateObject("ADODB.Recordset")
rs.open strsql,conn

اما باز هم درست کار نمیکنه جدولی هم که در SQL ساختم به این شکل است (عکس) ضمنا نمایش اطلاعات مشکلی نداره مشکل هر چی هست برای جستجو و فقط برای فارسی بودن هست چون برای اطلاعات انگلیسی جستجو درست انجام میشه .

ببخشید اما لطفا راهنمایی کنید این مشکل حل بشه

ممنون

zerobit-ltd
سه شنبه 24 بهمن 1385, 16:16 عصر
معذرت می خوام. یه جای اون کد ایراد داشت. فکر کنم این یکی کارتو راه بندازه:


select *
from tbl_calory
where name like N'ب%'
برای داده های unicode، باید قبل از رشته N قرار بگیره.

niloo_66
چهارشنبه 25 بهمن 1385, 00:05 صبح
خیلیییییییییی ممنون

بالاخره درست شد ... لطف کردین

موفق باشین

یا حق