Programming Q & A - Click here to ask a new question.

Q What's new for programmers?
A Lots.  We're always improving Milestones Professional's amazing OLE programming interface.  Click here for the latest news for programmers who use Milestones.

Q I am trying to build a schedule using the addsymbol command.  None of the symbols are coming out.  What could be wrong?
A It’s possible that the times on the symbol dates are out of the "displayed range". For example, if you are adding a symbol at midnight but your schedule is set up to display only 8 am to 5 pm, the symbols won’t appear.   You can set your template up to span the date range you need and set the displayed range to all times and then use the .Template method to load the template.  Just be sure to use the full path to the template (.mtp) file.

Q I have a database application which generates schedules.  I want to start my schedule with my company logo.  Is this possible?
A Yes.  Just set up a “starter schedule” (Milestones Professional ML6 file).  When you start your schedule, open this schedule with a GetObject (instead of creating a new object with CreateObject).  You would use this starter schedule instead of loading a template.

Q On your second Microsoft Project OLE Example, how does the DataGraph get created?  I don't see anything in the code.  Looks like magic!
A Since the type of ValueSet used on this DataGraph is a Type 3 ValueSet (Allocate Column Values Across Timeline), the PutCell does it all.  You see, the template for this example already has the ValueSet and DataGraph set up.  When the values are added to the Cost column, the ValueSet pulls these values, spreads them across the timeline and generates the graph below the schedule.

Q Once I set some date properties to a symbol (VIA OLE) is their a way to ensure that the dependency mode will readjust those symbols as needed? Currently they stay where they were programmatically placed.
A We have recently added a SetAutomationDependencyMode method to Milestones Professional 2000's OLE interface.  See the updated online documentation for details.

Q Do you have an example Visual Basic application?  I do not want to use Visual Basic for Applications (VBA) since my program will access several programs at once.
A Yes.  Click here for a Visual Basic application which demonstrates many features in Milestones Professional's VB Interface.  

Q Is there any way to speed up my program?  I'm bringing in thousands of tasks!
A You only need to worry about speed when you are working with large amounts of information.  And, Yes!  We do have a few tips for speeding up your programs:
  • Don't use .RefreshTask or .Refresh methods unless you absolutely have to.  This will speed your program up significantly.
  • Turn off dependency mode unless you really need it.  Also, use SetShowTaskLinks to turn task links off while you are building your schedule.  You will still be able to add dependencies while the links are not shown.  When you are done building your schedule, you can turn the links back on.
  • If you are filling Values columns with numbers which you plan to graph using ValueSets & DataGraphs, add them to your schedule as text.  Later, bring in a template which has the columns set as Values SmartColumns.  Also, do your ValueSet & DataGraph operations last, after you have built the schedule if possible.
  • Once you know how many tasks you have, do a .PutCell onto the last task row.  This will cause Milestones Professional to allocate memory for all the task lines for your project at once.  If you don't do this, then the task memory will be added as you build your schedule and can slow things down.
  • If you are working with several other applications, allocate memory for the information you want to bring in from these applications and bring the information in all at once.  This is faster than getting one record from one application and then one from another.  Bring everything in and work on the data all at once.