efrimpol
asked on
Compact Access Database Via Batch File (Database uses MDW File)
OK, here goes.
I have created the On Timer Event that will close any open databases at 8:30 PM. This works great.
I have batch files that will compact these databases at 8:35 PM.
Contents of batch file:
"C:\Program Files\Microsoft Office\Office\MSAccess.exe " "\\targetserver\databases\ database.m db" /compact "\targetserver\databases\n ewdatabase .mdb"
Then I just delete the old database and rename the new database to the old.
My problem is that I have one database that uses an *.mdw file.
Normally, the end user clicks on a shortcut on their desktop to access the database and is prompted for credentials.
Contents of shortcut:
"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE " "\\targetserver\databases\ database.m db" /wrkgrp "\\targetserver\databases\ mdwfile.md w"
When I try to run the batch file to compact the database, I get "Database In Use" error.
Do I need to login to compact? I tried changing script to included login credentials, but this will only open the database.
Any help would be appreciative.
I have created the On Timer Event that will close any open databases at 8:30 PM. This works great.
I have batch files that will compact these databases at 8:35 PM.
Contents of batch file:
"C:\Program Files\Microsoft Office\Office\MSAccess.exe
Then I just delete the old database and rename the new database to the old.
My problem is that I have one database that uses an *.mdw file.
Normally, the end user clicks on a shortcut on their desktop to access the database and is prompted for credentials.
Contents of shortcut:
"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE
When I try to run the batch file to compact the database, I get "Database In Use" error.
Do I need to login to compact? I tried changing script to included login credentials, but this will only open the database.
Any help would be appreciative.
ASKER
Was able to solve before I read your reply.
Here is the solution:
"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE " "\\targetserver\databases\ database.m db" /wrkgrp "\\targetserver\databases\ mdwfile.md w" /user="user" /pwd="password" /compact "\\targetserver\databases\ compactedd atabase.md b"
As far as open database issue, I have inserted this event on the form that first opens when the database is opened. This is located in the OnTimer Event. I sent the timer to 55000, or 55 seconds:
Dim locTime As String
Dim locTime2 As String
Dim locA As Long
locTime = Time
locTime2 = locTime
locA = InStr(locTime, " ")
Mid(locTime2, locA - 2, 2) = "00"
locTime2 = Trim(locTime2)
If locTime2 = "8:00:00 PM" Then
Application.Quit
End If
The compact will run at 8:15 PM (just to be on the safe side).
The combination will close any open databases, then compact those databases. I just have to write the batch file to copy the old databases to a different location, then rename the compacted databases to the old name.
Can't wait to see how it runs.
By the way, because I am compacting multiple databases, I created a batch files that calls all the other compact batch files. This is the file that I schedule.
Batch file scheduled contents.
VER | TIME > c:\start.txt
call c:\runcompact1.bat
call c:\runcompact2.bat
.
.
VER | TIME > c:\end.txt
This will create the start and end text files that give me that start and ending times.
Cool, huh?
You're welcomed to the 40 points just for replying. How do I award them?
Here is the solution:
"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE
As far as open database issue, I have inserted this event on the form that first opens when the database is opened. This is located in the OnTimer Event. I sent the timer to 55000, or 55 seconds:
Dim locTime As String
Dim locTime2 As String
Dim locA As Long
locTime = Time
locTime2 = locTime
locA = InStr(locTime, " ")
Mid(locTime2, locA - 2, 2) = "00"
locTime2 = Trim(locTime2)
If locTime2 = "8:00:00 PM" Then
Application.Quit
End If
The compact will run at 8:15 PM (just to be on the safe side).
The combination will close any open databases, then compact those databases. I just have to write the batch file to copy the old databases to a different location, then rename the compacted databases to the old name.
Can't wait to see how it runs.
By the way, because I am compacting multiple databases, I created a batch files that calls all the other compact batch files. This is the file that I schedule.
Batch file scheduled contents.
VER | TIME > c:\start.txt
call c:\runcompact1.bat
call c:\runcompact2.bat
.
.
VER | TIME > c:\end.txt
This will create the start and end text files that give me that start and ending times.
Cool, huh?
You're welcomed to the 40 points just for replying. How do I award them?
ok to close
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
You can try altering the command line to use a default user/pass:
"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE