【问题标题】:Task export on MSProject with error on blank/empty tasksMSProject 上的任务导出与空白/空任务错误
【发布时间】:2020-10-21 19:23:18
【问题描述】:

我在 C# VSTO 中创建了一个插件,用于将任务从 MSProject 导出到 SQLServer。我的代码工作正常,直到 MSProject 中的任务有一个空/空白条目。

我不知道解决方法。看来,die foreach 在这里不起作用。

    MsProject.Tasks tasks = Globals.ThisAddIn.Application.ActiveProject.Tasks;

    using (SqlConnection cnn = new SqlConnection(connectionString))
    {

    try
    {
        // Open the connection to the database.
        cnn.Open();

        foreach (Microsoft.Office.Interop.MSProject.Task t in tasks)
        {
                DateTime start = (DateTime)t.Start;
                DateTime finish = (DateTime)t.Finish;
                
                using (SqlCommand cmd = new SqlCommand(sql, cnn))
                {
                    // Create and set the parameters values 

                    cmd.Parameters.Add("@id", SqlDbType.Int).Value = t.ID;
                    cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = t.Name;
                    cmd.Parameters.Add("@start", SqlDbType.DateTime).Value = start;
                    cmd.Parameters.Add("@finish", SqlDbType.DateTime).Value = finish;
                    
                    int rowsAdded = cmd.ExecuteNonQuery();   
                }
            }
        
        MessageBox.Show("Data transfered" );


    }

            

在 MSProject 中它看起来像:

有人知道如何循环或包含空白/空任务吗?

目前我只将对象的NullPointerReference 视为错误,第三个任务不会导出到 SQL Server。

【问题讨论】:

    标签: c# sql-server office-interop ms-project


    【解决方案1】:

    这是一个常见问题。每当循环执行任务时,在使用之前检查任务对象是否为空:

    foreach (Microsoft.Office.Interop.MSProject.Task t in tasks)
    {
        if (t != null)
        {
            DateTime start = (DateTime)t.Start;
            DateTime finish = (DateTime)t.Finish;
            // rest of code...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      相关资源
      最近更新 更多