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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Запуск батника с помощью Shell
 
 автор: deutin   (11.11.2009 в 10:31)   личное сообщение
 
 

Посоветовали такую функцию для запуска батника, но как запустить, и где прописать не знаю(где бат прописывается, не понятно). Но может есть уже готовые решения?
И вроде как даже на закрытии базы она срабатывает.

strCom = Chr(34) & PathPF & "\Microsoft Office\Office10\MSACCESS.EXE" & Chr(34) & " " & Chr(34) & path & Chr(34)
Sh = Shell(strCom, vbHide)

  Ответить  
 
 автор: osmor   (11.11.2009 в 14:46)   личное сообщение
 
 

http://hiprog.com/forum/read.php?id_forum=1&id_theme=4876&page=1

  Ответить  
 
 автор: deutin   (11.11.2009 в 15:14)   личное сообщение
 
 

А поподробней можно. Куда записовать этот Shell надо?

  Ответить  
 
 автор: osmor   (11.11.2009 в 15:41)   личное сообщение
 
 

shell это функция VBA

  Ответить  
 
 автор: deutin   (11.11.2009 в 16:10)   личное сообщение
 
 

Я понимаю, синтаксис не очень понятен, в какой процедуре должно прописыватся?

  Ответить  
 
 автор: osmor   (11.11.2009 в 16:19)   личное сообщение
 
 

в любой
Все зависит от того когда вы хотите выполнить этот батник

  Ответить  
 
 автор: deutin   (11.11.2009 в 16:46)   личное сообщение
 
 

После закрытия программы

  Ответить  
 
 автор: osmor   (11.11.2009 в 17:19)   личное сообщение
 
 

в ACCESS не события "закрытия программы"
обычно рекомендуют при запуске открывать скрытую форму и на событие "закрытие" этой формы вешать код, который доложен выполняться при закрытии программы

  Ответить  
 
 автор: deutin   (12.11.2009 в 08:34)   личное сообщение
 
 

У меня база из контекст. меню, закрытие идет на крестик самого Access, как мне это сделать, и если можно, приведите пожалуйста пример кода, а то я не очень в этом.

  Ответить  
 
 автор: Силblч   (12.11.2009 в 08:52)   личное сообщение
 
 

>>а то я не очень в этом
ну так подучитесь и будете очень

вам это вообще зачем?
если как программисту, то RTFM
если как ученику/студенту, одноразово, тогда RTFM и мы подправим код, который вы напишете :)
а иначе херня-с, батенька, получается

  Ответить  
 
 автор: deutin   (12.11.2009 в 09:46)   личное сообщение
 
 

Очень смешно! Как прописать Shellя разобрался, но получается гемор, по самому бат идет архивация, а по кнопке выход ничего не архивирует(хотя процес арчивации пробегает). Это я пробую по кнопке выход на форме, а нужно по кнопке закрытия Access.
Вот и нужна ваша помощь.

  Ответить  
 
 автор: deutin   (12.11.2009 в 09:55)   личное сообщение
 
 

На кнопке выхода пишу вот эти слова

Private Sub Кнопка0_Click()
    Call Shell("C:\123.bat", vbHide)
    DoCmd.Quit
End Sub

  Ответить  
 
 автор: osmor   (12.11.2009 в 10:29)   личное сообщение
 
 

http://hiprog.com/forum/read.php?id_forum=1&id_theme=5083&page=1

  Ответить  
 
 автор: deutin   (12.11.2009 в 11:09)   личное сообщение
 
 

Спасибо за ссылку, заработало, но мне нужно как я уже писал ранее "У меня база из контекст. меню, закрытие идет через крестик самого Access" , как прописать Shell для этого. И очень бы хотелось как у меня сделано в бате, архивировать в папочку с датой, и он записывал архивы по времени(не заменял их), а сейчас по прямой ссылке b]Shell """C:\Program Files\WinRar\WINRAR.EXE"" a -m5 -ep -dh -inul -agdd_mm_yyyy C:\Bakup\ C:\Base\*.mdb"
DoCmd.Quit[/b] , происходит замена архива на новый, может всетаки есть функция обращения к бат, через Shell, или через что то другое.

  Ответить  
 
 автор: osmor   (12.11.2009 в 11:14)   личное сообщение
 
 

как я уже писал ранее.....закрытие идет через крестик самого Access


как я тоже писал ранее

в ACCESS не события "закрытия программы"
обычно рекомендуют при запуске открывать скрытую форму и на событие "закрытие"
этой формы вешать код, который доложен выполняться при закрытии программы

  Ответить  
 
 автор: deutin   (12.11.2009 в 11:56)   личное сообщение
 
 


в ACCESS не события "закрытия программы"
обычно рекомендуют при запуске открывать скрытую форму и на событие "закрытие"
этой формы вешать код, который доложен выполняться при закрытии программы


Не очень понятно конечно, ну вот имеется у меня форма frmMainMenu, в ней на кнопке "выход" стоит архивация, затем идет выход. Мне эту форму нужно делать невидимой?(невидимой - это в свойствах: вывод на экран "Нет").

  Ответить  
 
 автор: osmor   (12.11.2009 в 14:13)   личное сообщение
 
 

обычно невидимой делают форму с которой не будут работать пользователи, т.е. кнопок в них не делают.
в такой форме можно хранить глобальные переменные и какие-то настройки которые могут понадобиться во время сеанса
кроме того в ней можно, с помощью события Таймер выполнять какие-то периодические действия. т.е. это чисто служебная форма.
Запускают такую форму в при старте приложения с помощью docmd.openform и атрибута acHidden
в этой форме на событие "закрытие" нужно написать код который вы хотите выполнить при закрытии приложения.
Поскольку форма не видна пользователю то событие закрытия этой формы возникнет только про закрытии приложения любым цивилизованным (т.е. не срубанием процесса) способом.
т.е. вы может сделать в другой/их форме/ах кнопку "Выход" с кодом application.Quit или позволить пользователю закрыть access "крестиком" или через меню, или по Alt+F4, в любом случае возникнет событие закрытия скрытой формы запущенной при старте и выполниться тот код который вы напишите в этом событии.

  Ответить  
 
 автор: deutin   (12.11.2009 в 15:04)   личное сообщение
 
 

А есть пример такой формы, а то совсем грусно.

  Ответить  
 
 автор: deutin   (12.11.2009 в 16:33)   личное сообщение
 
 

Вы мне специально дали время чтобы разобратся, и я разобрался к концу дня, получилось! Сделал форму невидимой, запустил ее с помощью Autoexec, и на ее закрытие положил

Shell """C:\Program Files\WinRar\WINRAR.EXE"" a -m5 -ep -dh -inul -agdd_mm_yyyy C:\Bakup\ C:\Base\*.mdb"
DoCmd.Quit
Все здорво, но архив идет с заменой при закрытии, как же все таки сделать обращение Shellя непосредственно к бату?

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