Is there a way to print a part Image on an SSRS Report.
Would like to show pictures of parts on quotes and sales orders.
I would guess that I could keep duplicates of the part pictures on the SSRS server and have the server reference the part images. However, that means keeping the Epicor DB and the SSRS Website in Sync.
Has anyone looked at this before? It seems like it would be a common request.
You can read the image table and use the ImageSysRowID to then join to Ice.FileStore, in your SSRS query, to pull back the content field to an image control
Mr. Dan: I am trying to write a BAQ for a BAQReport to show pictures of parts.
In the BAQ Designer - I am unable to add the ice.FileStore table. Is there a trick or security secret i can use to make that table visible.
I understand i could reference the table outside of Epicor - however, if i could keep it all in Epicor then I would not have to worry about referencing the pictures in the Live DB if i am running in Pilot.
With a BAQ Report you cannot pull in Ice.FileStore, so the only option is to go directly to the data from SSRS. Now this can be made easier to handle for pilot or live by how you get this data (placement of a view) but any way you do this they each have maintenance requirements. I typically will put a view in the Report database and then join to that. So Pilot would have a view named Image that pulls from Pilot DB and Live has a view named Image and that pulls from Live DB. The SQL query always pulls the same named view and it handles the different databases. Like I said - many ways to make this easier but all require proper maintenance.
Hello Dave, have you received a reply concerning pulling the FileStore.Content with the RDD? We’re looking to avoid direct db connections as well, for maintainability issues.
You can use an UBAQ Post Processing on GetList like this and you’ll get the image in your Calculated_Field then you can use that in SSRS to render the image.
Func ByteToString = (bytes) =>
{
return Convert.ToBase64String(bytes);
};
foreach(var y in ttResults)
{
var arr= (from x in Db.FileStore where x.FileName == y.Part_ImageID select x.Content).FirstOrDefault();
if(arr!=null)
y.Calculated_ImageStore = ByteToString(arr);
}
Got a response from Epicor - SaaS customers do not have a “non code” solution to this issue.
Looks like our options are: The Gomez Updatable BAQ solution, have some custom code written, or use a network share to point to individual MIME Type files and only store the image path.
Just to be clear: Multi-Tenant users cannot use code solutions, Public Cloud (aka Dedicated Tenant) or Single Tenant can use the code solution. MT users are SaaS customers but not all all SaaS Customers are MT.
MT cannot die fast enough. It’s not even on the Epicor Price list.