Setting Up an IDO Method Critical Number Drilldown

You can set up a drilldown for an IDO method-based critical number either by creating a new one or by copying an existing one and then modifying it.

  1. Open the Drilldowns Setup form.
  2. Click Filter In Place.
  3. Specify this information:
    Drilldown
    Specify an unused integer to identify the drilldown.

    If you do not specify an integer, the system automatically assigns the next available integer.

    Description
    Provide a description for the drilldown.
  4. On the General tab, set up the basic specifications for the drilldown.
  5. Optionally, set up the IDO source for the drilldown.
  6. Optionally, on the Output Columns tab, rearrange the output columns order and specify captions of each.

    The data that is displayed on this tab is derived from the IDO source set up.

    See Setting Up IDO-based Critical Number Drilldowns - Output Columns Tab.

  7. Optionally, on the Categories tab, specify one or more categories where the drilldown belongs. When you select a category, the Category Description field is populated automatically.
  8. Optionally, on the Sub Drilldowns tab, specify one or more sub drilldowns to use with the selected drilldown.
  9. Optionally, on the Static Parameters tab, specify one or more name-value pairs
    Note: Static parameter options are most effective when the source of data for the critical number is a stored procedure. When the data source is an IDO, the same end is accomplished much more easily using filters.
  10. Optionally, on the Input Parameters tab, rearrange the input parameters order and provide descriptions of each.

    The data that is displayed on this tab is derived from the IDO source set up.

  11. Associate the drilldown with a critical number:
    1. Open the Critical Numbers Setup.
    2. Select the critical number.
    3. On the Drilldowns tab, select the new drilldown and specify a description.
    4. Save the record.
An example of a custom load method for the drilldown:
[IDOMethod( MethodFlags.CustomLoad, "" )]
      public DataTable UserNamesDetail( DateTime AsOfDate, int DrillNum, int KpiNum, string Id,
         string Parm1, string Parm2, string Parm3, string Parm4, string Parm5, string Parm6, string Parm7, string Parm8, string Parm9,
         string Parm10, string Parm11, string Parm12, string Parm13, string Parm14, string Parm15, string Parm16, string Parm17, string Parm18, string Parm19,
         string Parm20, string Parm21, string Parm22, string Parm23, string Parm24, string Parm25, string Parm26, string Parm27, string Parm28, string Parm29,
         string Parm30, string Parm31, string Parm32, string Parm33, string Parm34, string Parm35, string Parm36, string Parm37, string Parm38, string Parm39,
         string Parm40, string Parm41, string Parm42, string Parm43, string Parm44, string Parm45, string Parm46, string Parm47, string Parm48, string Parm49,
         string Parm50 )
      {
         var dtResults = new DataTable();

         using ( ApplicationDB appDB = IDORuntime.Context.CreateApplicationDB() )
         {
            using ( var cmd = appDB.CreateCommand() )
            {
               cmd.CommandType = CommandType.Text;
               cmd.Connection = appDB.Connection;
               cmd.CommandText = string.Concat( " SELECT un.Username, un.UserDesc, un.EditLevel, un.SuperUserFlag, un.Status ", 
                                                " FROM usernames un "
                                              );
               cmd.CommandText = IDORuntime.AppDataProvider.MassageQueryForProvider( cmd.CommandText );

               using ( DbDataAdapter adapter = IDORuntime.AppDataProvider.CreateAdapter() )
               {
                  adapter.SelectCommand = (DbCommand)cmd;
                  adapter.Fill( dtResults );
               }
            }
         }

         return dtResults;
      }