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),则
    

  • 有用的链接

    您说的是SQL数据库,您可能是指MS SQL Server数据库吗?
    QueryADGroup
    返回什么?它最近有没有更改,或者有什么原因导致它无法返回二维数组?@jarlh-对不起,是的,是MS SQLdatabase@shahkalpesh-对不起,我不是程序员,所以我很难理解你的问题。据我所知,在编码方面没有任何变化,只有安全组命名约定。我必须指出,在文件或文件夹名称中使用
    -
    是一种不好的约定,特别是在命令行模式下,它被识别为某些可执行文件的切换字符。就我个人而言,我也不喜欢文件/文件夹名称中的空格,但这就是我的编码者。更新:固定参考,应该指向
    IsArray(GroupArray)
    非常感谢。我已经实现了你的建议,但是我现在收到了一个进一步的错误“提供者错误‘8007203e’”——我已经更新了上面的帖子。你能帮我解决这个问题吗?@PaulMcGee理想情况下,如果这回答了最初的问题,它应该被接受,并提出进一步的问题,因为现在的问题是LDAP查询,而不是构成问题标题的错误。请参阅,但我在问题注释中提供了一些提示。 No Group Found