如果返回数据的长度等于零,则强制ADODB返回EOF

时间:2014-05-08 13:20:33

标签: sql-server vbscript asp-classic adodb

我有一个返回单个元素的查询。

此记录的数据为空(Length = 0,但不为null)。

我想知道如果数据长度等于零,是否可以强制查询返回EOF

sql="select Code from AS_Table where NumAtend = 1234 "
set rs = Con1.execute(sql)

if not rs.eof then
    Json("status") = true
else
    Json("status") = false
end if

我知道你可以在" IF"之后测试它,但不想知道如何解决这个问题(因为我已经知道)。

我的问题是"如果"如果EOF

,可能会强制len(Code)=0

3 个答案:

答案 0 :(得分:2)

我添加了一个comment earlier,但看到好像每个人都跳上了这里的答案车;

SELECT Code FROM AS_Table WHERE NumAtend = 1234 AND LEN(Code) > 0

通过添加LEN(Code) > 0,只会导致Code的结果返回大于0的结果。

在每个实例中,您希望返回ADODB.Recordset,否则您将无法检查Recordset.EOF属性,因为ADODB.RecordsetRecordset.State adStateClosed并且任何访问其属性的尝试都将返回错误(adErrObjectClosed)。

 Error No.   | Description
------------------------------------------------------------------
-2146824578  | Operation is not allowed when the object is closed.

使用RETURN怎么样?

RETURN的问题是,您将无法获得结果集,因此ADODB.Recordset将处于状态adStateClosed,并且上述内容将适用。


有用的链接

答案 1 :(得分:0)

您无法强制ADO更改其定义的行为(除非您修补.dll)。在代码中添加If子句/语句或在SQL语句中添加WHERE子句(“... WHERE codelength> 0”)。

答案 2 :(得分:0)

要通过您的应用程序以编程方式执行此操作,您可以过滤结果集。

sql="select Code from AS_Table where NumAtend = 1234 "
set rs = Con1.execute(sql)
rs.filter = "status <> ''"

if not rs.eof then
    Json("status") = true
else
    Json("status") = false
end if

如果n#34;状态&#34;这将给你rs.EOF字段为空