Common  Dialogs

Posted on 1998-03-30
Last Modified: 2008-02-01
Chapter 19 of the Access 97 Developer's Handbook (by Litwin, Getz, and Gilbert) provides a very useful function called adhOfficeGetFileName along with a demostration form called frmOfficeFileOpen in ch19.mdb. There is one very desirable feature that I just can't seem to get to work. No matter what I do, adhcGfniNoChangeDir doesn't seem to have any effect one way or the other.

If my current directory is c:\abc and I call adhcOfficeGetFileName, I start looking in c:\abc as I expected. If I use adhOfficeGetFileName to "open" a file in c:\def, I want the next call to adhOfficeGetFileName to start looking in c:\def, and not stay in c:\abc. How can I get this function to "remember" the last directory used?

I also noticed that when I open ch19.mdb I get a message "This database is read only ..." How can I set one of my databases to be read only?

Question by:rmk
  • 5
  • 3
  • 2
LVL 12

Expert Comment

ID: 1972473
This could be solved by using a global variable. If you like you could send me an extract of your database including the functions, forms, tables etc. involved and I will be glad to have a look at it. EMail:

For your last question; There are several ways of doing this. For the ch19.mdb my guess is that this database has been copied from a CD onto your harddisk. All CD files are read only and will stay this way untill you change it. Locate your mdb file using the explorer and right click on it. Select properies and mark the Read-only attribute. Your users will of course be able to do the same trick in reverse, so if you want to secure your database in a more bulletproof manner you should have a look at the security wizard. I can also send you 3 files on Access security if you want, just provide me with your email address.

Expert Comment

ID: 1972474
1. There's a way to know the current directory in any drive. This is

  CurDir [Drive]

This give you the current dir.

2. The second way is to see that Trygve say (the properties of the file)

I hope this help you

LVL 12

Expert Comment

ID: 1972475
guillems: The problem is probably that locating files using these special functions does not change the current directory. It remaing c:\abc. An I must once again say that you are pushing it adding so little new information and calling it an answer. grrr.
Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.


Expert Comment

ID: 1972476
Excuse moi! Trygve! I just try to help. I don't think I doing anything wrong. I'm free to do that I want. So Please I think that you must say  pardon!

Have a nice day!

LVL 12

Expert Comment

ID: 1972477
rmk: I have tried to locate ch19.mdb on the net to examine it, but i can't find a copy. My offer to look at your application still stands.

guillems: If you got offended by my comment, then I appologize.
You have to admit though, that a five line answer to a 500 points questions seems a bit to easy. Especially when half the answer is a repetition of my comment.

Of course, you are free to do what you want, but this goes both ways. If you really feal that your answer qualifies as an answer, then please let me know, so I can adjust my personal opinion of what it takes to lock a question.

Have a pleasant day at E-E

Expert Comment

ID: 1972478
Sometimes the solution is simple, There's no problem with this. Just there are people who don't see the easy and beaty of the simple things.

Have a nice Day!

Author Comment

ID: 1972479
I guess I was mistakenly under the impression that all serious Access developer's were familiar with the "Access 97 Developer's Handbook". I would really appreciate some input from anywone who has used adhOfficeGetFileName.

LVL 12

Accepted Solution

Trygve earned 500 total points
ID: 1972480
I myself use books only for reference these days. In my shelf I have "Access 97 Power Programming", "Access and SQL Server" and "teach yourself Transact-SQL in 21 days".

I find answers to most of my questions using CDs from Microsofts Developer Network.

OK, I had a look at the function and there are several ways of doing this; Extending the type to include a LastDir property, using a globally defined gfni and what I did, using a globally defined LastDir variable. Here is the contents of my test module:

Option Compare Database
Option Explicit

' Set LastDir as a global variable
Global LastDir As String

Function TestGetFileName()

' From Access 97 Developer's Handbook
    ' by Litwin, Getz, and Gilbert (Sybex)
    ' Copyright 1997.  All rights reserved.
    Dim gfni As adh_accOfficeGetFileNameInfo
    With gfni
        .hwndOwner = Application.hWndAccessApp
        .strAppName = "Delete Extra HTML"
        .strDlgTitle = "Select an HTML File"
        .strOpenTitle = "Select"
        .strFile = ""
        ' Set the Last directory as initial directory for the file.
        .strInitialDir = Nz(LastDir)
        .strFilter = "HTML (*.html;*.htm)|HTM Files (*.htm)|HTX Files (*.htx)|All Files (*.*)"
        .lngFilterIndex = 1
        .lngView = adhcGfniViewList
        .lngFlags = adhcGfniNoChangeDir Or adhcGfniInitializeView
    End With
    If adhOfficeGetFileName(gfni, True) = adhcAccErrSuccess Then
        MsgBox "You chose: " & Trim(gfni.strFile), vbOKOnly, "Test Get File Name"
        ' Get the complete path to the selected file
        LastDir = gfni.strFile
        ' Remove one character at a time from the right till a \ is found
        Do Until Right(LastDir, 1) = "\"
            LastDir = Left(LastDir, Len(LastDir) - 1)
        ' Then remove the \
        LastDir = Left(LastDir, Len(LastDir) - 1)
        ' Show the directory path for the selected file.
        MsgBox ("The selection is located in " & LastDir)
    End If
End Function

This seemed to work perfectly in my test app. It will of cource reset itself every time you restart your app, but this is another problem that could also be solved by some ini-file programming or having a table with the users and their last selections in it.

Please let me know if you need more.


Author Comment

ID: 1972481
Thanks for your response.
LVL 12

Expert Comment

ID: 1972482
Hey rmk. Thanks for accepting my answer !

You should have a look at your customer information. It seems to me that you have posted an answer as your personal details.

Have a nice day !

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In a multiple monitor setup, if you don't want to use AutoCenter to position your popup forms, you have a problem: where will they appear?  Sometimes you may have an additional problem: where the devil did they go?  If you last had a popup form open…
It’s the first day of March, the weather is starting to warm up and the excitement of the upcoming St. Patrick’s Day holiday can be felt throughout the world.
Familiarize people with the process of utilizing SQL Server stored procedures from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Micr…
Familiarize people with the process of utilizing SQL Server functions from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Ac…

820 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question