Adding Item Pictures to a Bill of Material Report

Here’s a step-by-step outline of how to add pictures of items to a Bill of Materials report with CCRQBOM. I will assume that you have SOME familiarity with editing reports in CCRQBOM.

Although QuickBooks Enterprise has a feature that lets you assign a picture to an inventory item, unfortunately they don’t let you USE that picture in ANY report. They also don’t let add-on developers (like CCRSoftware) access that data. So this is NOT going to be about using that feature in Enterprise.

We are going to assume that you have individual graphic files for each item, and that all of these are stored in one folder on your system.

To start, run CCRQBOM, then select Forms and then Bill of Material.

In the Edit Reports window select your form to work with (“Multi Level BOM” if this is the first time you’ve worked with a form) and click Edit. Note that there may be a delay before the editor opens – it starts up slowly sometimes.

The detail line band (“Detail1”) is where the BOM components are displayed, and this is set up to be an “array”. For this discussion, I want to insert the picture of the component as a column just after the “Description” column. Right-click on that column to get the popup menu, select Insert and then Column To Right.

Next, I want to increase the height of the detail line to allow space for the picture. Unfortunately, this sets aside that much space for each line no matter if there is going to be a picture or not. Select the table in this band, then go to Property Grid, expand the Size property, and change Height to be the size you want (I use 100 here).

Drag a Picture Box from the tool box and drop it on the column that you added to the Detail1 band.


Drag the corners of that picture box so that it fills the space in that column. Once you size it you can change the Anchor Vertically property of the picture box to “Both”, so that it will resize vertically if you change the height of the array later. There isn’t a way to bind the sides, just the top and bottom.

For this discussion, I have a folder in my system that contains the image files that I want to display for each item. These are JPG files, and they have a file name that matches the Item ID in QuickBooks. So, if the BOM says that it needs an item “Lens”, there is a file in this folder named “Lens.jpg”. All of the images are in the same location. In my test I’m using “C:\img”, which isn’t the best choice – you should try a location that is on a shared folder where all users can access it.




With that picture box selected, let’s go to the Property Grid and change several properties:

  • Change Sizing to be Zoom Image.
  • Expand Data Bindings (at the top of the property list), expand Image URL, click Binding and select the ItemID field. You must use the correct one – this will be found by expanding MasterData and then MasterDataAssyData, and selecting ItemID.  The most common error is not selecting the proper binding field, if the report doesn’t show the image.

  • Right under Binding, select Format String and enter this text string:   C:\img\{0}.jpg  The first part is the path to the folder for the images (remember the \ at the end of this), the last part is the file type to add on the end, and the middle is  {0} to represent the place that the ItemID will be inserted. If you happen to open the FormatString Editor for this, select a “General” format, have C:\img\ as the prefix, and .jpg as the suffix


Select File and then Save As, and give this report template a name. I’ll use “BOM WImage” for my example.

Close the editor, then exit Edit Reports.

Now let’s test this. Select BOM and select the assembly. Click the Display button, then in that window click the Print button. A Print Reports window will show, and your new template will be listed there. Click on the template name to select it, then click the Print button to preview the report.

Here’s my report. In this sample, only “Lens” had an image, the others didn’t.


There are other variations, but they are a bit more restricted. For example, if you don’t want to have the images all in one folder, you can put the path in a “custom field” for the item. Note that the path would be limited to 30 characters. You can also use a custom field for the picture name, if you don’t want to use the Item ID as the name.