C# Datatable.select 在 Range 对象中,Min (14)必须小于或等于 max (-1)

问题描述:

for (int i = 0; i < deptIDs.Length;i++ )

{
            #region 安全日活动

            iColNum = 0;
            iRownum = 0;
            filter = "rzlb='AQRHD' and ZZJGDM="+deptIDs[i];
            DataRow[] drAQRHD = dtAllInfo.Select(filter, "riqi desc");
            if (drAQRHD.Length > 0)
            {

            }

}

 

这些代码在执行时有的能通过,有的提示:在 Range 对象中,Min (14)必须小于或等于 max (-1)

其中ZZJGDM经过查看是VARCHAR2(50)类型。

解决方法:

filter = "rzlb='AQRHD' and ZZJGDM='"+deptIDs[i]+"'";

添加两个单引号将ZZJGDM的值括起来,就行了。

在PL/SQL Developer中:

select * from brn_bzgl_rzjl t where t.rzlb='AQRHD' and t.ZZJGDM=12

和

select * from brn_bzgl_rzjl t where t.rzlb='AQRHD' and t.ZZJGDM='12'

执行结果都正常,在datatable.select()中第一种报上述错误。

例:

rows = dtGroup.Select("routeId=" + routeId.ToString(), "leftdate");改为

rows = dtGroup.Select("routeId='" + routeId.ToString()+"'", "leftdate");

 

C# DataTable的过滤条件中过滤字段参数类型必须和表对应的列数据类型一致。如上面routeId 为字符型,所以过滤条件为:routeId = '10',而不应该为routeId = 10

posted @ 2013-09-04 09:59  Net-Spider  阅读(1372)  评论(0)    收藏  举报