Invetory Labels - Extended Description

SUGGESTED

I am trying to add the extended item description to the inventory labels.  I am at a loss.  I've added the CI_ExtendedDescription in the Database Expert and added the field to the report - but when I try to print the labels, they are blank.   I'm not that familar with Crystal Reports.  I've done some searches and people refer to adding a formula, but I'm not sure where, or what formula to add.

I know it is a very broad question - and I don't have a lot of Crystal Reports experience.  But if anyone has some ideas on how to accomplish this - it would be appreciated.  I've already wasted a few hours experimenting and trying to figure it out!

  • 0

    Whatever table is in the report will need to be linked to CI_ExtendedDescription on the ExtendedDescriptionKey fields in each.  If your base table in the report doesn't have the field, then you will need to add it to the work table as a sourced UDF from CI_Item on the Item Code.

    Once you are able to link the tables.  You need to create a formula that checks if the ExtendedDescriptionKey is blank or 0000000000.  If it is, then use the standard ItemCodeDesc, if it isn't then use CI_ExtendedDescription.ExtendedDescriptionText.

    If you want to avoid table joins in the report, you can instead use a subreport and have it linked on the ExtendedDescriptionKey in the main report.

  • 0
    SUGGESTED

    Your table joins should look like the following.  Make the CI_ExtendedDescription table a LEFT outer join to the  Ci_Item table since not all records will have an Extended Description.  Hope this helps!

  • 0 in reply to David Speck

    I believe I have linked the tables per the reply I received below.  But, each time I try to insert a forumla per your suggestion, I end up with a blank label.  Any help on the actual formula would be appreciated.

  • 0 in reply to Sage100Reports

    Thanks for the help - I have set up my tables to link per your reply.  But, each time I try to add a formula to create the desired extended description, the label is blank.

  • 0 in reply to rnssales

    With the outer join (which might actually be a right outer join, depending on the order the tables were added to the report), you need to handle NULL values in any formula referencing the extended description table.

  • 0 in reply to rnssales

    If you have a lot of items, adding those tables joins will affect the performance of the report on Standard & Advanced systems.

    Generally, when possible, it is recommended to instead created a UDF in the work table sourced from the table.  For your report, it would be added to the IM Inventory Labels Work table.

    Once the field is added to the table, you then have to use the "Verify Database" feature in the crystal report.

    It will prompt you to authenticate with the ODBC driver. 

    You may have to switch the report to use the SOTAMAS90 DSN to make sure it connects to your Sage 100 installation.

    Once the new UDF is visible in the table's list of fields, you can use it in the formula.

    If you link CI_ExtendedDescription into the main report, then it should be done like this.

    Now if you are on version 2015 or later, you should be able to use an "Inner Join" because Sage switched to using "0000000000" instead of a blank (NULL to ODBC) value in the ExtendedDescriptionKey field for items that have a description less than or equal to 30 characters.  I have however come across one install where there were still some items with a blank ExtendedDescriptionKey.

    Whether you use my approach to link in CI_ExtendedDescription or the other approach where you link in CI_Item and CI_ExtendedDescription, the gist of the formula for the description is as follows.

    If IsNull({IM_InventoryLabelsWrk.UDF_EXTENDEDDESCRIPTIONKEY}) Or {IM_InventoryLabelsWrk.UDF_EXTENDEDDESCRIPTIONKEY} = ["", "0000000000"] Then
    {IM_InventoryLabelsWrk.ItemCodeDesc}
    Else
    {CI_ExtendedDescription.ExtendedDescriptionText}

    If you do also link in CI_Item, then it should look like this.

    If IsNull({CI_Item.ExtendedDescriptionKey}) Or {CI_Item.ExtendedDescriptionKey} = ["", "0000000000"] Then
    {IM_InventoryLabelsWrk.ItemCodeDesc}
    Else
    {CI_ExtendedDescription.ExtendedDescriptionText}