Question

Save As Dialog Box Button

Asked by: studentdata

I need to have a button that opens a "Save As Dialog Box" that will convert image files (EX: jpg )to .bmp to insert into a Bound Object Frame ("OLEBound" is the name of the Bound Object Frame).  

 I have access linked to MySQL database and need to have the pictures saved into the database. Access only sees the BLOB data type as a OLE object.
PRECAUTIONS HAVE BEEN MADE SO THAT IT WILL PUT THE LEAST AMOUNT OF STRAIN ON THE DATABASE.

This code MUST adhere within these parameters-
*** THE PICTURES MUST BE SAVED IN THE DATABASE NOT ON THE COMPUTER IN A FOLDER. ***MUST BE SAVED AS .BMP FROM OTHER IMAGE FILES.

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-09-11 at 07:05:24ID24724555
Tags

Access 2007

,

Macro

,

VBA

,

Forms

Topics

Microsoft Access Database

,

Access Coding/Macros

,

Access Forms

Participating Experts
1
Points
500
Comments
27

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. JPG -> BMP
    I have my app to load some BMP's from resources . The problem is that BMP's are really large .. and my EXE is > 3MB . I wonder how could I load JPG and convert it to a HBITMAP or something .. Can anyone help me ? Thanks
  2. Convert a BMP to a JPG ?
    Hi, Im pulling images from a TWAIN device, which goes into a TBITMAP. I want to store this image into a database, but it needs to be in JPG format. Does anyone have a routine to convert between the two. Thanks !

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: thenelsonPosted on 2009-09-11 at 08:18:16ID: 25310420

An OLE object is not a BLOB and it is not a bmp file so what you plan will not work.  to save an image file in a MySQL backend and display it an Access frontend, you mist save it as a BLOB and use code (http://support.microsoft.com/?kbid=103257) or use an addin (http://www.ammara.com/articles/imagesaccess.html).  If you can afford buying the Ammara. software I would recommend that approach.

 You con also store the images outside of the database - see   www.thenelson.name/#LinkedImagesDemo for a sample of that.

 

by: studentdataPosted on 2009-09-11 at 08:36:39ID: 25310607

An OLE object is a general object type in access like the BLOB in MySQL, but I AM USING IT ONLY FOR BMP. IT DOES WORK when inserting and viewing from the database. I have loaded jpg and bmp into the database from Access ***** IT DOES WORK****
What I am needing Access to do is give a preview of the image in the bound object frame which the frame will only do with a .bmp file.  It only displays an icon for all other image files types.

**** IT WORKS. I CAN INSERT PICTURES JUST FINE. I NEED TO CHANGE THE FORMAT FOR DISPLAY PURPOSES. PLEASE STOP ADDRESSING THE RAMIFCATIONS OF USING BLOBS IN DATABASE AND WHEITHER OR NOT IT WILL WORK. IT CLEARLY WORKS.****

***** AGAIN THE IMAGES MUST BE SAVED IN MYSQL . IT IS A VERY VERY BIG REQUIREMENT **********

All I need is the code for a button to produce a save dialog box that will  force save any image type selected  as .bmp to the bound image frame.

 

by: studentdataPosted on 2009-09-11 at 08:41:56ID: 25310653

Just to help be clearer than I already am being, I am using Access 2007.

 

by: thenelsonPosted on 2009-09-11 at 08:53:39ID: 25310758

Use the file dialog to pass the path and file name to shell to irfanview  (http://www.irfanview.com/) to do the conversion.

Dim dlgSaveAs As FileDialog

Set dlgSaveAs = Application.FileDialog(FileDialogType:=msoFileDialogSaveAs)
dlgSaveAs.Show

Shell "i_view32.exe " & dlgSaveAs & " /convert=" & Left(dlgSaveAs, Len(dlgSaveAs) -3 & "bmp"

 

by: thenelsonPosted on 2009-09-11 at 09:03:53ID: 25310856

The code in the last post is incorrect should be:

Dim strPathFileName As String
With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = False
    .Filters.Clear
    .Filters.Add "Access Files", "*.mdb", 1
    .Filters.Add "All", "*.*", 2
    If .Show Then
        Shell "i_view32.exe " & .SelectedItems(1) & " /convert=" & Left(.SelectedItems(1), Len(.SelectedItems(1)) -3 & "bmp"
    Else
        MsgBox "No file selected!"
    End If
End With


 

by: studentdataPosted on 2009-09-11 at 09:39:31ID: 25311210

When I place this code into the click handler for the button it is getting a compile error: "Expected list separator or )" on the shell command

As well: Where in the code would we link the picture being saved into the bound object frame called OLEBound?

Thank you for your patience.

 

by: studentdataPosted on 2009-09-11 at 12:18:25ID: 25312619

Here is a screen shot of the error, I don't know if this will help...

 

by: studentdataPosted on 2009-09-11 at 20:46:00ID: 25314990

Well I've been messing around with the code and below is what I have so far. I seem to be making some progress but I'm not the expert. Now I'm getting the following error with the new code:

Run-time error '-2147467259 (80004005)':
Method 'FileDialog' of object'_Application' failed

Option Compare Database
Private Sub Command13_Click()
Dim strPathFileName As String
With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = False
    .Filters.Clear
    .Filters.Add "Access Files", "*.mdb", 1
    .Filters.Add "All", "*.*", 2
    If .Show Then
        Shell "C:\Program Files (x86)\IrfanView\i_view32.exe" & .SelectedItems(1) & " /convert=" & Left(.SelectedItems(1), Len(.SelectedItems(1)) - 3 & ".bmp")
        OLEBound.Object = .SelectedItems(1)
    Else
        MsgBox "No file selected!"
    End If
End With
End Sub
                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:

Select allOpen in new window

 

by: studentdataPosted on 2009-09-12 at 07:26:54ID: 25316611

The compiler is highlighting line 4:

With Application.FileDialog(msoFileDialogOpen)

 

by: thenelsonPosted on 2009-09-12 at 08:55:30ID: 25316897

Private Sub Command13_Click()
Dim strPathFileName As String
With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = False
    .Filters.Clear
    .Filters.Add "jpeg Files", "*.jpg", 1
    .Filters.Add "All", "*.*", 2
    If .Show Then
        Shell "C:\Program Files (x86)\IrfanView\i_view32.exe """ & .SelectedItems(1) & """ /clipcopy /killmesoftly"
        DoEvents
        OLEBound.SetFocus
        RunCommand acCmdPaste
    Else
        MsgBox "No file selected!"
    End If
End With
End Sub


Some points:
THE ABOVE CODE WILL STORE DATA AS AN OLE OBJECT! If you don't believe it check the backend size before and after running the code. You will see the backend grow a few megabytes.

No need to convert jpg or other image files to bmp.  Any image that Irfranview supports will work.  The clipboard takes care of any conversion needed since it copies to a universal windows image mode.



 

by: thenelsonPosted on 2009-09-12 at 09:22:50ID: 25316970

To save images to your MySQL backend truly using BLOBS without bloat see:
http://www.lebans.com/loadsavejpeg.htm

 

by: studentdataPosted on 2009-09-12 at 09:28:52ID: 25316983

I used the code you gave me just now and when I run the form then click the button, it does nothing. Did I miss something?

 

by: studentdataPosted on 2009-09-12 at 10:35:47ID: 25317209

Wait, I got the same Run Time Error as before
 
AND it is still highlighting line 3 as before: With Application.FileDialog(msoFileDialogOpen)
 
Private Sub Command13_Click()
Dim strPathFileName As String
With Application.FileDialog(msoFileDialogOpen)      
    .AllowMultiSelect = False
    .Filters.Clear
    .Filters.Add "jpeg Files", "*.jpg", 1
    .Filters.Add "All", "*.*", 2
    If .Show Then
        Shell "C:\Program Files (x86)\IrfanView\i_view32.exe """ & .SelectedItems(1) & """ /clipcopy /killmesoftly"
        DoEvents
        OLEBound.SetFocus
        RunCommand acCmdPaste
    Else
        MsgBox "No file selected!"
    End If
End With
End Sub

 

by: thenelsonPosted on 2009-09-12 at 14:27:55ID: 25317955

It requires a reference to Microsoft office 11.0 Object Library (VBE , Tools, References).

I have uploaded a sample of this at  www.thenelson.name/#LinkedImagesDemo

 

by: studentdataPosted on 2009-09-14 at 09:04:54ID: 31627573

Thank you for your patientence! You really helped out alot!

 

by: thenelsonPosted on 2009-09-14 at 12:23:09ID: 25328432

You're welcome.  Glad to help and thank you very much for the points with "A" grade!

Happy computing!

Nelson

 

by: studentdataPosted on 2009-09-14 at 12:48:14ID: 25328639

With your example we are having issues when we apply your method to our form. I adopted the button with the save dialog box  when I select the file it gives me the following error:
Error: 2465: Microsoft Office Access can't find the field '|' referred to in your expression

Any ideas on how to solve this problem?

 

by: thenelsonPosted on 2009-09-14 at 14:32:00ID: 25329544

Place  this line
Debug.Print .SelectedItems(1), "C:\Program Files (x86)\IrfanView\i_view32.exe """ & .SelectedItems(1) & """ /clipcopy /killmesoftly"
in front of the line
Shell "C:\Program Files (x86)\IrfanView\i_view32.exe """ & .SelectedItems(1) & """ /clipcopy /killmesoftly"
and post what returns in the immediate window.

 

by: studentdataPosted on 2009-09-14 at 19:55:46ID: 25331341

before I do that, I'm not entirely certain about the Microsoft office 11.0 Object Library you told me to reference from your sample. Could you explain in detail how to set that up?

I'm still getting the same Run Time errors as before.

Thanks!

 

by: studentdataPosted on 2009-09-14 at 20:22:09ID: 25331439

Also, I'm using Access 2007 with Microsoft office 12.0 Object Library. Will that also cause problems?

 

by: thenelsonPosted on 2009-09-14 at 22:33:37ID: 25331963

Microsoft office 12.0 Object Library is fine

 

by: studentdataPosted on 2009-09-15 at 05:53:33ID: 25334298

Thanks again for your help. I'll try to figure this out on my own.

 

by: thenelsonPosted on 2009-09-15 at 07:59:50ID: 25335618

Try posting your database and I will look at it. To make it as small as possible and remove all sensitive material, do this:
1. Make a copy of your db.
2. Remove all tables, queries, forms, pages and reports that have nothing to do with the problem.
3. Delete all but 6-12 records in the remaining tables - use shift / Mouse select to select huge blocks of records, then delete.
4. Import all linked tables so that everything is in the one database
5. Compact and repair
6. Move the database to a different folder to make sure it still runs showing the problem
7. Zip (optional) and attach to a message.

I don't have A 2007, so you will need to save the database within Access as a mdb file instead of an AccDB file.

 

by: studentdataPosted on 2009-09-15 at 15:10:06ID: 25340137

Just so you know, ALL your advice has worked with normal Access Tables. As soon as I try it with linked MySQL Tables, it just does not work properly. Should I start looking into Macros? Can you record to a Macro like you can in MS Word?

Thanks again!

 

by: thenelsonPosted on 2009-09-15 at 17:10:03ID: 25340771

<Can you record to a Macro like you can in MS Word?>
no

<Should I start looking into Macros?>
Macros are far less capable than VBA.

<ALL your advice has worked with normal Access Tables. As soon as I try it with linked MySQL Tables,>
Not surprising since a bound OLE Frame is designed to work with an OLE field which mySQL does not support.  I bet you will need to use a blob scheme like www.lebans.com/loadsavejpeg.htm  or www.ammara.com/  

 

by: studentdataPosted on 2009-09-15 at 20:28:11ID: 25341596

I did use that example, however when I acctually connect it to an Identical MySQL table I get an "ODBC insert failed" error. Oh well, I'm throwing in the towel on this. I'll have to follow your linked images example and save images to a folder next to the MySQL server. By the way, do you know anything about the Attachments data type? I was playing around with it and liked the features but noticed that It saves files in a folder deep in windows, can you change the default folder for the Attachments Data Type to another location of your choosing?

Again, many thanks for your help! I need to find a way to get you like 1,000,000 points for helping me.

 

by: thenelsonPosted on 2009-09-16 at 08:29:24ID: 25346688

The linked image demo saves the images in the same folder as the database (CurrentProject.Path).  CurrentProject.Path returns the folder where the data is stored so it returns the folder of the backend (your MySQL database in your case).

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...