PDA

View Full Version : سه تا نکته آموزشی - جستجوی فارسی در sql و پشتبان گیری ,...



alicomputer
پنج شنبه 18 آبان 1391, 22:30 عصر
1- :تشویق:
بعد از مدت ها جستجو … به نظر من این تنها راه حل امتحان شده درست برای جستجوی درست پارسی در بانک اطلاعاتی sql می باشد که در آن می توان هر کلمه ای که شامل حروف ی و ک عربی باشد را در آن جستجو کرد…

از فانکشن زیر برای تبدیل حروف ک و ی برای آماده سازی یک دستور sql استفاده می کنیم و البته در این فانکشن تمام ی و ک عربی را به فارسی یا بالعکس تبدیل می کنیم (فرقی نمی کند).


Function toPersianSQL(ByVal SQLstr As String) As String

SQLstr = SQLstr.Replace(“ي”, “ی”)

SQLstr = SQLstr.Replace(“ی”, “[یي]“)

SQLstr = SQLstr.Replace(“ك”, “ک”)

SQLstr = SQLstr.Replace(“ک”, “[کك]“)

Return SQLstr.Trim

End Function

و در جایی مانند مثال زیر استفاده می کنیم.


Dim Sql As String = “SELECT *FROM TABLE WHERE SOMEFILED LIKE N’%” + toPersianSQL(“فارسی”) + “%’”
در دستور بالا فرقی نمی کند که ما چه کلمه ای با چه حروف ی یا ک عربی یا فارسی را جستجو می کنیم. این بدین علت است که در فانکشن اول ما همه حروف ی و ک را یکسان سازی نمودیم و با قراردادن آنها در یکی از wildcardهای sql آن را آماده سازی نمودیم.

دستور [] در sql به ما این امکان را می دهد که به sql بفهمانیم دنبال فیلدی می گردیم که حروفی از آن در داخل [] قرار دارد .. مراجعه شود به W3Schools (http://www.w3schools.com/sql/sql_wildcards.asp)

N نشان می دهد که کلمه یا عبارت یا حرفی که دنبال آن می گردیم به عنوان یک nvarchar در sql ذخیره شده که برای انواع حروف ی و ک بسیار مهم است و اگر این کلمه در دستور انتخاب sql قرار داده نشود دستور جستجوی شما ناقص است…

‘%%’ همانطور که میدانید برای جستجوی عبارت رشته ای در هر قسمت از آن استفاده می شود.

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

این نمونه در وب امتحان شده بود و مشکلی نداشت ولی با توجه به درخواست یکی از دوستان نمونه ویندوزی این برنامه نیز در سایت قرار گرفته که با توجه به لینک ذیل قابل دانلود می باشد:

نمونه برنامه جستجوی پارسی در sql در ویندوز (http://www.eslamifar.com/wp-content/uploads/2010/10/SampleDataGridViewPersianSearch.zip)

برگرفته از سایت محسن اسلامی فر (http://www.eslamifar.com/archives/88)

من استفاده کردم کار میده

2- :تشویق:
پشتبان گیری و بازیابی بانک اطلاعاتی sql express
دانلود کنید (http://parsianedu.com/Archive/bkres.zip)


3- :تشویق:
جداکردن سه تا سه تا اعداد

Dim S, T As String
S = txtNaghd.Text.Replace(",", "")
Dim i As Short = S.Length - 3
If S.Length > 3 Then
Do
T = S.Insert(i, ",")
S = T
i -= 3
Loop While i > 0
SendKeys.Send("{end}")
tslabel.Text = T
End If

Hossis
جمعه 19 آبان 1391, 03:30 صبح
دقت کنید در پست اول بین سطر 3 با پنج و 7 با 9 تضاد هست یعنی خط سه و هفت, ی و ک فارسی رو به عربی و دو خط دیگه برعکس تبدیل می کنند

swallow.pa
جمعه 19 آبان 1391, 10:07 صبح
خب توي جدا كردن اعداد اگه مميز و جداكننده باشه چطوري عمل ميشه مثل اين
3,750.75