powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выполнение кода после закрытия базы?
16 сообщений из 16, страница 1 из 1
Выполнение кода после закрытия базы?
    #32547836
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача такая: если в каталоге есть самораспаковывающийся exe-шник (в котором новая база), нужно закрыть базу и ПОСЛЕ запустить этот SFX - архив.

Как только закрываю текущую базу, выполнение кода останавливается. :(

Почему я решил, что будет иначе? В VBA Excel-я такая тема прокатывает.

Люди, если в пределах Access эту задачу не решить, то подскажите хоть как можно сделать паузу на 3-5сек. в системе (Буду запускать, скажем, bat-файл, в котором ??? выдерживается пауза, после чего запускается exe.)

Скажите - реально ли это сделать в ACCESS?
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32547860
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкак можно сделать паузу на 3-5сек
пиши vbs

авторСкажите - реально ли это сделать в ACCESS?
Задача (ИМХО) не Асовская, так зачем ее пытаться Аксом решить?

Хочешь Аксом - вот тебе идея:
1. Из Акс1 открываешь Акс2 (которого нет в архиве - он управляющий, не изменяющийся)
2. Закрываешь Акс1
3. В Акс2 открывается форма при старте на которой настроен таймер
4. По срабатыванию таймера, что-то запускаешь
5. Если сможешь определить, что твое запущенное уже закончилось (в данном случаее разархивирование), то:
6. Открываешь Акс1
7. Закрываешь Акс2

Круто?
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32547867
Exquisite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На вскидку:
Запустить отдельный процесс (на основе того же Акса), который выполнит необходимые действия. Пример есть в ФАКе по сжатию БД .
Недостатки есть, но есть и достоинства: все можно сделать в знакомой среде.
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32547868
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да второй вариант был очевиден. Просто не хотелось на 3сек паузы создавать отдельную базу, когда, например, в Excel и так можно обойтись. Отсюда и возник вопрос про возможности Акса.

А что такое vbs - это поможет?
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32547871
Exquisite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АпАздАл (с) ЛП
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32547875
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор - Анатолий (Киев)


Вопрос: Scripting / Wscript: пример перезагрузки БД в текущем окне или замены на другую БД.

Совет:
Предлагаю простой пример перезагрузки БД в текущем окне или замены на другую БД.
Кто пробовал, знает, что процедурой в текущей БД это сделать нельзя.
Методы Application.CloseCurrentDatabase, Application.OpenCurrentDatabase
DBNew должны выполняться внешним приложением.
Предлагаемый вариант использует механизм "Windows Scripting Host" (WSH), который есть почти на всех весиях Windows.

Создается простенький скрипт, сохраняется в TEMP папке и запускается на выполнение. Если DBNew пуст - перезагружается текущая БД.
Повторный вызов функции перезаписывает файл.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
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
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32547892
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА что такое vbs - это поможет?

Visual Basic Script (вроде так, т.е. файлы с расширением *.vbs)
Это я предложил вместо bath использовать, т.к. функционала больше, а исполняется прямо из среды, ак батник - да и язык там Васик :)
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32548756
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пА-АмА-АгИтЕ!!!

Простейший код на VBS, который, проеряет наличие файла и пытается удалить, до тех пор, пока ему это не удается.
Я попробовал - не получилось (не сраслось :). Хелп?
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32548773
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код в студию
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32548915
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опираясь на синтаксис VB, я написал следующее:

on error resume next
set fs=createobject("Scripting.FileSystemObject")
do
kill ("c:\mc\test.txt")
err.clear
loop while fs.Exists ("c:\mc\test.txt")


kill ему не нравится. В последствии, если урать kill, он будет и на fs.Exists ругаться.

Если будете тестировать у себя на компьютере, уберите первую строку, иначе эта зараза ничего не выдаст, а в памяти останется.
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32548919
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
 'on error resume next
 
set fs=createobject("Scripting.FileSystemObject")
do
call fs.DeleteFile ("1.txt", true)
loop while fs.FileExists ("1.txt")

?
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32548966
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PAPAROME : Баальщей прибаальщей спасиб тебе.
А вот... надо бы теперь сам exe-шничек запустить, а ммм... SHELL не работат. Хелп?
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32548976
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА вот... надо бы теперь сам exe-шничек запустить, а ммм... SHELL не работат. Хелп?

Не понял
- какой exe запустить?
- что значит shell не работает? (ругается? как?)
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32548986
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну в первой-то теме я вот говорил, что хочу удалить старую базу и достать из архива SFX новую, после чего удалить архив.

Написал :

on error resume next
set fs=createobject("Scripting.FileSystemObject")
do
call fs.DeleteFile ("Client.mdе", true)
err.clear
loop while fs.FileExists ("Client.mdе")
on error goto 0
shell ("Client.exe")

А он говорит, что я дурак. :)
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32549035
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\Access97\Office\MSACCESS.EXE"

?
...
Рейтинг: 0 / 0
Выполнение кода после закрытия базы?
    #32549036
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На форуме нашел :)
/topic/94605&hl=vbs+shell
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выполнение кода после закрытия базы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]