Solved

Disconnect Access Users

Posted on 2000-04-04
7
615 Views
Last Modified: 2012-08-13
I have an aplication (written in VC++ 6.0) which will compact and repair Access databases.
I scheduled the app to run in the wee hours of the morning.
The problem is that users of the Access databases sometimes do not shut down their client apps and remain connected to the database.
No amount of pleading or threats seems to help!
Is there some way to programmatically disconnect users from an access database before attempting to repair or compact the database.
0
Comment
Question by:bharkness
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 

Expert Comment

by:OllyW
ID: 2684468
There is no built in way to disconnect an Access user because they are, after all just sharing a file. You force the file server to disconnect them from the pipe (using apis), but disconnection from an access database can have very nasty results if the user has a record open for update.

Another idea might be to make the Access application intellegent on each of the clients. Make a table in the database called 'Shutdown' or similar. When you want to shutdown the clients, use code to add a predefined message to the table. On the client database, open a hidden form when the application starts up (could use a AutoExec macro). On this form, set the timer to something like 10000 (10 minutes). On the on_timer event query the shutdown table. If the message is there, call a routine to shut the forms/database/Access. Keeping to polling interval large will cut down on unnessary network traffic.

You call even popup a countdown timer until shutdown, to warn the users to save work if you wanted to do it during the daytime.

I know this is not as nice as it could be on some database platforms, but hey, using the Access philosophy, 'It'll do'
0
 
LVL 1

Accepted Solution

by:
CLoprinzo earned 50 total points
ID: 2687175
Similarly to OllyW's answer, if you know that your users are not using the database after 12 AM then you can use the On Timer event to check the time.  If the time is between 12 and 12:30 AM tell the applcation to shutdown:

Private Sub Form_Timer()
    Dim x As String
    x = Time
    If x > "12:00:00 AM" And x < "12:30:00 AM" Then DoCmd.Quit
End Sub

Keep in mind that this will only work on forms that are open.  If the database is opened by bypassing the start menu or AutoExec then this will not work.  You can set the start options to prevent users from hitting F11, setting all forms to modal, removing "Allow Special Keys" and "Dsiplay Database window" from the startup, and by setting the ChangeProperty "AllowBypassKey" to False... this will disable the shift key bypass.  

Use this method with caution - if a user left a record open and you force it to close it can cause more problems than beating it into their heads to close when they are done.
0
 
LVL 9

Expert Comment

by:BrianWren
ID: 2865378
You say, "No amount of pleading or threats seems to help!"

Maybe you should stop threatening, and really beat them...

If you set the app to open a form and keep it hidden when the app is opened, you can use its timer event as others have suggested.  That would not rely on the user to have a certain form open, as it would always be open . . .

It would be nice to be able to use Windoze's timer event, but Access does not support callback functions...

Brian
0
MS Dynamics Made Instantly Simpler

Make Your Microsoft Dynamics Investment Count  & Drastically Decrease Training Time by Providing Intuitive Step-By-Step WalkThru Tutorials.

 
LVL 4

Expert Comment

by:ozphil
ID: 2895977
There is a .dll which enables one to identify users/machines connected to a database.

That could be the starting point point for providing some control over when to begin compact operations etc.

The dll is MSLDBUSR.DLL and is avaialable free from microsoft. It comes in a zipp file complete with a demo database application.
0
 
LVL 4

Expert Comment

by:ozphil
ID: 2902708
CLoprinzo

By posting an inconclusive answer you effectively 'hide' the question in the 'pending evaluation' section, which pisses the hell out of the questioner.

Let the questioner decide. It's  the courteous ethic here.
0
 

Author Comment

by:bharkness
ID: 2907798
Answer accepted
0
 
LVL 4

Expert Comment

by:ozphil
ID: 2909103
12:00AM to 12:30AM? Hey they're my standard working hours. lol.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
microsoft Access form help 5 17
SUBFORM on ACCESS 2013 8 35
Sharepoint list value updated via access or Excel 3 33
ISeries Remote Location Route entry 2 28
It’s been over a month into 2017, and there is already a sophisticated Gmail phishing email making it rounds. New techniques and tactics, have given hackers a way to authentically impersonate your contacts.How it Works The attack works by targeti…
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.
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

739 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