2010-09-22 64 views

回答

0

看看Colby Africa's blog post。另外,msdn docs are here

編輯

所產生的過濾僅僅是XML。下面是從「LookupTables」表返回數據的過濾器(所有的查找表的列表):

<?xml version="1.0" encoding="utf-16"?> 
<Filter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" filterTableName="LookupTables" xmlns="http://microsoft.com/ProjectServer/FilterSchema.xsd"> 
    <Fields> 
    <Field tableName="" fieldName="LT_UID" /> 
    <Field tableName="" fieldName="LT_NAME" /> 
    <Field tableName="" fieldName="LT_SORT_ORDER_ENUM" /> 
    <Field tableName="" fieldName="LT_PRIMARY_LCID" /> 
    <Field tableName="" fieldName="LT_FILL_ALL_LEVELS" /> 
    <Field tableName="" fieldName="LT_CHECKOUTBY" /> 
    <Field tableName="" fieldName="LT_CHECKOUTDATE" /> 
    <Field tableName="" fieldName="MOD_DATE" /> 
    </Fields> 
    <Criteria /> 
</Filter> 

這裏是讓所有的數據對於一個表所需的過濾器的另一個例子......

第1步:獲取排爲LookupTable中(一般表信息)

<?xml version="1.0" encoding="utf-16"?> 
<Filter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" filterTableName="LookupTables" xmlns="http://microsoft.com/ProjectServer/FilterSchema.xsd"> 
    <Fields> 
    <Field tableName="" fieldName="LT_UID" /> 
    <Field tableName="" fieldName="LT_NAME" /> 
    <Field tableName="" fieldName="LT_SORT_ORDER_ENUM" /> 
    <Field tableName="" fieldName="LT_PRIMARY_LCID" /> 
    <Field tableName="" fieldName="LT_FILL_ALL_LEVELS" /> 
    <Field tableName="" fieldName="LT_CHECKOUTBY" /> 
    <Field tableName="" fieldName="LT_CHECKOUTDATE" /> 
    <Field tableName="" fieldName="MOD_DATE" /> 
    </Fields> 
    <Criteria> 
    <FieldOperator fieldOperationType="Equal"> 
     <Field fieldName="LT_UID" /> 
     <Operand xmlns:q1="http://microsoft.com/wsdl/types/" xsi:type="q1:guid">20870732-12b6-48e2-acf4-94d934dfc27a</Operand> 
    </FieldOperator> 
    </Criteria> 
</Filter> 

2步:獲取從LookupTableStructures表中的所有數據(層次信息)

<?xml version="1.0" encoding="utf-16"?> 
<Filter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" filterTableName="LookupTableStructures" xmlns="http://microsoft.com/ProjectServer/FilterSchema.xsd"> 
    <Fields> 
    <Field tableName="" fieldName="LT_STRUCT_UID" /> 
    <Field tableName="" fieldName="LT_UID" /> 
    <Field tableName="" fieldName="LT_PARENT_STRUCT_UID" /> 
    <Field tableName="" fieldName="LT_STRUCT_COOKIE" /> 
    </Fields> 
    <Criteria> 
    <FieldOperator fieldOperationType="Equal"> 
     <Field fieldName="LT_UID" /> 
     <Operand xmlns:q1="http://microsoft.com/wsdl/types/" xsi:type="q1:guid">20870732-12b6-48e2-acf4-94d934dfc27a</Operand> 
    </FieldOperator> 
    </Criteria> 
</Filter> 

第3步:獲取的所有值在這個查詢表

<?xml version="1.0" encoding="utf-16"?> 
<Filter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" filterTableName="LookupTableValues" xmlns="http://microsoft.com/ProjectServer/FilterSchema.xsd"> 
    <Fields> 
    <Field tableName="" fieldName="LT_STRUCT_UID" /> 
    <Field tableName="" fieldName="LCID" /> 
    <Field tableName="" fieldName="LT_UID" /> 
    <Field tableName="" fieldName="LT_VALUE_DUR" /> 
    <Field tableName="" fieldName="LT_VALUE_NUM" /> 
    <Field tableName="" fieldName="LT_VALUE_DUR_FMT" /> 
    <Field tableName="" fieldName="LT_VALUE_DATE" /> 
    <Field tableName="" fieldName="LT_VALUE_TEXT" /> 
    <Field tableName="" fieldName="LT_VALUE_PHONETIC" /> 
    <Field tableName="" fieldName="LT_VALUE_FULL" /> 
    <Field tableName="" fieldName="LT_VALUE_DESC" /> 
    <Field tableName="" fieldName="LT_VALUE_SORT_INDEX" /> 
    <Field tableName="" fieldName="LT_VALUE_LOCALIZED_COOKIE" /> 
    </Fields> 
    <Criteria> 
    <FieldOperator fieldOperationType="Equal"> 
     <Field fieldName="LT_UID" /> 
     <Operand xmlns:q1="http://microsoft.com/wsdl/types/" xsi:type="q1:guid">20870732-12b6-48e2-acf4-94d934dfc27a</Operand> 
    </FieldOperator> 
    </Criteria> 
</Filter> 

它需要三個獨立的過濾器,因爲它是在三個單獨的表拆分獲得所有這些數據。在C#中,我使用這些過濾器中的每一個調用ReadLookupTablesMultiLang函數,然後合併返回的數據表。

+0

這裏的問題是我沒有所有這些方法來構建一個Filter對象(我正在使用Python)。 我認爲對我來說最好的解決方案可能是查看HTTP請求中發送的最終XML的語法,並從Python生成類似的東西。 – 2010-09-22 14:57:23

+0

我已經更新了我的答案,以包含使用LookupTables時從示例中生成的XML。讓我知道如果這有幫助! – 2010-09-22 15:52:22

+0

是啊!這就是我需要的!現在我將嘗試從Python生成正確的查詢。非常感謝! – 2010-09-24 09:44:12