If you use a Bound OLE Frame you can use JPEG (with Photo Editor) or bmp format, but either way this usually
involves storing uncompressed images in the database (Photo Editor stores them uncompressed, even if you
insert JPEG). Consequently the database swells rapidly towards the maximum Access file size. In a recent
test we loaded just 32 MB of fairly low-res JPEG’s this way (around 150 images) and that was enough to
hit the 2GB size limit. Even when Linking (which you might expect to only ‘Link’ to the file) the database
grew to 1300 MB.
You can display JPEG files directly in forms and reports by using the Access Image Control/Frame. This
does require just a few lines of code, but gives you virtually limitless capacity, and without storing
uncompressed images either in the database or on disk.
It is also possible to store compressed images in the database itself without the OLE problems and overhead,
but that either requires a lot of code (and a somewhat performance-sapping ‘read-from-database then save-to-temporary-file
then load-into-image-control routine) or 3rd party tools.
Therefore the best approach is probably the second option, i.e. displaying the JPEG image files directly
in the Access Image Control. You just need to have the filename stored in your table (or be able to generate
the filename from other fields).
The image control is not without its own drawbacks, and you’ll probably want to implement the registry
fix to prevent the ‘Loading Image’ dialog appearing between records (and the corresponding crash when you
scroll too quickly through records). To do this set the following registry keys:
HKEY_LOCAL_MACHINE\Software\Microsoft\ Shared Tools\Graphics Filters\Import\JPEG\Options
HKEY_CURRENT_USER\Software\Microsoft\ Shared Tools\Graphics Filters\Import\JPEG\Options
In both the above keys set the 'ShowProgressDialog' value to 'No', and note that the 'No' is case-sensitive.