filesoft.Discuss a project

FILESOFT ACADEMY / COURSE 4 / LESSON 5

Summarize project progress.

Print this checklist or save as PDF. Blank areas are writing space, not online form fields.

Back to the lesson ↗

Build the summary

  1. Continue in a copy of your latest saved Lesson 4 file. Keep the existing TasksForProject relationship: Projects::PrimaryKey = TasksForProject::ProjectID AND Projects::ContactID = TasksForProject::ContactID.
  2. In Manage Database → Fields, add cIsOpen and cIsDone to FollowUps as Calculation fields returning Number. Use the formulas below. Allow stored results because they depend only on that record’s Status. Clear “Do not evaluate if all referenced fields are empty” so blank Status produces 0.
  3. Add cTaskTotal, cTaskOpen and cTaskDone to Projects as Calculation fields returning Number. Under Storage Options, select “Do not store calculation results — recalculate when needed.” These depend on related task records. Also evaluate when referenced fields are empty so empty projects display numeric zeros.
  4. Add Projects::cProgress as an unstored Calculation returning Text. Put the zero-task condition first, then the unexpected-status check, then the all-Done condition.
  5. On Project Workspace, place read-only cTaskTotal, cTaskOpen and cTaskDone fields beside the existing Back to contact button, labeled Total, Open and Done. Replace the explanatory line above the portal with a wide cProgress display. Keep the portal and existing buttons unchanged. Anchor the new objects to the left and top, with enough width for the full progress message.
  6. Retain the existing UI/controller scripts, including row/ownership guards and immediate error checks around Set Field and Commit. This lesson adds calculations; it does not need a new counting script or stored counters updated by buttons.

Try it yourself

  1. Keep an untouched backup. Open the completed example, or finish the build steps in a copy of your Lesson 4 file. Existing assignments and statuses are preserved, so your starting numbers may differ.
  2. On Contact Project Hub, open Rivera’s Website refresh. Compare Total, Open and Done with its assigned tasks. The toolbar still counts projects.
  3. Mark one Open task Done. Total must stay the same, Open decrease by one and Done increase by one. Mark it Open again and expect the reverse. Check the counts after the button finishes and commits. If the display appears stale, use Records → Refresh Window or leave and reopen the project; note that behavior for review.
  4. When every assigned task is Done, expect All tasks done. Reopen one task and expect the Open count in the progress message.
  5. Open a project with no assigned tasks, such as Autumn workshop if you left it empty. Expect Total 0, Open 0, Done 0 and No tasks. Do not create a task just to populate the screen.
  6. Open Morgan’s separate Website refresh. Only Morgan’s matching assignments should count. Unassigned tasks and tasks belonging to a different project must not inflate either project’s totals.
  7. On a disposable copy, clear the Status of one assigned task using the earlier editable task layout, then commit. Total still includes it, but neither Open nor Done does. Expect Check task statuses. Restore the original status afterward.
  8. Use the Lesson 3 chooser to assign or clear one task’s project, then reopen the workspace. Counts should follow the new relationship membership. Restore the test assignment. If a project has more than three tasks, Total must include rows beyond the visible portal area.
  9. Resize the window and check all labels, counts, progress text and task buttons fit. Back to contact must still find the owner. Save, close and reopen; verify assignments, statuses and calculated counts again.

Explain what you learned

Why count PrimaryKey instead of visible portal rows?

Why is Done not simply Total minus Open?

Why does the zero-task condition come first?

Your notes and questions