2013-12-18 4 views
0

Я использую следующий код для выбора определенных строк Моего Datatable Но проблема в том, что он ищет только полное содержание сопрягая из колонкине может фильтровать DataRows

Dim strExpr = "`" + callerAHeader_Name + "` = " & iSrch & "" 
Dim strSort = callerAHeader_Name + " DESC" 
Dim foundRows As DataRow() 

foundRows = ds.Tables(0).[Select](strExpr,strSort) 

Он отлично работает, но искать соответствия некоторых слов, которые я использовал

Dim strExpr = "`" + callerAHeader_Name + "` LIKE '%" & iSrch & "%'" 
Dim strSort = callerAHeader_Name + " DESC" 
Dim foundRows As DataRow() 

foundRows = ds.Tables(0).[Select](strExpr,strSort) 

Который дает мне ошибку "Невозможно выполнить операцию 'Like' на System.Double и System.String"

Если я удалить перевернутой запятой от strExpr

Dim strExpr = "`" + callerAHeader_Name + "` LIKE %" & iSrch & "%" 

он дает ошибку Синтаксическая ошибка: недостающее операнд перед оператором «Mod».

+1

Я предполагаю, что переменная callerAHeader_Name - это имя столбца таблицы (имя поля), поэтому вместо перевернутых запятых вы должны использовать скобки [...], чтобы избежать их пробелов. Каков тип данных iSrch? это целое число? –

ответ

2

Попробуйте Преобразование значения столбца во время поиска

Dim foundRows = ds.Tables(0).Select("Convert(" & callerAHeader_Name & ", 'System.String') LIKE '*" + TextBox1.Text + "*'") 
+1

Wooo Man You Rockss It Works Greatt. , , , , Спасибо @Jadeja RJ – BRSinh

+1

Ваш приятель. , , , , –

0

Используйте это:

Dim strExpr = "[" + callerAHeader_Name + "] LIKE '%" + Convert.ChangeType(iSrch, GetType(String)) + "%'" 
Dim strSort = "[" + callerAHeader_Name + "] DESC" 

EDIT: использование GetType (String) вместо C# эквивалентной TYPEOF (строка)

вы также можете использовать оператор & для объединения строк и целочисленных значений в vb, но я предпочитаю Convert.ChangeType

Смежные вопросы