2016-04-20 61 views
0

這是當前的代碼:如何循環關係中的項目?

Class %Utcov.Test Extends %RegisteredObject 
{ 

ClassMethod listClasses(ns As %String, projectName As %String) 
{ 
    // Switch namespaces to the new one 
    new $namespace 
    set $namespace = ns 

    // Grab our project, by name; fail otherwise 
    // TODO: failing is CRUDE at this point... 
    #dim project as %Studio.Project 
    #dim status as %Status 

    // TODO: note sure what the "concurrency" parameter is; leave the default 
    // which is -1 
    set project = ##class(%Studio.Project).%OpenId(projectName, /* default */, .status) 

    if ('status) { 
     write "Argh; failed to load", ! 
     halt // meh... Ugly, f*ing ugly 
    } 

    w project.Items 
} 

ClassMethod main() 
{ 
    do ..listClasses("USER", "cache-tort-git") 
} 

} 

首先第一件事情:我知道這些代碼很爛......但是,這是學習曲線,我最終會做的更好。我想在這裏解決的問題這條線:

w project.Items 

在控制檯,它目前打印:

[email protected]%Library.RelationshiptObject 

,但我想這樣做當然是通過這些對象,以循環WH根據文件,ich是%Studio.ProjectItem的「實例」。

如何循環瀏覽這些內容? WRITE不會削減它,事實上,我從一開始就猜測它不會......我只是無法弄清楚這是如何在ObjectScript中完成的:/

回答

2

當你用w project.Items寫的對象時, [email protected]%Library.RelationshiptObject,這個字符串可能有助於理解我們得到的對象,在這種情況下,它是類%Library.RelationshiptObject的對象,當您在documentation中打開此類時,您可能會發現一些可以幫助您的方法。
Here你可以找到一些例子,如何處理關係,以對象的方式和SQL。

+0

我偶然發現了這個頁面,所以現在我有了對象列表。有一個類型爲'PKG'的對象似乎是我想要的...現在我需要能夠列出該對象中的文件... – fge

0
Set tKey = "" 
For { 
    ;tItem will be the first item in your list which will be ordered by OREF 
    Set tItem = project.Items.GetNext(.tKey) 
    Quit:(tKey = "") 
    ;Do whatever you want with tItem 
} 
+0

請使用適當的代碼格式清理您的答案。 – Shawn