ورود

View Full Version : اصلاح دستور جستجو



ehsanocx
دوشنبه 26 دی 1390, 16:56 عصر
سلام دوستان

من با استفاده از این کد عمل جستجو رو انجام میدم.
بانک SQL 2008

General :


Dim db As New Connection
Dim Rs As New Recordset






Private Sub Form_Load()

db.Open "provider=msdasql;driver={sql server};server=;id=;pwd=;database=CM"
Rs.CursorLocation = adUseClient
Rs.Open "select * from cala", db, adOpenDynamic, adLockOptimistic
Set DataCalaForm.DataSource = Rs

End Sub


دستور جستجو


Private Sub CmdSearch_Click()
If cmbSearch.Text = "Name Cala" Then
If txtSearch.Text <> "" Then

flag = False
RS.MoveFirst
Do While (RS.EOF = False)
If (Trim(RS.Fields("CalaName")) = Trim(txtSearch)) & "%'" Then
For i = 1 To DataCalaForm.SelBookmarks.Count
DataCalaForm.SelBookmarks.Remove 0
Next i
DataCalaForm.SelBookmarks.Add RS.Bookmark
txtSearch.Text = ""

Exit Sub
Else
RS.MoveNext
End If
Loop
If (flag = False) Then
MsgBox "Gheteh Mored Nazar Peida Nashod", vbExclamation, "Khata"
txtSearch.Text = ""

End If
Else: MsgBox "Chizi Baray Jostejo Entekhab Nashode Ast", vbExclamation, "Khata"
txtSearch.SetFocus
End If
End If
End sub



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

2 - و اگر می خوام چند حرف از نام کالا رو هم نوشتم می خوام برام بتونه جستجو کنه.
3- اگر یک فیلدی رو جستجو کردم اگر پیدا کرد فقط می خوام اون رکورد توی دیتا گرید دیده بشه.


ممنون اگر کمکم کنید.

kitcat_m18
سه شنبه 27 دی 1390, 09:06 صبح
سلام،
فکر نکنم دستور جستجوی شما مشکلی داشته باشه، شما موقع نصب بانک SQL Server اون رو Case Sensitive نصب کردین. البته قابل حله شما ابتدا دستور زیر رو اجرا کنید:

SELECT name, collation_name
FROM sys.databases
WHERE name = 'DataBaseNAme' -- put your database name here
به جای DataBaseNAme نام جدول خودتون رو که می خواین به حروف کوچک و بزرک حساس نباشه رو بنویسید.

حالا مقداری شبیه به این رو خواهید دید:
Latin1_General_CS_ASCS
CS به معنی Case Sensitive هست.

حالا دستور زیر رو اجرا کنید:
ALTER DATABASE test2 -- put your database name here
COLLATE Latin1_General_CS_AS -- replace with whatever collation you need
Latin1_General_CI_AS
در Collation بالا قسمت CI به معنی Case Insensitive هست.
و اگر می خواین لیست Collation های SQL Server رو ببینین دستور زیر رو اجرا کنین:
SELECT * FROM ::fn_helpcollations()
و در آخر هم برای دیدن Collation سرورتون این دستور رو اجرا کنید:
SELECT SERVERPROPERTY ('Collation')
موفق باشین :لبخندساده:

ehsanocx
سه شنبه 27 دی 1390, 14:15 عصر
دوست عزیز خیلی سنگین توضیح دادی . گیج شدم . این تغییرات رو کجا باید اعمال کنم؟

kitcat_m18
چهارشنبه 28 دی 1390, 02:31 صبح
سلام،
داداشم کجاش سنگینه بگو من بلند کنم تو انورشو بگیر :لبخند:
برو تو SQL Server Managment Studio بعد یه New Query بزن و مراحل بالا رو انجام بده.

موفق باشی :لبخندساده:

ehsanocx
چهارشنبه 28 دی 1390, 11:23 صبح
دوستان این کد رو میشه اصلاح کنین ممنون میشم.