我有一个返回单个元素的查询。
此记录的数据为空(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
答案 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.Recordset
将Recordset.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字段为空