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

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

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

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

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

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

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

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

А что такое vbs - это поможет?
...
Рейтинг: 0 / 0
04.06.2004, 09:48
    #32547871
Exquisite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение кода после закрытия базы?
АпАздАл (с) ЛП
...
Рейтинг: 0 / 0
04.06.2004, 09:49
    #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
04.06.2004, 09:57
    #32547892
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение кода после закрытия базы?
авторА что такое vbs - это поможет?

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

Простейший код на VBS, который, проеряет наличие файла и пытается удалить, до тех пор, пока ему это не удается.
Я попробовал - не получилось (не сраслось :). Хелп?
...
Рейтинг: 0 / 0
04.06.2004, 15:12
    #32548773
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение кода после закрытия базы?
Код в студию
...
Рейтинг: 0 / 0
04.06.2004, 16:12
    #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
04.06.2004, 16:18
    #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
04.06.2004, 16:35
    #32548966
Invisible
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение кода после закрытия базы?
PAPAROME : Баальщей прибаальщей спасиб тебе.
А вот... надо бы теперь сам exe-шничек запустить, а ммм... SHELL не работат. Хелп?
...
Рейтинг: 0 / 0
04.06.2004, 16:40
    #32548976
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение кода после закрытия базы?
авторА вот... надо бы теперь сам exe-шничек запустить, а ммм... SHELL не работат. Хелп?

Не понял
- какой exe запустить?
- что значит shell не работает? (ругается? как?)
...
Рейтинг: 0 / 0
04.06.2004, 16:44
    #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
04.06.2004, 17:09
    #32549035
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение кода после закрытия базы?
Код: plaintext
1.
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\Access97\Office\MSACCESS.EXE"

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


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