语法错误:运算符'IS'缺少操作数



我正在使用行过滤器来查询具有以下列的数据表:

  1. USER_NAME(字符串)
  2. USER_ID(国际)
  3. USER_CODE(字符串)

Rowfilter如下:

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

在调试时,这是我得到的行过滤器:

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

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

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

请帮助我解决此错误。

提前谢谢。

问候斯瓦蒂

根据我的评论。

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

奇怪的是,它根本不应该工作,因为根据我发现的文档,行过滤器没有IS......您可以尝试改用ISNULL函数:

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

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

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

相关内容

最新更新