次の方法で共有


LookupTable.ReadLookupTables メソッド

ユーザー設定フィールド参照テーブルおよび対応するコード マスクを取得します。languageパラメーターは、 xmlFilterが空の文字列の場合のみ使用されます。

名前空間:  WebSvcLookupTable
アセンブリ:  ProjectServerServices (ProjectServerServices.dll 内)

構文

'宣言
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/LookupTable/ReadLookupTables", RequestNamespace := "https://schemas.microsoft.com/office/project/server/webservices/LookupTable/",  _
    ResponseNamespace := "https://schemas.microsoft.com/office/project/server/webservices/LookupTable/",  _
    Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Function ReadLookupTables ( _
    xmlFilter As String, _
    autoCheckOut As Boolean, _
    language As Integer _
) As LookupTableDataSet
'使用
Dim instance As LookupTable
Dim xmlFilter As String
Dim autoCheckOut As Boolean
Dim language As Integer
Dim returnValue As LookupTableDataSet

returnValue = instance.ReadLookupTables(xmlFilter, _
    autoCheckOut, language)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/LookupTable/ReadLookupTables", RequestNamespace = "https://schemas.microsoft.com/office/project/server/webservices/LookupTable/", 
    ResponseNamespace = "https://schemas.microsoft.com/office/project/server/webservices/LookupTable/", 
    Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public LookupTableDataSet ReadLookupTables(
    string xmlFilter,
    bool autoCheckOut,
    int language
)

パラメーター

  • xmlFilter
    型: System.String

    特定のデータを読み取る XML フィルター。空の文字列は、すべてのルックアップ テーブルのデータを返します。

  • autoCheckOut
    型: System.Boolean

    trueをチェック アウトするを変更します。

戻り値

型: WebSvcLookupTable.LookupTableDataSet

注釈

LookupTableDataSetの主なDataTableは、 LookupTablesDataTableです。

注意

xmlFilterパラメーターは、演算子では、 Criteriaの主なLookupTablesDataTableでのみ行をフィルターする動作します。たとえば、フィルターの行をLookupTableTreesDataTableにReadLookupTablesメソッドを使用して、 filterを使用できません。二次DataTableの行をフィルターしようとする場合は、PSI のFilterInvalid例外を返します。

ただし、主のLookupTablesDataTableとセカンダリのフィルターの列には、 Fields.Addメソッドを使用することができますLookupTableTreesDataTableとLookupTableMasksDataTable。

xmlFilterパラメーターの詳細については、 How to: Use a Filter Parameter with PSI Methodsを参照してください。

プロジェクト サーバーのアクセス許可

権限

説明

LogOnToProjectServerFromProjectProfessional

Project Professional から Project Server データベースに接続することができます。グローバル アクセス権。

ManageEnterpriseCustomFields

エンタープライズ ユーザー設定フィールドと参照テーブル値の定義を変更することができます。グローバル アクセス権。

ReadCustomFieldsTestサンプルは、次の。

  • Project Web Appのインストール後、 CustomFieldDataSetの XML ファイルに書き込みます、app.config ファイル内のエンドポイントのアドレスで指定されているすべてのカスタム フィールドを読み取ります。

  • LCID を指定した言語の参照テーブルのデータの読み取りし、次のLookupTableDataSetは、XML ファイルに書き込みます。ルックアップ テーブル、XML データには、次の表のコレクションが含まれています: LookupTables、 LookupTableMasks、およびLookupTableTrees。

Microsoft Visual Studio 2010プロジェクトでのコード サンプルを使用して、WCF エンドポイントの構成用に app.config ファイルを作成する方法については、 Project 2013 での WCF ベースのコード サンプルの前提条件を参照してください。

using System;
using System.Text;
using System.ServiceModel;
using System.Xml;
using PSLibrary = Microsoft.Office.Project.Server.Library;

namespace Microsoft.SDK.Project.Samples.ReadCustomFieldsTest
{
    class Program
    {
        private const string ENDPOINT_CUSTOMFIELDS = "basicHttp_CustomFields";
        private const string ENDPOINT_LOOKUPTABLE = "basicHttp_LookupTable";
        // Change the output directory for your computer.
        private const string OUTPUT_FILES = @"C:\Project\Samples\Output\";

        private static SvcCustomFields.CustomFieldsClient customFieldsClient;
        private static SvcLookupTable.LookupTable lookupTableClient;

        private static string outFileCustomFieldsDs;
        private static string outFileLookupTableDs;
        private static int language = 1033;         // Use the English LCID by default.

        static void Main(string[] args)
        {
            if (args.Length > 0 && args.Length < 3)
            {
                if (args[0].ToLower() == "-lcid")
                {
                    language = Convert.ToInt32(args[1]);
                }
            }

            outFileCustomFieldsDs = OUTPUT_FILES + "CustomFieldDataSet.xml";
            outFileLookupTableDs = OUTPUT_FILES + "LookupTableDataSet.xml";
            ConfigClientEndpoints(ENDPOINT_CUSTOMFIELDS);
            ConfigClientEndpoints(ENDPOINT_LOOKUPTABLE);

            try
            {
                Console.WriteLine("Reading custom fields...");
                SvcCustomFields.CustomFieldDataSet customFieldDs = 
                    customFieldsClient.ReadCustomFields2(string.Empty, false);

                Console.WriteLine(
                    "\nXML output of the CustomFieldDataSet:\n\t{0}",
                    outFileCustomFieldsDs);
                customFieldDs.WriteXml(outFileCustomFieldsDs);

                Console.WriteLine("Reading lookup tables...");
                SvcLookupTable.LookupTableDataSet lookupTableDs =
                    lookupTableClient.ReadLookupTables(string.Empty, false, language);

                Console.WriteLine(
                    "\nXML output of the LookupTableDataSet:\n\t{0}",
                    outFileCustomFieldsDs);
                lookupTableDs.WriteXml(outFileLookupTableDs);
            }
            catch (FaultException fault)
            {
                // Use the WCF FaultException, because the ASMX SoapException does not 
                // exist in a WCF-based application.
                WriteFaultOutput(fault);
            }
            catch (EndpointNotFoundException ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine("\nInnerException: \n" + ex.InnerException.Message);
            }
            Console.Write("\nPress any key to exit... ");
            Console.ReadKey(true);
        }

        // Extract a PSClientError object from the WCF FaultException object, and
        // then display the exception details and each error in the PSClientError stack.
        private static void WriteFaultOutput(FaultException fault)
        {
            string errAttributeName;
            string errAttribute;
            string errOut;
            string errMess = "".PadRight(30, '=') + "\r\n"
                + "Error details: " + "\r\n";

            PSLibrary.PSClientError error = Helpers.GetPSClientError(fault, out errOut);
            errMess += errOut;

            if (error != null)
            {
                PSLibrary.PSErrorInfo[] errors = error.GetAllErrors();
                PSLibrary.PSErrorInfo thisError;

                for (int i = 0; i < errors.Length; i++)
                {
                    thisError = errors[i];
                    errMess += "\r\n".PadRight(30, '=') + "\r\nPSClientError output:\r\n";
                    errMess += thisError.ErrId.ToString() + "\n";

                    for (int j = 0; j < thisError.ErrorAttributes.Length; j++)
                    {
                        errAttributeName = thisError.ErrorAttributeNames()[j];
                        errAttribute = thisError.ErrorAttributes[j];
                        errMess += "\r\n\t" + errAttributeName
                            + ": " + errAttribute;
                    }
                }
            }
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(errMess);
            Console.ResetColor();
        }

        // Use the endpoints defined in app.config to configure the client.
        public static void ConfigClientEndpoints(string endpt)
        {
            if (endpt == ENDPOINT_CUSTOMFIELDS)
                customFieldsClient = new SvcCustomFields.CustomFieldsClient(endpt);
            else if (endpt == ENDPOINT_LOOKUPTABLE)
                lookupTableClient = new SvcLookupTable.LookupTableClient(endpt);
        }
    }

    // Helper methods
    class Helpers
    {
        /// <summary>
        /// Extract a PSClientError object from the ServiceModel.FaultException,
        /// for use in output of the GetPSClientError stack of errors.
        /// </summary>
        /// <param name="e"></param>
        /// <param name="errOut">Shows that FaultException has more information 
        /// about the errors than PSClientError has. FaultException can also contain 
        /// other types of errors, such as failure to connect to the server.</param>
        /// <returns>PSClientError object, for enumerating errors.</returns>
        public static PSLibrary.PSClientError GetPSClientError(FaultException e,
                                                               out string errOut)
        {
            const string PREFIX = "GetPSClientError() returns null: ";
            errOut = string.Empty;
            PSLibrary.PSClientError psClientError = null;

            if (e == null)
            {
                errOut = PREFIX + "Null parameter (FaultException e) passed in.";
                psClientError = null;
            }
            else
            {
                // Get a ServiceModel.MessageFault object.
                var messageFault = e.CreateMessageFault();

                if (messageFault.HasDetail)
                {
                    using (var xmlReader = messageFault.GetReaderAtDetailContents())
                    {
                        var xml = new XmlDocument();
                        xml.Load(xmlReader);

                        var serverExecutionFault = xml["ServerExecutionFault"];
                        if (serverExecutionFault != null)
                        {
                            var exceptionDetails = serverExecutionFault["ExceptionDetails"];
                            if (exceptionDetails != null)
                            {
                                try
                                {
                                    errOut = exceptionDetails.InnerXml + "\r\n";
                                    psClientError =
                                        new PSLibrary.PSClientError(exceptionDetails.InnerXml);
                                }
                                catch (InvalidOperationException ex)
                                {
                                    errOut = PREFIX + "Unable to convert fault exception info ";
                                    errOut += "a valid Project Server error message. Message: \n\t";
                                    errOut += ex.Message;
                                    psClientError = null;
                                }
                            }
                            else
                            {
                                errOut = PREFIX + "The FaultException e is a ServerExecutionFault, "
                                    + "but does not have ExceptionDetails.";
                            }
                        }
                        else
                        {
                            errOut = PREFIX + "The FaultException e is not a ServerExecutionFault.";
                        }
                    }
                }
                else // No detail in the MessageFault.
                {
                    errOut = PREFIX + "The FaultException e does not have any detail.";
                }
            }
            errOut += "\r\n" + e.ToString() + "\r\n";
            return psClientError;
        }
    }
}

関連項目

参照先

LookupTable クラス

LookupTable メンバー

WebSvcLookupTable 名前空間

その他の技術情報

How to: Use a Filter Parameter with PSI Methods

ロケール ID (LCID) グラフ