2014-04-09 67 views
0

我想列出QC11項目和域名在窗體加載()的組合框中,但我得到的錯誤對象,我使用的代碼:在VBScript(QC11 OTA)中獲取ALM項目和域名的列表

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 
+0

哪條語句產生「需要對象」錯誤? – Xiaofu

+0

您幾乎完全改變了您的代碼。您的原始問題與IXMLDOMNodeList無關,並與從ALM API獲取域和項目有關。如果解決了這個問題,那麼你應該爲你的文件解析需求提出一個不同的問題。 – Xiaofu

+0

...並且現在也使用不同的API! (是OTA API,現在是SiteAdmin API) – Xiaofu

回答

0

如果這是真的,你正在使用的代碼,那麼一開始這條線可能產生的錯誤:

For Each Domain In TheTDConnection.DomainsList 

基於您的代碼的其餘部分「TheTDConnection」應爲「TDC」:

For Each Domain In tdc.DomainsList 

哦,要做到這一點,您幾乎可以肯定首先會通過調用tdc.Login ...而不是僅連接到服務器來登錄。

在相關說明上,不建議使用DomainsList屬性。我想你可以循環訪問由GetAllVisibleProjectDescriptors返回的ProjectDescriptor對象列表,因爲它涵蓋了當前登錄用戶有權訪問的所有域下的所有項目。

編輯:這是一個基於原始問題的完整解決方案。這裏的工作測試代碼將循環訪問提供的用戶有權訪問的域/項目。假定您已安裝QC/ALM連接加載項(必需)。

如果您在64位機器上運行這一塊的VBScript的,你需要使用WScript.exe的32位版本的運行它: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 
+0

看看OP的代碼,無論如何他們對Domain對象都沒有做任何事情,至少在發佈的代碼片段中沒有。 – Xiaofu

+0

我上面編輯過,似乎不工作 – user635545

+0

@ user635545你有沒有嘗試添加代碼先登錄?你能更具體一些,並告訴我們哪一行當前正在導致錯誤? – Xiaofu