语法错误:在“IS”运算符

时间:2016-06-13 12:33:22

标签: c#

我使用Rowfilter查询具有以下列的数据表:

  1. USER_NAME(字符串)
  2. USER_ID(INT)
  3. USER_CODE(STRING)
  4. 我的Rowfilter如下:

    dv.RowFilter = UserName_ColumnName + " = '" + CurrentUserName + "' And " + UserID_ColumnName + " = " + CurrentID.ToString() + " And " + UserCode_ColumnName + " Is Null";
    

    On Debugging这是我得到的行过滤器:

    dv.RowFilter = USER_NAME = 'mike.sl' And USER_ID = 2753 And USER_CODE Is Null
    

    但是我得到一个异常,指出:'IS'运算符之前缺少操作数。 我搜索了很多网站并尝试了很多选项,但都没有帮助。

    奇怪的是它在一个系统上正常工作,但在另一个系统上它仍然失败,尽管代码和值保持不变。

    请帮我解决此错误。

    提前致谢。

    此致 斯瓦特

2 个答案:

答案 0 :(得分:0)

奇怪的是,它根本不应该工作,因为根据我发现行筛选器没有IS的文档...您可以尝试使用ISNULL函数:< / p>

dv.RowFilter = UserName_ColumnName + " = '" + CurrentUserName + "' And " + 
               UserID_ColumnName + " = " + CurrentID.ToString() + " And " +
               "ISNULL("+ UserCode_ColumnName + ", '-') = '-'";

参考:http://www.csharp-examples.net/dataview-rowfilter/

请确保UserCode_ColumnName不是空字符串或null,否则会出现语法错误。

答案 1 :(得分:0)

根据我的评论。

该错误表明UserCode_ColumnName变量在调用时为空。如何或为什么会隐藏在您应用中的其他代码中,但是,搜索它将解决您的问题。