Sql server e从QueryADGroup()函数返回GroupArray时进行验证检查
这是因为Sql server e从QueryADGroup()函数返回GroupArray时进行验证检查,sql-server,vbscript,asp-classic,Sql Server,Vbscript,Asp Classic,这是因为IsEmpty()被设计为在满足两个条件之一时返回True 变量尚未初始化(未指定值) 变量已显式设置为vbEmpty 其他任何操作都将返回False甚至是分配给Null的变量 摘自 IsEmpty如果变量未初始化或显式设置为空,则返回True;否则,它将返回FalseFalse。 以下示例使用IsEmpty函数确定变量是否已初始化: Dim MyVar,MyCheck MyCheck=IsEmpty(MyVar)'返回True。 MyVar=Null'分配Null。 MyCheck=I
IsEmpty()
被设计为在满足两个条件之一时返回True
vbEmpty
False
甚至是分配给Null
的变量
摘自
IsEmpty如果变量未初始化或显式设置为空,则返回True;否则,它将返回False<如果表达式包含多个变量,则始终返回strong>False。
以下示例使用IsEmpty函数确定变量是否已初始化:
Dim MyVar,MyCheck
MyCheck=IsEmpty(MyVar)'返回True。
MyVar=Null'分配Null。
MyCheck=IsEmpty(MyVar)'返回False。
MyVar=Empty'分配空。
MyCheck=IsEmpty(MyVar)'返回True。
是什么导致类型不匹配错误?
通过在QueryADGroup()
函数中设置QueryADGroup=Null
,您将绕过IsEmpty()
检查,因为它总是False
。这意味着
iRownNumber=ubound(GroupArray,2)
尝试检查Null
的上限时失败,并出现错误
Microsoft VBScript运行时错误“800a000d”
类型不匹配:“ubound”
/Saw/list_grp_mem.asp,第18行
因为它需要的是数组
而不是Null
建议的解决办法
相反,你可以做两件事
QueryADGroup=Null
更改为QueryADGroup=Empty
,这样IsEmpty()
将返回True
,因为Empty
已显式设置
QueryADGroup=Empty
IsArray()
而不是IsEmpty()
检查有效的返回值。由于总是希望得到一个数组
,因此这似乎是更好的选择,因为它将捕获任何无效数组的返回值
如果不是IsArray(GroupArray),则
有用的链接
QueryADGroup
返回什么?它最近有没有更改,或者有什么原因导致它无法返回二维数组?@jarlh-对不起,是的,是MS SQLdatabase@shahkalpesh-对不起,我不是程序员,所以我很难理解你的问题。据我所知,在编码方面没有任何变化,只有安全组命名约定。我必须指出,在文件或文件夹名称中使用-
是一种不好的约定,特别是在命令行模式下,它被识别为某些可执行文件的切换字符。就我个人而言,我也不喜欢文件/文件夹名称中的空格,但这就是我的编码者。更新:固定参考,应该指向IsArray(GroupArray)
非常感谢。我已经实现了你的建议,但是我现在收到了一个进一步的错误“提供者错误‘8007203e’”——我已经更新了上面的帖子。你能帮我解决这个问题吗?@PaulMcGee理想情况下,如果这回答了最初的问题,它应该被接受,并提出进一步的问题,因为现在的问题是LDAP查询,而不是构成问题标题的错误。请参阅,但我在问题注释中提供了一些提示。
No Group Found