Search code examples
vb.netactivereports

ActiveReports not allowing overwrite of jpg after report generation. Windows. VB.NET


Currently, I am utilizing ActiveReports to implement a dynamic image via pathname into a report that is generating.

The Images are being automatically generated as .jpg to a server folder. The Active Reports module imports the files using this code.

Sub ActiveReport_ReportStart

    Picture1.Image = System.Drawing.Image.FromFile("path\filename.jpg")

End Sub

The problem I am running into is that this report locks out the jpgs from being overwritten.

I am unsure what could be going wrong, but it seems that the report is still using the image files after the report has been generated.

Am I missing a "disconnect" code piece to ensure that an import doesn't allow for continued contact to the file?

I apologize if this is simple, but I can't find anything for this specific instance.

Thank you.

EDIT:

I attempted to get around the lockout by copying them into their own variable. But this didn't work either.

Sub ActiveReport_ReportStart

dim TempImage as Image = Image.FromFile("path\filename")
Picture1.Image = TempImage
End Sub

Solution

  • I was able to get this to work by creating a function that used the Graphics.FromImage method and disposed the original file.

    Public Function GetImageFile(ByVal pathfn As String) As Image
        Dim tempImg As Image = Image.FromFile(pathfn)
        Dim tempBtm As New Bitmap(Width:=img.Width*CorrectFactor, Height:=img.Height*CorrectFactor, Format:=tempImg.PixelFormat)
            Using g As Graphics = Graphics.FromImage(bm)
                g.DrawImage(tempImg, Point.Empty)
            End Using
        tempImg.Dispose()
        Return tempBtm  
    End Function
    

    The item that would be placed in the report would be as follows.

    Sub ActiveReport_ReportStart
        Picture1.Image = GetImageFile("Path\Filename")
    End Sub