Symptom:
Reports displaying barcode data from the Parts table are inconsistent or incorrect.
This article is about reports. If your problem is a part label showing a blank or wrong Face 5 or Face 6 barcode or filename, that has a different cause and a different fix - see Streamlined Label and Report Data Processing, which lists the current field name for every barcode, filename, edgebanding and edge-boring value, alongside the older part transformation function each one replaced.
Cause:
Build 15.6 contains an expanded ability to process with multiple single parts processing stations. One of the reasons for this is that a User may want to direct the parts to one of the several CNC machines to equalize the workload of those machines.
When processing with multiple single parts processing stations, previously, the program would populate the barcodes to 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. The Parts table design does not support optimized data produced by multiple stations.
Build 15.6 now makes it possible to obtain the correct barcode data in the report when using multiple stations but to support that change, the single parts barcode data is now populated to the OptimizationResults table instead of the Parts table.
Resolution:
Here is a tutorial for modifying the default “Parts Select Processing” report to consume the data populated to the new location. The procedure for custom reports will be similar, depending on the report structure.
Open Microvellum and click: “Microvellum Setup > Design Reports > Design Manufacturing Report > New Report From Existing” select the report to use as the template for the new report.
In the Report Setup screen, name the report as needed. Click the options button for “Microvellum Work Order” and make sure there is a checkmark next to OptimizationResults. Lastly, set the property “Is Batch Report” to True and click OK.
Add a database relationship with OptimizationResults as the child table, and Parts as the parent table.
Click the Dictionary tab in the lower right corner of the report designer.
Right-click the dataset table for OptimizationResults and click “New Relation.”
Enter the text string “Parts-OptimizationResults” as the property Name in Source.
Enter “Parts” as the property for Name and Alias.
Select “Parts” for the Parent DataSource property. The property for Child Data Source should already contain “OptimizationResults” if the steps above were correctly completed.
Double-click “LinkID” from the right column of Parent Columns and verify that it is correctly populated to the left side of that same section.
Double-click “LinkIDPart” from the right column of Child Columns and verify that it is correctly populated to the left side of that same section.
Verify that your screen matches Figure 3 below.
Modify the databand definition of the table Parts to be OptimizationResults.
Double-click the databand defined as Parts and click the tab Data Source.
Double-click the dataset table OptimizationResults.
Modify all text component expressions or data columns, databand group condition expressions or data columns, event code, and databand filter expressions to include the new relationship to OptimizationResults. See the examples below, contact Microvellum to arrange for Remote Services in making these modifications.
GroupHeader condition: {Parts.Name} Modify To: {OptimizationResults.Parts.Name}
Text component expression displaying cut part length: {IIF(Parts.AdjustedCutPartLength <> Nothing, MVValueFormat(Parts.AdjustedCutPartLength), MVValueFormat(Parts.CutPartLength))} Modify To: {IIF(OptimizationResults.Parts.AdjustedCutPartLength <> Nothing, MVValueFormat(OptimizationResults.Parts.AdjustedCutPartLength), MVValueFormat(OptimizationResults.Parts.CutPartLength))}
Master Cut Report GroupHeader2 BeforePrint event code: varQtyItemNumberString = Me.varQtyItemNumberString + " #" + Parts.Products.ItemNumber + "(" + (Totals.Sum(GroupHeader2, Parts.Quantity) * Parts.Products.Quantity).ToString + ")" Modify To: Me.varQtyItemNumberString = Me.varQtyItemNumberString + " #" + OptimizationResults.Parts.Products.ItemNumber + "(" + (Totals.Sum(GroupHeader2, OptimizationResults.Parts.Quantity) * OptimizationResults.Parts.Products.Quantity).ToString + ")"
Click the Preview tab. Evaluate “Warnings,” “Information Messages,” and “Report Rendering Messages” for significance and correct as necessary. Correct any “Errors!”
Save the report using the small Save button in the extreme upper left corner of the report designer.
Updated default reports may be downloaded from the Downloads area of the Microvellum Knowledge Base.
A note on older formulas
Formulas of the form MVFace5Barcode(...), MVFace6Barcode(...), MVFace5FileName(...) and MVFace6FileName(...) are part transformation functions and are no longer used. They were replaced by direct references to the OptimizationResults table - for example {OptimizationResults.Face6Barcode}.
Entering one of the older function names on a current build produces an "...is not declared" error in the report designer. That error means the formula is the old form. It does not mean your build is wrong, and it does not mean a newer function syntax is needed.
The same applies to references that include .Parts. in the path, such as {OptimizationResults.Parts.Face6Barcode}, when reading Face 5 and Face 6 filenames and barcodes on a part label. Those values are read directly from the OptimizationResults table.
The full replacement list is in Streamlined Label and Report Data Processing.
