0

我正在尝试在表单 load() 的组合框中列出 QC11 项目和域名,但我收到了需要的错误对象,我正在使用的代码:

Dim tdc As New TDAPIOLELib.TDConnection
Dim projectList As Customization
Dim Project As Customization
Dim Domain As Customization
Set tdc = CreateObject("TDApiOle80.TDConnection")
tdc.InitConnectionEx "https://xyz/omu"
For Each Domain In TheTDConnection.DomainsList
    Set projectList = tdc.GetAllVisibleProjectDescriptors
    For Each Project In projectList
        ComboBox1.AddItem (Project.Name)
        ComboBox2.AddItem (Project.DomainName)
    Next Project
Next Domain
4

1 回答 1

0

如果这确实是您正在使用的代码,那么首先这一行可能会产生错误:

For Each Domain In TheTDConnection.DomainsList

根据您的其余代码“TheTDConnection”应该是“tdc”:

For Each Domain In tdc.DomainsList

哦,要这样做,您几乎可以肯定首先通过调用tdc.Login...登录,而不是仅仅连接到服务器。

在相关说明中,不推荐使用DomainsList属性。我认为您可以遍历GetAllVisibleProjectDescriptors返回的 ProjectDescriptor 对象列表,因为它涵盖了当前登录用户有权访问的所有域下的所有项目。

编辑:这是基于原始问题的完整解决方案。这是经过工作测试的代码,它将在提供的用户有权访问的域/项目中循环。这假定您已安装 QC/ALM 连接插件(必需)。

如果您在 64 位机器上运行这段 VBScript,您需要使用 32 位版本的 wscript.exe 运行它:C:\Windows\SysWOW64\wscript.exe "c:\somewhere\myscript.vbs"

msgbox "Creating connection object"
Dim tdc
Set tdc = CreateObject("TDApiOle80.TDConnection")
msgbox "Connecting to QC/ALM"
tdc.InitConnectionEx "http://<yourServer>/qcbin/"
msgbox "Logging in"
tdc.Login "<username>", "<password>"
Dim projDesc
msgbox "Getting project descriptors"
Set projectDescriptors = tdc.GetAllVisibleProjectDescriptors
For Each desc In projectDescriptors
    msgbox desc.DomainName & "\" & desc.Name
Next
msgbox "Logging out"
tdc.Logout
msgbox "Disconnecting"
tdc.Disconnect
msgbox "Releasing connection"
tdc.ReleaseConnection

编辑2:

如果您想将 sa.GetAllDomains 生成的 XML 解析为服务器上所有域\项目项的列表,您可以这样做(这是 VBScript,因为原始问题和标签仍然提到它,并且已经过测试):

Set objDoc = CreateObject("MSXML.DOMDocument")
objDoc.Load "C:\yourXmlFile.xml"
Set objRoot = objDoc.documentElement

For Each domain in objRoot.selectNodes("TDXItem")
  For Each project in domain.selectNodes("PROJECTS_LIST/TDXItem")
    msgbox domain.selectSingleNode("DOMAIN_NAME").text & "\" & project.selectSingleNode("PROJECT_NAME").text
  Next
Next
于 2014-04-09T13:41:33.830 回答