We help IT Professionals succeed at work.

How to open a Access Database MDB file in Runtime mode though VBA code of another MDB

6,625 Views
Last Modified: 2013-12-20
Hi,

I am trying to open another MDE file in RUNTIME mode though the code of a button of another MDE running in RUNTIME mode.

I have tried opening with a command line string that works when used in the windows run command to open a MDE in runtime but as soon as I try to use it in the code it will not work.

What I have done is as follows:

    Dim stAppName As String

    stAppName = "c:\program files\microsoft office\office11\msaccess.exe /runtime C:\Program Files\Installer.mdb"
    Call Shell(stAppName, 1)

When the button is clicked it opens Access but then stops and comes up with the error

"Cant find the database file C:\Program.mdb"

so it is not picking up the rest of the command line after c:\program!

I then found the following code to create a module to access files directly as follows:

Option Compare Database

' ************ Code Start **********
' This code was originally written by Dev Ashish.
' It is not to be altered or distributed,
' except as part of an application.
' You are free to use it in any application,
' provided the copyright notice is left unchanged.
'
' Code Courtesy of
' Dev Ashish
'
Private Declare Function apiShellExecute Lib "shell32.dll" _
    Alias "ShellExecuteA" _
    (ByVal hwnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) _
    As Long

'***App Window Constants***
Public Const WIN_NORMAL = 1         'Open Normal
Public Const WIN_MAX = 3            'Open Maximized
Public Const WIN_MIN = 2            'Open Minimized

'***Error Codes***
Private Const ERROR_SUCCESS = 32&
Private Const ERROR_NO_ASSOC = 31&
Private Const ERROR_OUT_OF_MEM = 0&
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&

'***************Usage Examples***********************
'Open a folder:     ?fHandleFile("C:\TEMP\",WIN_NORMAL)
'Call Email app:    ?fHandleFile("mailto:dash10@hotmail.com",WIN_NORMAL)
'Open URL:          ?fHandleFile("http://home.att.net/~dashish", WIN_NORMAL)
'Handle Unknown extensions (call Open With Dialog):
'                   ?fHandleFile("C:\TEMP\TestThis",Win_Normal)
'Start Access instance:
'                   ?fHandleFile("I:\mdbs\CodeNStuff.mdb", Win_NORMAL)
'****************************************************

Function fHandleFile(stFile As String, lShowHow As Long)
Dim lRet As Long, varTaskID As Variant
Dim stRet As String
    'First try ShellExecute
    lRet = apiShellExecute(hWndAccessApp, vbNullString, _
            stFile, vbNullString, vbNullString, lShowHow)
           
    If lRet > ERROR_SUCCESS Then
        stRet = vbNullString
        lRet = -1
    Else
        Select Case lRet
            Case ERROR_NO_ASSOC:
                'Try the OpenWith dialog
                varTaskID = Shell("rundll32.exe shell32.dll,OpenAs_RunDLL " _
                        & stFile, WIN_NORMAL)
                lRet = (varTaskID <> 0)
            Case ERROR_OUT_OF_MEM:
                stRet = "Error: Out of Memory/Resources. Couldn't Execute!"
            Case ERROR_FILE_NOT_FOUND:
                stRet = "Error: File not found.  Couldn't Execute!"
            Case ERROR_PATH_NOT_FOUND:
                stRet = "Error: Path not found. Couldn't Execute!"
            Case ERROR_BAD_FORMAT:
                stRet = "Error:  Bad File Format. Couldn't Execute!"
            Case Else:
        End Select
    End If
    fHandleFile = lRet & _
                IIf(stRet = "", vbNullString, ", " & stRet)
End Function
'************ Code End **********

I put the following line of code in the button to try to open the database but nothing at all happened when I clicked the button:

fHandleFile "c:\program files\microsoft office\office11\msaccess.exe /runtime C:\Program Files\OzSafe Development\Installer.mdb", WIN_NORMAL

The only way I could get a response was the following line of code:

fHandleFile "C:\Program Files\OzSafe Development\Installer.mdb", WIN_NORMAL

But this opens the file as a normal MDE and not in RUNTIME mode.

Any suggestions or a new method of doing this would be welcomed!

All I need to do is open an MDE in RUNTIME mode though code.
Comment
Watch Question

Dim prog
   
Set prog = CreateObject("WScript.Shell")
   
prog.CurrentDirectory = "C:\Folder"

prog.Run "db.mdb"
Senior SAP CRM Consultant
CERTIFIED EXPERT
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION

Author

Commented:
gbshahaq you are a flippin' legend! Thanks for picking up on that it worked great!!!

Sham HaqueSenior SAP CRM Consultant
CERTIFIED EXPERT

Commented:
legend? not sure about that...
i do recall struggling with this issue a long time ago, and remembered how i solved it. stupid spaces in file paths....

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.