469,271 Members | 1,731 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,271 developers. It's quick & easy.

Common Dialog in Access 2000

What is the best way to get a Common Dialog in Access 2000 Standard Edition?

Microsoft suggests this:

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

(See: http://support.microsoft.com/default...b;en-us;303066)

In Access 2003 I was using this:

Private Sub Browse(strTag As String)
Dim dDialog As Office.FileDialog
Dim varDir As Variant
Set dDialog = Application.FileDialog(msoFileDialogFolderPicker)
dDialog.AllowMultiSelect = False
dDialog.Title = " Select Directory"
If dDialog.Show = True Then
For Each varDir In dDialog.SelectedItems
Me!txtPath = varDir
Next
End If
End Sub

Do I need MS's private function?

Thanks in advance.
Nov 13 '05 #1
8 8871
You will also find an example for that here:
http://www.mvps.org/access/api/api0001.htm

The advantage of the longer method is that it calls the Windows API and so
should always work. Calling the Office Dialog could cause a problem if you
have mixed versions of Office. As you may have noticed, in order to get the
Office Dialog to work you had to set a reference to "Microsoft Office 11.0
Object Library". This is version specific. Moving up a version usually isn't
a problem, but if you try to open your file on an older version of Access
that supports your file format, this is likely to break and you'll have to
go into the references dialog to manually set it to the older library. Also,
if you are creating MDE files, you'll have to reset this for the version of
Access the MDE is going to be created in, before creating the MDE. This is
one of the reasons and MDE has to be created on the same version of Access
that it is going to be run on.

--
Wayne Morgan
MS Access MVP
"deko" <de**@hotmail.com> wrote in message
news:9P*****************@newssvr21.news.prodigy.co m...
What is the best way to get a Common Dialog in Access 2000 Standard
Edition?

Microsoft suggests this:

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

(See: http://support.microsoft.com/default...b;en-us;303066)

In Access 2003 I was using this:

Private Sub Browse(strTag As String)
Dim dDialog As Office.FileDialog
Dim varDir As Variant
Set dDialog = Application.FileDialog(msoFileDialogFolderPicker)
dDialog.AllowMultiSelect = False
dDialog.Title = " Select Directory"
If dDialog.Show = True Then
For Each varDir In dDialog.SelectedItems
Me!txtPath = varDir
Next
End If
End Sub

Do I need MS's private function?

Thanks in advance.

Nov 13 '05 #2
DFS
Wayne Morgan wrote:
You will also find an example for that here:
http://www.mvps.org/access/api/api0001.htm

The advantage of the longer method is that it calls the Windows API
and so should always work. Calling the Office Dialog could cause a
problem if you have mixed versions of Office. As you may have
noticed, in order to get the Office Dialog to work you had to set a
reference to "Microsoft Office 11.0 Object Library". This is version
specific. Moving up a version usually isn't a problem, but if you try
to open your file on an older version of Access that supports your
file format, this is likely to break and you'll have to go into the
references dialog to manually set it to the older library. Also, if
you are creating MDE files, you'll have to reset this for the version
of Access the MDE is going to be created in, before creating the MDE. This is one of the reasons and MDE has to be created on the same
version of Access that it is going to be run on.
Doesn't have to be. I created and delivered an Access 2000 .mde that ran
fine on Access 2003 when my clients upgraded.

"deko" <de**@hotmail.com> wrote in message
news:9P*****************@newssvr21.news.prodigy.co m...
What is the best way to get a Common Dialog in Access 2000 Standard
Edition?

Microsoft suggests this:

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

(See: http://support.microsoft.com/default...b;en-us;303066)

In Access 2003 I was using this:

Private Sub Browse(strTag As String)
Dim dDialog As Office.FileDialog
Dim varDir As Variant
Set dDialog = Application.FileDialog(msoFileDialogFolderPicker)
dDialog.AllowMultiSelect = False
dDialog.Title = " Select Directory"
If dDialog.Show = True Then
For Each varDir In dDialog.SelectedItems
Me!txtPath = varDir
Next
End If
End Sub

Do I need MS's private function?

Thanks in advance.

Nov 13 '05 #3
Wayne Morgan wrote:
You will also find an example for that here:
http://www.mvps.org/access/api/api0001.htm

The advantage of the longer method is that it calls the Windows API and so
should always work.


Indeed it does. I used the above code in Access 97 and it ported to
Access 2003 with no difficulty whatsoever, no changes or tweaking required.
--
Tim http://www.ucs.mun.ca/~tmarshal/
^o<
/#) "Burp-beep, burp-beep, burp-beep?" - Quaker Jake
/^^ "What's UP, Dittoooooo?" - Ditto
Nov 13 '05 #4
Thanks, again though you were moving up to a newer version. Also, were you
using the runtime version of Access or the full version on the clients'
machines?

--
Wayne Morgan
MS Access MVP
"DFS" <no****@DFS.com> wrote in message
news:ap******************@fe02.lga...

Doesn't have to be. I created and delivered an Access 2000 .mde that ran
fine on Access 2003 when my clients upgraded.

Nov 13 '05 #5
DFS
Wayne Morgan wrote:
Thanks, again though you were moving up to a newer version. Also,
were you using the runtime version of Access or the full version on
the clients' machines?
Full version. In fact, I believe the default file format is Access 2000
when Access 2003 is installed. I know I've seen that on several machines.
Maybe that's only upgrades?



"DFS" <no****@DFS.com> wrote in message
news:ap******************@fe02.lga...

Doesn't have to be. I created and delivered an Access 2000 .mde
that ran fine on Access 2003 when my clients upgraded.

Nov 13 '05 #6
> The advantage of the longer method is that it calls the Windows API and so
should always work. Calling the Office Dialog could cause a problem if you
have mixed versions of Office. As you may have noticed, in order to get the Office Dialog to work you had to set a reference to "Microsoft Office 11.0
Object Library". This is version specific. Moving up a version usually isn't a problem, but if you try to open your file on an older version of Access
that supports your file format, this is likely to break and you'll have to
go into the references dialog to manually set it to the older library. Also, if you are creating MDE files, you'll have to reset this for the version of Access the MDE is going to be created in, before creating the MDE. This is
one of the reasons and MDE has to be created on the same version of Access
that it is going to be run on.


I think the Office Dialog is clearly better. Sort of like .NET - if MS
wants to abstract the API and make it easier for me, great. The more
productive and less arcane this business is the happier I am. But from a
manager's perspective, the API is clearly a better solution. I guess it
depends on how much control you have over your environment (which is usually
not much).

As an aside, you mention that "Moving up a version usually isn't a
problem..." I assume this the case for other references as well - e.g.
Excel, Internet Controls, Scripting Runtime. I'm thinking about my early
bound automation code and know from experience the unpredictable results
caused by broken references.
Nov 13 '05 #7
You're correct about the default file version, it is the 2000 file version
for Access 2000, 2002, and 2003. I believe that the problem comes in with
the "Microsoft Access x.x Object Library" and the runtime version. The
runtime is more restrictive in what it will let you do and I suspect that it
won't let the object library reference upgrade itself. I would have to
reinstall the older version to test this though. It should be testable by
creating and MDE in Access 2000 and opening it with Access 2003 using the
/runtime switch.

--
Wayne Morgan
MS Access MVP
"DFS" <no****@DFS.com> wrote in message
news:52******************@fe02.lga...

Full version. In fact, I believe the default file format is Access 2000
when Access 2003 is installed. I know I've seen that on several machines.
Maybe that's only upgrades?

Nov 13 '05 #8
Yes, I've run across this with Excel also. I can take a '97 Excel spread
sheet to a machine with Excel 2003 installed. If I open the spreadsheet on
that machine then take it back to the machine with Excel 97, the code will
error out until I reset the object libraries to the '97 versions. The DAO
library usually stays put (the newer machine has the old library available),
it's the Excel library that is usually the problem.

--
Wayne Morgan
MS Access MVP
"deko" <de**@hotmail.com> wrote in message
news:1R*****************@newssvr21.news.prodigy.co m...

As an aside, you mention that "Moving up a version usually isn't a
problem..." I assume this the case for other references as well - e.g.
Excel, Internet Controls, Scripting Runtime. I'm thinking about my early
bound automation code and know from experience the unpredictable results
caused by broken references.

Nov 13 '05 #9

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by Gord | last post: by
3 posts views Thread by Stephen Bishop | last post: by
8 posts views Thread by deko | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by zhoujie | last post: by
reply views Thread by suresh191 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.