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 Connectivity アドインがインストールされていることを前提としています (必須)。

この VBScript を 64 ビット マシンで実行している場合は、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 を解析して、サーバー上のすべての domain\project アイテムのリストにする場合は、これを行うことができます (元の質問とタグでまだ言及されており、テスト済みであるため、これは 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 に答える