2016-08-30 3 views
-1

Я создал набор данных, а также принял строки переменной IsExModul, которая используется во время фильтра моего кода выглядит следующим образомфильтрации DataView, уточнение требуется ошибка

string IsExModul ="Y" ;//By some condition this variable is set to Y 
ReportDataView = new DataView(FullReportData, "ReportSection = '" + ReportSection + "' and (IsPentesterAccess = 'Y' or (" + Convert.ToInt32(LoginUserInfo.Rows[0]["isadmin"]) + " = 1 and IsAdminAccess = 'Y') or (" + Convert.ToInt32(LoginUserInfo.Rows[0]["IsSevTempAcess"]) + " = 1 and IsSevTempAccess = 'Y') or (" + Convert.ToInt32(LoginUserInfo.Rows[0]["IsWOModule"]) + " = 1 and IsWoModuleAccess = 'Y') or (" + Convert.ToInt32(LoginUserInfo.Rows[0]["IsExModule"]) + " = 2 and IsExceptionAccess = 'Y') or (" + Convert.ToInt32(LoginUserInfo.Rows[0]["IsExModule"]) + " IN (1,3) and IsExceptionAccess = 'Y' and "+IsExModul+" = 'Y' ) )" 

Его Давать исключение «Недопустимое имя столбца [ Y] ' , если я удаляю' и '+ IsExModul + "=' Y '' из условия фильтра, тогда он отлично работает, почему он рассматривает« Y »в качестве столбца.

+0

Вам нужно имя столбца, а не значение «Y» в переменной IsExModul – Steve

+0

@Stev, но IsExModul - это переменная, и мне просто нужно проверить, что IsExModul - это Y – Ashu

+0

. Я не понимаю, почему кто-то ответил на этот вопрос – Ashu

ответ

0

Я изменил переменную IsExModul из строки в целое, и теперь он работает прекрасно, как фильтр в DataView

int IsExModul =1 ;//By some condition this variable is set to 1 

ReportDataView = new DataView(FullReportData, "ReportSection = '" + ReportSection + "' and (IsPentesterAccess = 'Y' or (" + Convert.ToInt32(LoginUserInfo.Rows[0]["isadmin"]) + " = 1 and IsAdminAccess = 'Y') or (" + Convert.ToInt32(LoginUserInfo.Rows[0]["IsSevTempAcess"]) + " = 1 and IsSevTempAccess = 'Y') or (" + Convert.ToInt32(LoginUserInfo.Rows[0]["IsWOModule"]) + " = 1 and IsWoModuleAccess = 'Y') or (" + Convert.ToInt32(LoginUserInfo.Rows[0]["IsExModule"]) + " = 2 and IsExceptionAccess = 'Y') or (" + Convert.ToInt32(LoginUserInfo.Rows[0]["IsExModule"]) + " IN (1,3) and IsExceptionAccess = 'Y' and " + IsExModul + " = 1 ) )", "SerialNumber", DataViewRowState.CurrentRows); 

Но все-таки я не ясно, почему она не работает, когда она была строкового типа данных и значение «Y» , может кто-то help

0

Проблема заключается в последней части заявления and "+IsExModul+" = 'Y' ) ) Это, как ожидается, будет какой-то SQL текст, но IsExModul не имя столбца, где значение должно быть «Y»

+0

@ Bogoljub Это не проблема, так как я теперь изменил IsExModul на тип int datatype, и он отлично работает, просто потому, что он не работает, когда он является строковым типом данных, может быть, есть какая-то проблема в одинарных кавычках или двойных кавычках, когда тип данных - строка – Ashu

+0

hmm вы можете попытаться вернуть его в строку и сделать это ''" + IsExModul + "' = 'Y')' просто добавьте одну цитату до и после двойных кавычек соответственно. – Bogoljub

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