微软项目VSTO

时间:2018-11-27 14:13:21

标签: vsto ms-project

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

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

执行此技巧的行是:

projApp.VisualReportsSaveDatabase(FileNameCompleteMdb, PjVisualReportsDataLevel.pjLevelDays)

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

我的问题是:

有什么方法可以强制Project始终以英语导出mdb文件。

最好的问候

1 个答案:

答案 0 :(得分:0)

经过一番研究,我找到了这个解决方案。这不是最佳解决方案,但可以。

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

将_Code编码为字符串         昏暗_名称为字符串         昏暗_开始为字符串         昏暗_完成为字符串         昏暗_工作为字符串         昏暗_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