如何解决通过 Project Interop 在 MPP 中使用多个过滤条件
我正在使用 MS Project interop 来自动读取 MPP。实现单列过滤器正在工作,但只是想知道,如何使用或/添加条件实现多列过滤器?我正在使用以下代码来过滤有效的单列:
public string Load(string fileName)
{
MSProject.ApplicationClass app = null;
try
{
app = new MSProject.ApplicationClass();
app.Visible = false;
if (app.FileOpen(fileName,true,Type.Missing,MSProject.PjPoolOpen.pjPoolReadOnly,Type.Missing))
{
app.FilterEdit("My New Filter","Resource Names","equals","ResourceNameHere1",true);
//app.Filterapply("Using Resource...","false","ResourceNameHere1");
app.SelectAll();
MSProject.Tasks tsk = (MSProject.Tasks)app.ActiveSelection.Tasks;
}
}
catch(Exception e){}
}
问:
如何在条件中再添加一个资源名称?喜欢将 ResourceName1 和 ResourceName2 与和/或条件一起拉出或添加条件以按完成百分比过滤?
解决方法
更新
由于您需要摘要任务,因此创建过滤器是一个不错的选择。以下是创建具有 3 个条件的过滤器的方法 - 2 个资源和完成百分比:
app.FilterEdit("My New Filter",true,Type.Missing,"Resource Names","contains","ResourceNameHere1",true);
app.FilterEdit("My New Filter",false,"Or","% Complete","is less than","100","And",true);
上一个回答
如果目标是遍历一组满足特定条件的任务,则无需费心创建过滤器、设置过滤器,然后选择所有可见任务。以下是帮助您入门的伪代码:
For Each t In ActiveProject.Tasks
If (t.ResourceNames Like "*Name1*" Or t.ResourceNames Like "*Name2*") And t.PercentComplete < 100 Then
' do something
End If
Next t
仅供参考:要获取对任务摘要任务的引用,请使用 OutlineParent 属性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。