Автор - Анатолий (Киев)
Вопрос: Scripting / Wscript: пример перезагрузки БД в текущем окне или замены на другую БД.
Совет:
Предлагаю простой пример перезагрузки БД в текущем окне или замены на другую БД.
Кто пробовал, знает, что процедурой в текущей БД это сделать нельзя.
Методы Application.CloseCurrentDatabase, Application.OpenCurrentDatabase
DBNew должны выполняться внешним приложением.
Предлагаемый вариант использует механизм "Windows Scripting Host" (WSH), который есть почти на всех весиях Windows.
Создается простенький скрипт, сохраняется в TEMP папке и запускается на выполнение. Если DBNew пуст - перезагружается текущая БД.
Повторный вызов функции перезаписывает файл.
Sub ReopenDB(Optional ByVal DBNew As String)
Dim strExpr As String, strTempFile As String, hFile As Integer
Dim WshShl
If Len(DBNew) = 0 Then DBNew = CurrentDb.Name
strExpr = "Dim AccApp" & vbCrLf _
& "Set AccApp = GetObject(""" & CurrentDb.Name & """)" & vbCrLf _
& "WScript.Sleep 500" & vbCrLf _
& "AccApp.CloseCurrentDatabase" & vbCrLf _
& "AccApp.OpenCurrentDatabase """ & DBNew & """"
Set WshShl = CreateObject("WScript.Shell")
strTempFile = WshShl.ExpandEnvironmentStrings("%TEMP%")
strTempFile = strTempFile & "\RestartDB.vbs"
hFile = FreeFile
Open strTempFile For Output Access Write As hFile
Print #hFile, strExpr
Close hFile
WshShl.Run """" & strTempFile & """"
End Sub |
|