MS Project VSTO

问题描述 投票:0回答:1

我正在使用Project 2016与ERP集成。我的目标是阅读项目的资源信息。

为此,我将数据库保存在mdb文件中。

这个技巧的路线是:

projApp.VisualReportsSaveDatabase(FileNameCompleteMdb, PjVisualReportsDataLevel.pjLevelDays)

一切正常,但我的一些用户,他们正在使用葡萄牙语语言项目。创建Access mdb文件时,许多表字段的名称都是葡萄牙语,导致我的所有SQL语句都失败。

我的问题是:

有没有办法强制Project始终导出英文的mdb文件。

最好的祝福

vsto ms-project
1个回答
0
投票

经过一番研究后,我得到了这个解决方案。它不是最好的解决方案,但有效。

第一步,将所有字段声明为字符串

Dim _Code As String Dim _Name As String Dim _Start As String Dim _Finish As String Dim _Work as String Dim _ActualWork As String

第二步:

使用从项目应用程序中读取的FieldName设置字符串。此时,项目将根据其设置的语言返回其FieldNames。

    _Code = projApp.FieldConstantToFieldName(PjField.pjResourceCode)
    _Name = projApp.FieldConstantToFieldName(PjField.pjResourceName)
    _Start = projApp.FieldConstantToFieldName(PjField.pjResourceStart)
    _Finish = projApp.FieldConstantToFieldName(PjField.pjResourceFinish)
    _Work = projApp.FieldConstantToFieldName(PjField.pjResourceWork)
    _ActualWork = projApp.FieldConstantToFieldName(PjField.pjResourceActualWork)


    Dim qryResource As String = "Select [ResourceUID], [Code], [Name], [Start], [Finish], [Work], [Actual Work] From MSP_EpmResource Where [Code] >'0';"

第3步:使用英文的sql语句,只需用您的变量替换原始的FieldNames:

    qryResource = qryResource.Replace("Code", _Code)
    qryResource = qryResource.Replace("Name", _Name)
    qryResource = qryResource.Replace("Start", _Start)
    qryResource = qryResource.Replace("Finish", _Finish)
    qryResource = qryResource.Replace("Actual Work", _ActualWork)
    qryResource = qryResource.Replace("Work", _Work)

最后,根据您的应用程序语言,您将拥有一个有效的sql语句。

TKS

© www.soinside.com 2019 - 2024. All rights reserved.