|
|
|
| нужно
- закрыть клиент
- запустить батник в котором обновляется клиент и потом клиент запускается.
но проблем как застаить после закртия клиента запустить батник.
наифная душа создал на форме
DoCmd.Close
Shell "C:\bat_new.bat"
хрен не запускается - как энто мона сделать - конечно можно сказать юзеру - морда скорпируй обнову и запусти еще раз, но хотелось обойтись без этого - типа красоту навести
как это можнос сделать | |
|
| |
|
|
|
| Этот код закрывает БД в текущем окне и затем снова открывает ее же или другую, указанную в DBNew. Фишка в создании и выполнении VBS файла.
Sub ReopenDB(Optional ByVal DBNew As String)
Dim strExpr As String, strTempFile As String, hFile As Integer
Dim wShell As Object
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 wShell = CreateObject("WScript.Shell")
strTempFile = wShell.ExpandEnvironmentStrings("%TEMP%")
strTempFile = strTempFile & "\RestartDB.vbs"
hFile = FreeFile
Open strTempFile For Output Access Write As hFile
Print #hFile, strExpr
Close hFile
wShell.Run """" & strTempFile & """", vbMinimizedNoFocus
Kill strTempFile
End Sub
|
| |
|
| |
|
|
|
| большое спасибо -
но теперь вопрос в другом как скриптом запустить команду батник с командой ХСОРУ - или же как скриптом скопировать файл | |
|
| |
|
|
|
| totраз спасибо - главное это стратегия - в какую сторону смотреть.
пока дошел до этого момента, пока нревится
Set objShellApp = CreateObject("Shell.Application")
objShellApp.ShellExecute "bat_new.bat", "", "C:\1111111111\новейшее"
заработал батник с копированием - типа выкрутился. остается все немного подкрасить | |
|
| |
|
|
|
| балалайка а не батник - он не понимает руссские буквы в пути - шоб они 100 жили.
вопрос оставется открытым - как скриптом скопировать файлы или как конвертнуть в ОЕМ стоку кодом VB.
п.с. - ну вот получили вместо одного - 2 вопроса | |
|
| |
|
|
|
| А что у вас такое в папке кроме MDB?
ИМХО, батник вам вовсе и не нужен. Внутри VBS файла копирование файлов, а при желании, проверкуу дат обновления нового и старого файлов можно организовать с помощью родного для VBScript объекта FSO. | |
|
| |
|
|
|
| надо было сделать что-то типа резервного копирования
открыл виндовский блокнот
написал
Dim strDBPath
Dim strPath
Dim fso
strDBPath = "\\Terminal\Почта\база_db.mde"
strPath = "D:\модуль автосохранение\база_db_" & Date() & ".mde"
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile strDBPath, strPath
Set fso = Nothing
|
сохранил из под блокнота как txt
переименовал, точнее изменил расширение на vbs
засунул файлик в автозагрузку
теперь при запуске моего компа создается копия базы
(неудобно конечно приходится папку иногда чистить, но при не имении бабушки.......) | |
|
| |
|
|
|
| Обоим (или обом как правильно не знаю) спасибо большое.
я скрипта не заню просто 0 в 0 степени. вот и изголяюсь чемогу.
впапаке много разного просто XCOPY первое ченашел по поиску в нете, а так мне просто нужно скопировать 1 файл из указанного места в место откуда запустили клиент (юзеры его ховают кто куа).
еще раз спасибо за FSO будем кОпать.
п.с. почему то вспомнилось.
- мужик как проплыть на Багамы
- курс зюйд-зюйд-вест сэр.
- не задрачивай рукой покажи.
почти похоже. | |
|
| |
|
|
|
| Можно сделать так при закрытии базы создается резервная копия.
Создаем модуль.
Option Compare Database
Public Declare Function NSA_API_CopyFile Lib "kernel32.dll" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Public Declare Function NSA_API_DeleteFile Lib "kernel32.dll" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
Sub TEST_NSA_API_CopyFile()
Dim RetVal As Long ' возвращаемое значение
' Копируем файл
RetVal = NSA_API_CopyFile("C:\baza.mdb", "C:\rezerv\baza.mdb", 1)
If RetVal = 0 Then ' не получилось
Debug.Print "Копирования не произошло -- C:\baza.mdb."
Else ' получилось
Debug.Print "Копирование прошло успешно."
End If
End Sub
Sub TEST_NSA_API_DeleteFile()
Dim RetVal As Long ' возвращаемое значение
RetVal = NSA_API_DeleteFile("C:\rezerv\baza.mdb")
If RetVal = 0 Then ' не получилось
Debug.Print "Удаление не произошло."
Else ' получилось
Debug.Print "Удаление прошло успешно."
End If
End Sub
На закрытие вешаем.
Private Sub КнопкаВыход_Click()
On Error GoTo Err_КнопкаВыход_Click
TEST_NSA_API_DeleteFile
TEST_NSA_API_CopyFile
SetOption "Auto Compact", True
DoCmd.Close
Exit_КнопкаВыход_Click:
Exit Sub
Err_КнопкаВыход_Click:
MsgBox Err.Description
Resume Exit_КнопкаВыход_Click
End Sub | |
|
| |