PDA

View Full Version : دستور Like برای فیلدهای عددی



اوبالیت به بو
پنج شنبه 13 بهمن 1390, 16:30 عصر
درود

من 4 فیلد در فرم دارم که 3 تا رشته ای و یکی عددی که کلید اصلی است. دستوراتی که استفاده می کنم برای فیلتر سازی داده ها به صورت زیر هست:


private void Filter(int PatientID, string FullyName, string Telephone, string Mobile)
{
string strSQL = string.Empty;

strSQL = "(ID Like '" + PatientID + "%' OR ID is null) AND (FullyName Like '" + FullyName + "%' OR FullyName is null) AND (Telephone Like '" + Telephone + "%' OR Telephone is null) AND (Mobile Like '" + Mobile + "%' OR Mobile is null)";

dtPatients.DefaultView.RowFilter = strSQL;

dgrwPatients.DataSource = dtPatients;
}


و در رویداد TextBox ها هم به این صورت عمل می کنم:


private void txtMobile_TextChanged(object sender, EventArgs e)
{
if (txtMobile.Text != null && txtMobile.Text != null && txtMobile.Text != String.Empty)
{
Filter(0, txtFullyName.Text, txtTelephone.Text, txtMobile.Text);
}
}


مساله در اینجاست فیلتر سازی برای فیلد عددی با خطا مواجه میشه. تصویر خطا رو ضمیمه کردم.
8191981920

ali_habibi1384
پنج شنبه 13 بهمن 1390, 17:38 عصر
براي فيلد عددي نميتوانيد از دستور Like استفاده كنيد !!!

حسین شهریاری
پنج شنبه 13 بهمن 1390, 19:15 عصر
سلام!

بله حق با دوستمون هست! برای فیلدهای عددی نمیشه از Like استفاده کرد ولی این مورد را میشه با یه ترفند دور زد، به این صورت که کافیه مقابل Where فیلد عددی مورد نظر را با تابع Convert یا Cast موقتا تبدیل توغ کنید به رشته:

where CAST(ID As nvarchar(20)) like.....

sajjadsrz
جمعه 25 فروردین 1391, 19:15 عصر
سلام

آرا بهترینش همون جلوی عبارت Whereتابع Convert استفاده کن

موفق باشی

hamed shahba
شنبه 23 اردیبهشت 1391, 19:04 عصر
براي فيلد عددي نميتوانيد از دستور Like استفاده كنيد !!!

سلام
البته من استفاده کردم وجواب داده ولی نه به کیفیت کارکتر

البته
از دستور
String.Concat("%".textbox1.text,"%").toString
استفاده کردم.