เราสามารถคำนวณกำหนดการหรือต้นทุนโครงการโดยใช้โหมดการคำนวณที่กำหนดไว้ในตัวเลือกโครงการสำหรับ Microsoft Project กำหนดการโครงการแสดงวันที่เริ่มต้นและสิ้นสุดของงานโครงการทั้งหมด Microsoft Project ช่วยให้การคำนวณโครงการด้วยตนเองหรือโดยอัตโนมัติ ในฐานะนักพัฒนา C# เราสามารถตั้งค่าโหมดการคำนวณโครงการในแอปพลิเคชัน .NET และคำนวณคุณสมบัติของโครงการได้อย่างง่ายดาย ในบทความนี้ เราจะมาเรียนรู้วิธีการคำนวณโครงการทางโปรแกรมโดยใช้ C#
หัวข้อต่อไปนี้จะครอบคลุมในบทความนี้:
- C # API เพื่อคำนวณโครงการโดยทางโปรแกรม
- การคำนวณโครงการด้วยตนเอง
- การคำนวณโครงการอัตโนมัติ
- ไม่มีโหมดการคำนวณโครงการ
C # API เพื่อคำนวณโครงการโดยทางโปรแกรม
สำหรับการตั้งค่าโหมดการคำนวณโครงการ เราจะใช้ API Aspose.Tasks for .NET มีโหมดการคำนวณโครงการสามโหมด เพื่อคำนวณค่าของคุณสมบัติที่ขึ้นต่อกัน โหมดการคำนวณเหล่านี้คือ:
- ไม่มี – ตั้งค่าคุณสมบัติที่จำเป็นเท่านั้น และไม่คำนวณวันที่และต้นทุนของโครงการใหม่
- แบบแมนนวล – ตั้งค่าเฉพาะคุณสมบัติของออบเจกต์ที่ขึ้นต่อกันโดยไม่มีการคำนวณวันที่และต้นทุนของโครงการใหม่
- อัตโนมัติ – จะคำนวณวันที่ของโครงการและคุณสมบัติต้นทุนใหม่โดยอัตโนมัติ
API กำหนดโหมดการคำนวณที่กล่าวถึงข้างต้นในการแจงนับ CalculationMode คุณสมบัติ CalculationMode ของคลาส Project อนุญาตให้ตั้งค่าหรือรับค่าของ CalculationMode API ยังอนุญาตให้จัดการโครงการที่มีอยู่เพื่อเพิ่มการแก้ไขบางอย่าง นอกจากนี้ยังอำนวยความสะดวกในการดำเนินการจัดการโครงการขั้นพื้นฐานและขั้นสูงได้อย่างราบรื่น โปรด ดาวน์โหลด DLL ของ API หรือติดตั้งโดยใช้ NuGet
PM> Install-Package Aspose.Tasks
การคำนวณโครงการด้วยตนเองโดยใช้ C
เราสามารถตั้งค่าโหมดการคำนวณเป็นแบบแมนนวลและตรวจสอบได้โดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส Project
- ถัดไป ตั้งค่าโหมดการคำนวณเป็นแบบแมนนวล
- จากนั้นระบุวันที่เริ่มโครงการ
- จากนั้น เพิ่มงานใหม่ เช่น งานที่ 1 และงานที่ 2
- จากนั้น อ่านคุณสมบัติของงานที่ตั้งในโหมดแมนนวล
- หลังจากนั้น เริ่มต้นวัตถุของคลาส TaskLinks และเชื่อมโยงงาน
- สุดท้าย ตรวจสอบวันที่เริ่มต้นและสิ้นสุดของงาน 2
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการคำนวณโครงการด้วยตนเองโดยใช้ C#
// ตัวอย่างรหัสนี้สาธิตวิธีการตั้งค่าโหมดการคำนวณโครงการด้วยตนเอง
// สร้างตัวอย่างของโครงการ
Project project = new Project();
// ตั้งโหมดการคำนวณเป็น Manual
project.CalculationMode = CalculationMode.Manual;
// กำหนดวันที่เริ่มต้นโครงการ
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));
// เพิ่มงานใหม่
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");
// คุณสมบัติที่จำเป็นถูกตั้งค่าในโหมดแมนนวล
Console.WriteLine("Task1.Id Equals 1 : {0} ", task1.Get(Tsk.Id).Equals(1));
Console.WriteLine("Task1 OutlineLevel Equals 1 : {0} ", task1.Get(Tsk.OutlineLevel).Equals(1));
Console.WriteLine("Task1 Start Equals 15/04/2015 08:00 AM : {0} ", task1.Get(Tsk.Start).Equals(new DateTime(2015, 4, 15, 8, 0, 0)));
Console.WriteLine("Task1 Finish Equals 15/04/2015 05:00 PM : {0} ", task1.Get(Tsk.Finish).Equals(new DateTime(2015, 4, 15, 17, 0, 0)));
Console.WriteLine("Task1 Duration Equals 1 day : {0} ", task1.Get(Tsk.Duration).ToString().Equals("1 day"));
Console.WriteLine("Task2 Start Equals 15/04/2015 08:00 AM : {0} ", task2.Get(Tsk.Start).Equals(new DateTime(2015, 4, 15, 8, 0, 0)));
Console.WriteLine("Task2 Finish Equals 15/04/2015 05:00 PM : {0} ", task2.Get(Tsk.Finish).Equals(new DateTime(2015, 4, 15, 17, 0, 0)));
Console.WriteLine("Task2 Duration Equals 1 day : {0} ", task2.Get(Tsk.Duration).ToString().Equals("1 day"));
// เชื่อมโยงสองงานเข้าด้วยกัน วันที่ของงานจะไม่ถูกคำนวณใหม่ในโหมดแมนนวล
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);
// ไม่มีการเปลี่ยนแปลงในวันที่ของงาน 2
Console.WriteLine("Task1 Start Equals Task2 Start : {0} ", task1.Get(Tsk.Start).Equals(task2.Get(Tsk.Start)));
Console.WriteLine("Task1 Finish Equals Task2 Finish : {0} ", task1.Get(Tsk.Finish).Equals(task2.Get(Tsk.Finish)));
Task1.Id Equals 1 : True
Task1 OutlineLevel Equals 1 : True
Task1 Start Equals 15/04/2015 08:00 AM : True
Task1 Finish Equals 15/04/2015 05:00 PM : True
Task1 Duration Equals 1 day : True
Task2 Start Equals 15/04/2015 08:00 AM : True
Task2 Finish Equals 15/04/2015 05:00 PM : True
Task2 Duration Equals 1 day : True
Task1 Start Equals Task2 Start : True
Task1 Finish Equals Task2 Finish : True
การคำนวณโครงการอัตโนมัติโดยใช้ C#
เราสามารถตั้งค่าโหมดการคำนวณเป็นแบบอัตโนมัติและตรวจสอบได้โดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส Project
- ถัดไป ตั้งค่าโหมดการคำนวณเป็นอัตโนมัติ
- จากนั้นกำหนดวันที่เริ่มต้นโครงการ
- ตอนนี้ เพิ่มงานใหม่ เช่น งานที่ 1 และ งานที่ 2
- หลังจากนั้น เริ่มต้นวัตถุของคลาส TaskLinks และเชื่อมโยงงาน
- สุดท้าย ตรวจสอบวันที่ที่คำนวณใหม่
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการคำนวณโครงการโดยอัตโนมัติโดยใช้ C#
// ตัวอย่างรหัสนี้สาธิตวิธีการตั้งค่าโหมดการคำนวณโครงการอัตโนมัติ
// สร้างตัวอย่างของโครงการ
Project project = new Project();
// ตั้งค่าโหมดการคำนวณเป็นอัตโนมัติ
project.CalculationMode = CalculationMode.Automatic;
// กำหนดวันที่เริ่มต้นโครงการ
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));
// เพิ่มงานใหม่
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");
// งานเชื่อมโยง
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);
// ตรวจสอบวันที่ที่คำนวณใหม่
Console.WriteLine("Task1 Start + 1 Equals Task2 Start : {0} ", task1.Get(Tsk.Start).AddDays(1).Equals(task2.Get(Tsk.Start)));
Console.WriteLine("Task1 Finish + 1 Equals Task2 Finish : {0} ", task1.Get(Tsk.Finish).AddDays(1).Equals(task2.Get(Tsk.Finish)));
Console.WriteLine("RootTask Finish Equals Task2 Finish : {0} ", task2.Get(Tsk.Finish).Equals(project.RootTask.Get(Tsk.Finish)));
Console.WriteLine("Project Finish Date Equals Task2 Finish : {0} ", task2.Get(Tsk.Finish).Equals(project.Get(Prj.FinishDate)));
Task1 Start + 1 Equals Task2 Start : True
Task1 Finish + 1 Equals Task2 Finish : True
RootTask Finish Equals Task2 Finish : True
Project Finish Date Equals Task2 Finish : True
ไม่มีโหมดการคำนวณโครงการใน C#
เราสามารถตั้งค่าโหมดการคำนวณเป็นแบบอัตโนมัติและตรวจสอบได้โดยทำตามขั้นตอนด้านล่าง:
- ขั้นแรก สร้างอินสแตนซ์ของคลาส Project
- ถัดไป ตั้งค่าโหมดการคำนวณเป็นไม่มี
- จากนั้นระบุวันที่เริ่มโครงการ
- จากนั้น เพิ่มงานใหม่ เช่น งาน 1
- จากนั้น อ่านคุณสมบัติของงาน
- หลังจากนั้น กำหนดระยะเวลาของงานเป็นวัน
- สุดท้าย ตรวจสอบวันที่เริ่มต้นและสิ้นสุดของงาน
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีตั้งค่าการคำนวณโครงการเป็นไม่มีโดยใช้ C#
// ตัวอย่างรหัสนี้สาธิตวิธีการตั้งค่าโหมดการคำนวณโครงการเป็นไม่มี
// สร้างตัวอย่างของโครงการ
Project project = new Project();
// ตั้งค่าโหมดการคำนวณเป็นไม่มี
project.CalculationMode = CalculationMode.None;
// เพิ่มงานใหม่
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");
// โปรดทราบว่าไม่ได้คำนวณแม้แต่รหัส
Console.WriteLine("Task.Id Equals 0 : {0} ", task.Get(Tsk.Id).Equals(0));
Console.WriteLine("Task.OutlineLevel Equals 0 : {0} ", task.Get(Tsk.OutlineLevel).Equals(0));
Console.WriteLine("Task Start Equals DateTime.MinValue : {0} ", task.Get(Tsk.Start).Equals(DateTime.MinValue));
Console.WriteLine("Task Finish Equals DateTime.MinValue : {0} ", task.Get(Tsk.Finish).Equals(DateTime.MinValue));
Console.WriteLine("Task Duration Equals 0 mins : {0} ", task.Get(Tsk.Duration).ToString().Equals("0 mins"));
// กำหนดคุณสมบัติระยะเวลา
task.Set(Tsk.Duration, project.GetDuration(2, TimeUnitType.Day));
Console.WriteLine("Task Duration Equals 2 days : {0} ", task.Get(Tsk.Duration).ToString().Equals("2 days"));
Console.WriteLine("Task Start Equals DateTime.MinValue : {0} ", task.Get(Tsk.Start).Equals(DateTime.MinValue));
Console.WriteLine("Task Finish Equals DateTime.MinValue : {0} ", task.Get(Tsk.Finish).Equals(DateTime.MinValue));
Task.Id Equals 0 : True
Task.OutlineLevel Equals 0 : False
Task Start Equals DateTime.MinValue : True
Task Finish Equals DateTime.MinValue : True
Task Duration Equals 0 mins : True
Task Duration Equals 2 days : True
Task Start Equals DateTime.MinValue : True
Task Finish Equals DateTime.MinValue : True
รับใบอนุญาตฟรี
คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี เพื่อทดลองใช้ห้องสมุดโดยไม่มีข้อจำกัดในการประเมิน
บทสรุป
ในบทความนี้ เราได้เรียนรู้วิธีตั้งค่าโหมดการคำนวณโครงการโดยทางโปรแกรม เราได้เห็นวิธีคำนวณค่าของคุณสมบัติที่ขึ้นต่อกันในแต่ละโหมดการคำนวณโดยใช้ C# นอกจากนี้ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Aspose.Tasks for .NET API โดยใช้ เอกสารประกอบ ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัม