如何在MS Project中导出开始日期和时间?

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

我正在使用 Progress 4gl(11.7) 版本,其中我遇到了一个场景,我们正在将作业/任务从应用程序导出到 MS 项目。一切工作正常,但我们在完成百分比方面遇到问题,如果作业/任务持续时间为导出到 MS Project 后的 1.5 天,则计算 2 天,这会自动更改完成百分比。 所以我想可能是因为我们只导出日期而不是时间,计算也在日期中进行。

现在我尝试导出开始日期和结束日期的时间。 这是我试过的方法

DEF VAR objPrj       AS COM-HANDLE NO-UNDO.
DEF VAR objActivePrj AS COM-HANDLE NO-UNDO.

CREATE "MSProject.Application" objPrj. /*Created a project object*/
objActivePrj = objPrj:ActiveProject(). /*Activated the project*/

objActiveTask = objActivePrj:Tasks:ADD("", vTaskId).  /*Add the Task*/
objActiveTask = objActivePrj:Tasks:Item(vTaskId).  /*Add the Task ID*/
objActiveTask:START  = DATETIME("05-30-2020 03:30 pm"). /*Added hardcoded date and time*/

工作得很好,这次我可以在 MS Project 中导出。

现在如果我做类似的作业

objActiveTask:START  = DATETIME(STRING(02/24/24,"99-99-9999") + " " +  STRING(15:00, "HH:MM:SS"))

其中 STRING(02/24/24,"99-99-9999") 将替换为日期变量,STRING(15:00, "HH:MM:SS") 将替换为时间变量。

正在导出时间和日期,但在 MS 项目中导出错误,如 02/29/2024 00:00。

我们如何才能正确导出时间和日期?如果您参与过任何类型的 MS 项目导出程序,请指导我。非常感谢。

openedge progress-4gl ms-project
2个回答
1
投票

在您的硬编码案例中,您有:

objActiveTask:START = DATETIME("05-30-2020 03:30 pm").

你说那行得通,所以我相信它行得通。

您的编程案例如下所示:

objActiveTask:START = DATETIME(STRING(02/24/24,"99-99-9999") + " " +  STRING(15:00, "HH:MM:SS")).

无法编译。我看到的主要问题是 15:00 不是一个有效的常量。时间值是自午夜以来的整数秒。所以“15:00”应该是 (( 15 * 3600 ) + ( 0 * 60 ) + 0 )

因此代码应该是:

objActiveTask:START = 日期时间(STRING(02/24/24,"99-99-9999") + " " + STRING(15 * 3600 + 0 * 60 + 0, "HH:MM:SS"))。

这并不是“错误”,但跳过所有字符串构建并直接使用日期和时间会更干净。 DATETIME() 支持 DATETIME( date, milliseconds ) 因此更简洁的语句是:

DATETIME( 02/24/24, ( 15 * 3600 + 0 * 60 + 0)  * 1000 )

或者,也许:

objActiveTask:开始=日期时间(今天,时间* 1000)。

或者,甚至:

objActiveTask:START = NOW.

0
投票

您可以将

STRING(15:00, "HH:MM:SS")
替换为
"15:00"

参见ABL Dojo中的示例。

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