Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: жизнь после смерти
 
 автор: kot_k_k   (07.12.2010 в 14:33)   личное сообщение
 
 

нужно
- закрыть клиент
- запустить батник в котором обновляется клиент и потом клиент запускается.

но проблем как застаить после закртия клиента запустить батник.
наифная душа создал на форме

DoCmd.Close
Shell "C:\bat_new.bat"

хрен не запускается - как энто мона сделать - конечно можно сказать юзеру - морда скорпируй обнову и запусти еще раз, но хотелось обойтись без этого - типа красоту навести

как это можнос сделать

  Ответить  
 
 автор: Анатолий (Киев)   (07.12.2010 в 15:26)   личное сообщение
 
 

Этот код закрывает БД в текущем окне и затем снова открывает ее же или другую, указанную в 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

  Ответить  
 
 автор: kot_k_k   (07.12.2010 в 16:57)   личное сообщение
 
 

большое спасибо -
но теперь вопрос в другом как скриптом запустить команду батник с командой ХСОРУ - или же как скриптом скопировать файл

  Ответить  
 
 автор: kot_k_k   (07.12.2010 в 17:29)   личное сообщение
 
 

totраз спасибо - главное это стратегия - в какую сторону смотреть.
пока дошел до этого момента, пока нревится

Set objShellApp = CreateObject("Shell.Application")
objShellApp.ShellExecute "bat_new.bat", "", "C:\1111111111\новейшее"

заработал батник с копированием - типа выкрутился. остается все немного подкрасить

  Ответить  
 
 автор: kot_k_k   (07.12.2010 в 18:07)   личное сообщение
 
 

балалайка а не батник - он не понимает руссские буквы в пути - шоб они 100 жили.
вопрос оставется открытым - как скриптом скопировать файлы или как конвертнуть в ОЕМ стоку кодом VB.

п.с. - ну вот получили вместо одного - 2 вопроса

  Ответить  
 
 автор: Анатолий (Киев)   (07.12.2010 в 20:02)   личное сообщение
 
 

А что у вас такое в папке кроме MDB?
ИМХО, батник вам вовсе и не нужен. Внутри VBS файла копирование файлов, а при желании, проверкуу дат обновления нового и старого файлов можно организовать с помощью родного для VBScript объекта FSO.

  Ответить  
 
 автор: snipe   (08.12.2010 в 04:44)   личное сообщение
 
 

надо было сделать что-то типа резервного копирования

открыл виндовский блокнот
написал


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

засунул файлик в автозагрузку

теперь при запуске моего компа создается копия базы
(неудобно конечно приходится папку иногда чистить, но при не имении бабушки.......)

  Ответить  
 
 автор: kot_k_k   (08.12.2010 в 09:24)   личное сообщение
 
 

Обоим (или обом как правильно не знаю) спасибо большое.
я скрипта не заню просто 0 в 0 степени. вот и изголяюсь чемогу.
впапаке много разного просто XCOPY первое ченашел по поиску в нете, а так мне просто нужно скопировать 1 файл из указанного места в место откуда запустили клиент (юзеры его ховают кто куа).
еще раз спасибо за FSO будем кОпать.

п.с. почему то вспомнилось.

- мужик как проплыть на Багамы
- курс зюйд-зюйд-вест сэр.
- не задрачивай рукой покажи.

почти похоже.

  Ответить  
 
 автор: K@S   (16.12.2010 в 06:04)   личное сообщение
 
 

Можно сделать так при закрытии базы создается резервная копия.
Создаем модуль.
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

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList