MSProject 上的任务导出 blank/empty 任务出错
Task export on MSProject with error on blank/empty tasks
我在 C# VSTO
中创建了一个插件,用于将任务从 MSProject 导出到 SQL 服务器。在 MSProject 中的任务有一个 empty/blank 条目之前,我的代码工作正常。
我不知道解决方法。看来,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 中它看起来像:
有人知道如何循环或包含 blank/empty 任务吗?
目前我只得到 NullPointerReference
的对象作为错误,第三个任务不会导出到 SQL 服务器。
这是一个常见问题。每当循环任务时,在使用之前检查任务对象是否不为空:
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...
我在 C# VSTO
中创建了一个插件,用于将任务从 MSProject 导出到 SQL 服务器。在 MSProject 中的任务有一个 empty/blank 条目之前,我的代码工作正常。
我不知道解决方法。看来,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 中它看起来像:
有人知道如何循环或包含 blank/empty 任务吗?
目前我只得到 NullPointerReference
的对象作为错误,第三个任务不会导出到 SQL 服务器。
这是一个常见问题。每当循环任务时,在使用之前检查任务对象是否不为空:
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...