Issue: Part Labels Display Incorrect Barcode Data when Processing to Multiple Machines in 15.6

Issue: Part Labels Display Incorrect Barcode Data when Processing to Multiple Machines in 15.6

As of build 15.6.221, you now may use the simplified procedure found in the Microvellum Help Center article Processing Station Associates for Reports (Overview)  to resolve this issue in addition to the procedure found in this article. 

Issue :

Part Labels display barcodes that are inconsistent or incorrect. This issue has a different resolution than when a report does not display correct barcode data in build 15.6. Click  here  for more information about that issue.

Cause :

Build 15.6 contains an expanded ability to process with multiple processing stations. One of the reasons for this is that a User may want to direct the parts to one of several CNC machines to equalize the workload of those machines. Alternatively, while printing labels for their nesting CNC, they want to machine their remake parts on their point-to-point machine instead of the nesting machine.

When processing with multiple single parts processing stations, previously, the program would populate various data in the Parts table only for the last station of multiple stations processed. This is because that table has only a single field for the barcode data. We designed the Parts table to contain mainly un-optimized work order data. It was not desirable to change its design to support optimized data produced by multiple stations. As of the early release of 15.6, the OptimizationResults table now contains rows for all optimized parts multiplied by the number of stations used to process those parts. For example, if you are processing ten parts to three stations, the table will contain 30 rows.

The program modification required to accomplish this created an issue where the labels for one type of processing station no longer has access to the data produced by other stations. The reason is that the data for those other stations now exist on a different subset of records in the database.

Resolution :

As of build 15.6.1113, it is now possible to display the correct barcode data in the label from any of the multiple stations used to process that data.

There are two parts to the resolution to this issue.
  1. We modified the program to add columns to the report dataset to enable the creation of parent/child relationships within the OptimizationResults table, to itself.
  2. You add these relationships in the label, and then use the appropriate relationship to isolate the secondary machining information that you intend to display on the label.

Additional Details :

When you open a Placed Part Label in the Report Viewer or Report Designer, the program now creates a dataset containing ten additional columns in the table OptimizationResults when compared to the actual database table. We have named these additional dataset columns "LinkIDStation1", "LinkIDStation2," and so on, through 10.


Fig. 01 (Processing Center Parts List)


Fig. 02 (Database Table)


Fig. 03 (Dataset Table)

See the section below named “Databases and Datasets” for a brief explanation of the differences between databases and datasets and the uses of each.

The names of the ten new columns represent a single processing station used to process the work order. We cannot name the columns with the names of the Processing Stations. Still, to make these internal dataset connections easier to comprehend and utilize, we sort the processing station names and apply the order of those sorted station names to the order of the dataset columns from left to right.

For example, suppose you apply the processing stations named "Default Nest," "Default Saw," and "Default P2P" to a work order when processing, and are using the revised default Microvellum label that already contains the necessary relationships. The dataset column name “LinkIDStation1” corresponds to the first sorted processing station name (Default Nest). LinkIDStation2 corresponds to the second (Default P2P). LinkIDStation3 to the third (Default Saw).

The OptimizationResults parent/child relationships within the label utilize these dataset column names to isolate the necessary data within the larger set of data in the table. Our default reports will contain ten relationships that match the ten columns in the dataset. The report relationship names are “OptResStation1,” “OptResStation2,” and so on, through 10.


Fig. 04 (Report Relationships)

The reporting relationship “OptResStation1” is configured to consume data from the dataset column named “LinkIDStation1,” “OptResStation2” is configured to consume data from the dataset column named “LinkIDStation2,” and so on, through 10.

Using your knowledge of the sort order of your processing stations, and left-to-right order of dataset columns, you can determine which relationship you need to use to display the necessary data on the label. If you are printing nesting labels (Default Nest), but want to print part remake barcodes produced by a single part station (Default P2P), simply use the expression {OptimizationResults.OptResStation2.Face5Barcode} in the desired barcode component.

An easy way to determine the sort order of your processing stations is to display them in the program interface. The program list is sorted in ascending order by default. Click “Toolbox Setup > Processing Station Setup” to see the list. The order of the processing stations from top to bottom in this list will be reflected in the dataset columns from left to right.


Fig. 05 (Processing Station List Showing the Sorted Order of the Three Stations used in this Example and Their Associated Columns and Relations)

Another way to make sure you use the correct relationships in your report components is to write down each of your processing station names and arrange them with ascending sort order. Assign the number one to the first name in the sorted list, the number two to the second one in the list, and so on, for as many stations as you have set up in the list. Then as you are working in the report to set it up to display the correct data, determine which station you are printing labels for and which station contains the secondary data to include on those labels. In the example in the preceding paragraph, you want to display the part remake single part barcode on your nest label. The processing station "Default Nest" is first in the sort order (1), "Default P2P" is second (2), and "Default Saw” is third (3). Think of those sort index numbers as part of the dataset column names. Since you want the single part barcode, you know that originates with the Default P2P station, which you have assigned the number two. That means the reporting relationship to use is “OptResStation2,” consuming the dataset field “LinkIDStation2.” Enter the expression {OptimizationResults. OptResStation2 .Face5Barcode} in the required report component.

The dataset column name represents the link between the parent and child processing stations. The child station is the station or stations containing the secondary machining data that is not produced by the parent station. The parent station is the station for which you are printing labels. The data in the columns LinkIDStation1 - LinkIDStation10 acts like the primary key of one OptimizationResults table, linking to the data in the column LinkID that acts as the foreign key in another OptimizationResults table. See Figure 3.

Since the new columns are not part of the database, they will not be viewable from any database management tool such as Microsoft SQL Server Management Studio, or the Microvellum SQL CE Viewer.

If you want to view the results of the dataset columns, open a report or label in the report designer using build 15.6.1113 or greater. Click the Dictionary tab and expand NewDataSet. Right-click the top-level OptimizationResults table in the dictionary and left-click View Data. Scroll to the extreme right of the table and note the columns as described above. As noted above, the work order database does not contain this data, and thus  you may view it only within the  dataset .


Fig. 06 (View Data)

If you processed with two stations, LinkIDStation1 and LinkIDStation2 would contain data in some, but not all rows. There is no column data for rows belonging to the parent processing station. The rows that do contain data define a one-to-one relationship from the subset of parent data to separate subset of child data – a different OptimizationResults row using that column to link to OptimizationResults.LinkID. The rows that do not contain data define the subset of data that acts as the parent data alone. That means that if the first sorted processing station name is Default Nest, each cell in the column named LinkIDStation1 would contain data, except where the LinkIDProcessingStation matches the LinkID for that specific station. See Figure 3.

Adding Processing Stations

Since the sorted order of the processing stations determines the station referenced by any single column, you will need to give thought to the naming of any new stations you add after you configure your label to use one of the dataset relationships.

For example, let’s say you have processing stations named "Default Nest,” "Default P2P," and "Default Saw,” and you add a fourth named “Default Company Nest.” Since the sort order for the new station name locates it first in the list, that means the sort index numbers will be offset by one. What was previously the first processing station in the list is now the second. Now “Default Company Nest” is first in the sort order (1), "Default Nest" is moved to the second position in the sort order (2), "Default P2P" is third (3), and "Default Saw” is fourth (4). That means that the dataset columns are also offset by one – which also means that the dataset relationships used in your report expressions will also be incorrect.

To work around that, you have two options.
  1. Pay no attention to what you name the processing station, but be sure to recalculate the index numbers and thus the relationships used in the report. Reset those relationships in your report expressions as necessary.
  2. Name your new processing station, so it falls at the end of the sorted list. For example, instead of “Default Company Nest,” name it “z_Default Company Nest” to place it at the end of the list. Unless you intend to use data from this new station in your report, you will need to modify nothing in the report.

Databases and Datasets

What is a  database ?

It is a collection of data located on disk, usually on a server. This collection of data is managed by a database management system (DBMS) and is displayed in the format of tables, rows, and columns.

Since databases are contained in physical files, they are a more permanent form of data as compared to datasets. The downside of databases can be their access speed. It is significantly slower to open a database connection, extract the required data, and then close the connection than it is to access the same data from a dataset.

What is a  dataset ?

It is a collection of data held in the computer memory only. Think of the dataset as a ‘virtual database’ containing tables, rows, and columns. Dataset data may be extracted from a database. Once it has been retrieved from the database and stored in the dataset, the connection to the database is no longer necessary.

The advantage of using a dataset in Microvellum is the speed at which it may be accessed. It speeds up various aspects of Microvellum reports.

You may view dataset data from within the report designer, but you may not edit it. See the attached tutorial for information about how to view the data.

FAQ

Do I need to modify my part labels using one of the tutorials below ?

That depends on whether you are processing with multiple stations and need data from one type of station to be displayed on a label for a different type of station. If that description matches you, then your label will likely require modification.

How many dataset relationships do I need to set up in my part labels ?

Your labels should be configured with a number of dataset relationships equal to or greater than the maximum number of processing stations you would ever use simultaneously when processing for that label. You may configure your label with more relationships than required by the maximum number of processing stations you use.

Will my custom label containing a selection box for a processing station continue to work ?

It depends on the purpose of that selection box. It would be a good idea to evaluate whether you still need the selection box because of the new internal OptimizationResults relationships. If you still need it, it should still work.

What should I do if I process to more than one nesting station ?

If you don’t have it already, your label may require the addition of a processing station selection box to isolate and limit data to one of the nesting machines.

Do I need to reprocess my work orders to get them to work correctly with these new dataset columns ?

No. But, you will need to make sure that the system printing the labels contains all the Processing Stations that were initially used when processing the work order. You may import any missing stations from other machines where they already exist.

This article specifically mentions part labels. Do these modifications also apply to reports ?

Yes, with the following conditions. With version 15.6.1201 or greater, these modifications apply to “Manufacturing Reports,” which are Batch style reports (have the IsBatchReport property checked ON). If the structure of a manufacturing report is similar to that of a part label in that it displays data for a single subset of rows in the table OptimizationResults, you may also apply this information to that report.

Tutorial 1:

Configure a Default Microvellum Part Label Containing Pre-Defined OptimizationResults Dataset Relationships

In this tutorial, we will show you how to configure a default Microvellum Part Label that already contains the dataset relationships to match your specific combination of Processing Stations.

This is only necessary if you are processing with multiple stations, printing labels for one of those stations, and require data on your label from a different station.
  1. Download the label attached to this article and extract it to a known location on your computer. Import it into your system by opening Toolbox and clicking “Toolbox Setup > Options > Utilities > Database Utilities > Reports > Import Reports.” Navigate to the location where you extracted the downloaded file. Select the file at that location named “MicrovellumFactory.sdf” and click Open. The label that is imported is named “Part Labels – OptRes1” and is a 4” x 3” roll feed label.
  2. Create and process a work order using all the Processing Stations that you will generally be using. In this example, we processed with three stations – Default Nest, Default P2P, and Default Saw. We will be printing labels for the nest, but require single part barcode data produced by the P2P station.
  3. With the Processing Center still open, click “Labels > Part Labels > Microvellum Nest Labels > Print Preview.” This sets the print flag for all the nest records and simplifies the label configuration in the Report Designer.
  4. Open the Report Designer by clicking “Toolbox Setup > Design Reports > Design Placed Part Label Report.”
  5. Create a new report from an existing default Microvellum report by clicking “New Report From Existing…” select the report named “Part Labels – OptRes1.”
  6. Determine which components in the label must display the secondary station data.
  7. Determine which relationships you will be using in the component expressions.
    1. List the names of all the Processing Stations you used when processing the work order in step #2 above. Sort those names in ascending order and assign them an index number, 1 for the lowest, 2 for the next in the sort, and so on. For example, if you processed with the stations, you would assign them the following index numbers: IPP_Sample_HBORE = 1, IPP_Sample_NEST = 2, IPP_Sample_P2P = 3.
    2. Determine which of those stations contains the secondary data you need. Since in our tutorial we want to display the face 5 point-to-point barcode and file name on the associated nest label, we need to use the relationship with the index number for that station in the name (IPP_Sample_P2P = 3) which in the label is “OptResStation3.” Therefore, we will use an expression in the components selected in step #6, such as: {OptimizationResults.OptResStation3.Face5Barcode} and {OptimizationResults.OptResStation3.Face5FileName}.

    3. Fig. 07 (Report Component and Expression)


      Fig. 08 (Report Component and Expression)

  8. Click the Preview tab and correct any errors displayed. If no errors, click the Save button in the extreme upper left corner of the Report Designer.

  9. Fig. 09 (Label Showing Secondary Barcode and Filename)

Tutorial 2:

Add the Necessary OptimizationResults Dataset Relationships and Modify a Custom Label

In this tutorial, we will show you how to configure your custom Part Label with the addition of the dataset relationships necessary to match your specific combination of Processing Stations.

This is only necessary if you are processing with multiple stations, printing labels for one of those stations, and require data on your label from a different station.
  1. Create a copy of your custom part label and a work order by clicking “Toolbox Setup > Design Reports > Design Placed Part Label Report > New Report From Existing > (select your existing label) > (enter the new label name) > Designer.” In this tutorial, I select the default label named “Part Labels (Nest4x2SheetHBOREFace5Face6)” and renamed it to “Part Labels_OptRes2.” Figure 10 shows the rendered label in its default state. Notice that it contains horizontal boring barcodes corresponding to the part edges that receive boring, but it contains no barcodes for face 5 or face 6 programs as highlighted.

  2. Fig. 10 (Label with No Face 5 or Face 6 Barcodes)

  3. Add the first dataset relationships to the label.
    1. Click the Dictionary tab in the lower right corner of the Report Designer screen.
    2. Expand Data Sources > NewDataSet > OptimizationResults.
    3. Right-click the top-level OptimizationResults name and select New Relation.

    4. Fig. 11 (Dataset New Relation)

    5. Set the following relation properties
    6. Name in Source = OptResStation1-OptimizationResults
    7. Name = OptResStation1
    8. Alias = OptResStation1
    9. Parent Data Source = OptimizationResults
    10. Child Data Source = OptimizationResults
    11. Parent Columns = LinkID
    12. Child Columns = LinkIDStation1

    13. Fig. 12 (Dataset Relation Properties)

  4. Add the remaining dataset relationships to the label. Generally, this will be a quantity that matches the maximum number of processing stations you will use when processing work orders for this label. In this tutorial, I processed with three stations, so I will add three relationships.
    1. Repeat steps 2a - 2k but name the relationships OptResStation2 through OptResStationX, where X is the total quantity of stations with which you are processing.
    2. The Child Columns you select should contain a number that corresponds to the number in the relationship name. For example, if the relationship name is OptResStation3, then select the Child Column linking field LinkIDStation3, where the three matches in both.
    3. Figure 13 shows the three completed dataset relationships. 

    4. Fig. 13 (Completed Dataset Relationships)

      Strictly speaking, you need to add only as many relationships as you have necessary different secondary processing station data. So, if you need only data from a single processing station, you need only a single dataset relationship. We recommend that to maximize label flexibility and support future customization of your label; you follow the general rule in step #2.
  5. Identify the text components in the label that must display the secondary station data.
  6. Determine which relationships you will be using in those component expressions.
    1. List the names of all the Processing Stations you used when processing the work order in step #2 above. Sort those names in ascending order and assign them an index number, 1 for the lowest, 2 for the next in the sort, and so on. For example, if you processed with the stations, you would assign them the following index numbers: IPP_Sample_HBORE = 1, IPP_Sample_NEST = 2, IPP_Sample_P2P = 3.
    2. Another way to determine the sort order of your processing stations is to display them in the program interface. The program list is sorted in ascending order by default. Click “Toolbox Setup -> Processing Station Setup” to see the list. The order of the processing stations from top to bottom in this list will be reflected in the dataset columns from left to right.
    3. Determine which of those stations contains the secondary data you need. Since in our tutorial we want to display the face 5 and face 6 point-to-point barcodes and file name on the associated nest label, we need to use the relationship with the index number for that station in the name (IPP_Sample_P2P = 3) which in the label is “OptResStation3.” Therefore, we will use an expression in the components selected in step #6, such as: {OptimizationResults.OptResStation3.Face5Barcode}  and {OptimizationResults.OptResStation3.Face5FileName}.

    4. Fig. 14 (Six Text Components to Modify)

  7. Modify the label text component expressions with data from the new relationships you just created.
    1. In the sample label, the first component is named “Text33.”
      1. Double click the component and modify the existing expression:
      2. {IIF(OptimizationResults.Parts.Barcode <> "",  Microvellum.Globalization.Culturestrings.FACE5FILENAME & ": ", "")}  
        To Read:
        {IIF(OptimizationResults.OptResStation3.Face5Barcode <> "",  Microvellum.Globalization.Culturestrings.FACE5FILENAME & ": ", "")}

        Fig. 15 (Modified Component Expression)

    2. In the sample label the first component is named “Text32.”
      1. Double click the component and modify the existing expression: 
      2. {IIF(OptimizationResults.Parts.Barcode <> "",  Parts.FileName, "")}  
        To read:
        {IIF(OptimizationResults.OptResStation3.Face5Barcode <> "",  OptimizationResults.OptResStation3.Face5FileName, "")}

        Fig. 16 (Modified Component Expression)

    3. In the sample label the first component is named “Text31.”
      1. Double click the component and modify the existing expression:
      2. {IIF(OptimizationResults.Parts.Barcode <> "",  "*%11" & OptimizationResults.Parts.FileName & " N*", "")}
        To read:
        {IIF(OptimizationResults.OptResStation3.Face5Barcode <> "",  "*%11" & OptimizationResults.OptResStation3.Face5FileName & " N*", "")} 
        Or alternatively:
        {OptimizationResults.OptResStation3.Face5Barcode}

        Fig. 17 (Modified Component Expression)

    4. Modify the remaining three text components in a similar way to look at: “OptimizationResults.OptResStation3.Face6Barcode” in the expression instead of: “OptimizationResults.OptResStation3.Face5Barcode.”
  8. Click the Preview tab and correct the cause of any errors displayed in the list.
  9. Verify that the secondary processing station data is displayed correctly. In this case, secondary data is P2P face 5 and face 6 barcode data, as you see in figure 18.

  10. Fig. 18 (Modified Rendered Report Showing Barcode Data)

This overview article and tutorials should give you the knowledge necessary to modify other reports and labels using the same principles.

You may also experience an issue where your edgeboring barcodes or file name locations do not match the part picture depicting the edgeboring. For more information about that issue and how to correct it, click here .  


    • Related Articles

    • Issue: Reports Do Not Display Correct Barcode Data in Version 15.6

      Symptom: Reports displaying barcode data from the Parts table are inconsistent or incorrect. This issue has a different cause than when a Part Label displays incorrect face 5 or face 6 barcode data. Click here for more information about that issue. ...
    • Issue: HBore Barcodes Do Not Match Part Picture

      As of build 15.6.2211, you now may use the simplified procedure found in the Microvellum Help Center article  Processing Station Associates for Reports (Overview)  to resolve this issue in addition to the procedure found in this article. Issue ...
    • Issue: No Horizontal Boring Barcode Information on Part Labels

      There are several requirements you must have correctly set to populate the work order database with horizontal boring (HBORE) barcode data. They are listed below with clarifying screenshots. Toolfile configured with the appropriate settings: Settings ...
    • Streamlined Label and Report Data Processing

      We have streamlined the way information for labels and reports is processed to improve accuracy and efficiency.  Part image rotation, filenames, barcodes, edge boring(Hbore), and edgebanding location data are all now accessed from ...
    • Processing Station Associates for Reports

      For information about setting up part transformation functions required for builds 15.6.2404 through 21.1.0604, see Configuring Part Transformation Functions (Legacy Support). This article contains a detailed reference for setting up and using the ...
    • Recent Articles

    • Toolbox Release Notes | Build 24.1.1105.641

      The following release notes apply to Toolbox build 24.1.1105.641 Nesting Fix Fig. 1: The fatal error that would occur during processing. There was reportedly an issue that occurred when clients attempted to process a work order using the nesting ...
    • Microvellum Foundation Library Release Notes | Build 24.1025

      The following release notes apply to Microvellum Foundation Library build 24.1025. Additions Added new global variable “Remove Stop Dado On Bottom Edge” for wood drawer boxes. Check this option to run the dado through at the bottom of the sub front ...
    • Toolbox Release Notes | Build 24.1.1030.641

      The following release notes apply to Toolbox build 24.1.1030.641 Routing and Profile Fixes Several issues were found with routing and polyline paths: Fig. 1: Horizontal routes off of a part disappearing (left) and appearing correctly (right). When ...
    • Toolbox Release Notes | Build 24.1.1010.641

      The following release notes apply to Toolbox build 24.1.1010.641 Biesse Winstore Fix Several issues with the Biesse Winstore plugin have been resolved: There was an issue that would sometimes occur wherein materials that were intended to stack wound ...
    • Toolbox Release Notes | Build 24.1.1001.641

      The following release notes apply to Toolbox build 24.1.1001.641 HBore Toolfile Fix Fig. 1: The location in the Toolfile UI where the error would occur. There was an issue reported with the functionality of the Horizontal Boring Machine setting in ...