Разработка баз данныхРазработка баз данных

 Программирование  Программы  Ссылки  Обратная связь
     
. . .
. . .
startpage.htm Новости
about.htm О сайте
fileformat.htm I. Выбор технологии
clientserver.htm Преимущества клиент-серверной технологи
prepare.htm Переход от MDB к ADP
upsizing.htm Инструменты переноса данных
setupserver.htm Выбор версии и установка сервера
selectclient.htm Выбор версии MSAccess
formsreports.htm II. Формы, Отчеты MSAccess
queries.htm Запросы / ADO
inputparameters.htm Передача входных параметров
data_drivers.htm Библиотеки доступа к данным
forms.htm Формы MSAccess
requery.htm Обновление данных в форме
updatableform.htm Обновляемость данных в форме
dialogform.htm Остановка кода пока открыта форма
formsaverecord.htm Сохранить текущую запись
formgotorecord.htm Переход по записям формы
sumform.htm Итоги в формах
serverfiltersample.htm Пример серверного фильтра
formerror.htm Причина Ошибки #Error
menubarevent.htm Перехват нажатия на кнопку меню
woconditionalformat.htm Раскраска строк ленточной формы без условного форматирования
currrec.htm Выделение цветом текущей записи
subform.htm Подчиненные Формы
textboxenter.htm Ввод перевода строки
twimagelistbug.htm treview + imagelist + подч. форма
reports.htm Отчеты, общие рекомендации
report_input_parameters.htm Входные параметры
vbaprog.htm III. Программирование VBA
dbpic.htm Картинки в базе данных
binbmp.htm Двоичные данные картинки в поле таблицы базы данных
piclink.htm Хранение ссылок на файлы
picjpg.htm Бинарное содержимое JPG, Gif файла в бинарном поле базы данных
playsound.htm Воспроизведение звуков
tv.htm Функции для тривью
restartaccess.htm Перезапуск Аксесса
publicvariables.htm Передача и хранение параметров и настроек
collectionfunctions.htm Коллекция полезных функций
datepicker.htm Всплывающий календарик
menuhummer.htm Меню и тулбары
padeg.htm Склонение по падежам
comborowsource.htm Источник данных для поля со списком
filedialog.htm Диалог выбора файла / папки
sendmapi.htm Отправка почты (4 способа) + архивация
autoupdateclient.htm Автоматическое обновление клиентской части
licenses.htm  Устранение проблем с регистрацией компонентов
uncommented.htm Без коментариев
filetime.htm Время и дата файла
reportsample.htm Пример настраивомого отчета
adpformfilter.htm Серверный Фильтр by GEO
tempmdb.htm ADP: Временный MDB для временных таблиц
mutex.htm Запрет запуска нескольких копий приложения
translit.htm Транслитерация всего проекта.
updateident.htm Изменение счетчика
webinterface.htm IV WEB
accessinternet.htm Работа с аксесс через интернет
webupdate.htm Обновление приложения аксесс через интернет
msiecom.htm Программное управление веббраузером
sqlserver.htm MS SQL
mssqltransfer2.htm Перенос/копирование баз
mssqlperm.htm Adp проверка прав пользователя перед открытием формы или управление доступностью полей формы
mssqlcrossdatabase.htm  Межбазовые разрешения
tsqlcollection.htm T-sql коллекция
similarity.htm Сортировка по созвучности
esp.htm расширенные хранимые процедуры
mssqloptimizing.htm Оптимизация быстродействия
    

Автоматическое обновление клиентской части

 
 
Скрипт обновления клиентской части



Вариант 1
файлы клиентской части помещены в общедоступную папку на сервере  
Пароль не должен быть сохранен в файле ADP.  
Удобно использовать с Trusted - connection.  
Удобно если пользователей очень много и у всех должна быть одна версия.  
 
Программист просто копирует готовый файл partner.adp в \\dataserver\partners\Files\  
 
Создайте при помощью любого текстового редактора  
скрипт и поместите в общую папку на сервер:  
 
Update.VBS:  

const regkey = "partner" 'Ключ реестра где хранится дата время версии последнего обновления  
Const SrcPath = "\\dataserver\partners\Files\partner.adp" 'Путь и имя файла дистрибутива  
Const DestPath = "C:\base\partners\partner$.adp" 'Путь и имя файла на локальном диске  
Const StartupParams = " /runtime" 'Параметры запуска  
 
 
 
'-----------------------------------------------------------------------------------------------  
'© 2004 Козин А.А. Обновления: http://www.msdatabase.ru  
'-----------------------------------------------------------------------------------------------  
 
call update()  
 
 
sub update()  
Set Fso = CreateObject("Scripting.FileSystemObject")  
set oShell= WScript.CreateObject("WScript.Shell")  
 
on error resume next  
 
'Защита от двойного запуска в 5 сек интервал - запоминаем время последней загрузки  
prevload = oShell.RegRead ("HKEY_CURRENT_USER\Software\vbsupdater\" & regkey & "\lastload")  
if cdbl(cdate(prevload))+ .0001 > cdbl(now()) and cdbl(cdate(prevload)) < cdbl(now()) then  
'msgbox "Не запускайте скрипт дважды"  
exit sub  
end if  
oShell.RegWrite "HKEY_CURRENT_USER\Software\vbsupdater\" & regkey & "\lastload", now(), "REG_SZ"  
 
 
Set newfile = fso.GetFile(SrcPath)  
srcfiledate = newfile.DateLastModified  
On Error Resume Next  
'Так как локальный файл может быть изменен на клиенте и учитывать это не следует  
'Запоминаем и считываем из реестра время изменения последней копии загруженной с сервера  
currentfiledate = oShell.RegRead ("HKEY_CURRENT_USER\Software\vbsupdater\" & regkey & "\datetime")  
 
err.clear  
 
if cdate(srcfiledate) = cdate(currentfiledate) then  
'Обновление не требуется  
'Пробуем переименовать файл сам в себя  
   call Fso.moveFile (DestPath, DestPath)  
else  
   call Fso.CopyFile (SrcPath, DestPath, true)  
   if err.number = 0 then  
      oShell.RegWrite "HKEY_CURRENT_USER\Software\vbsupdater\" & regkey & "\datetime", srcfiledate, "REG_SZ"  
   end if  
end if  
'Если произошла ошибка то приложение уже загружено  
If Err.Number = 0 Then  
   openedbefore =false  
Else  
openedbefore =true  
End If  
err.clear  
 
 
'Определяем путь к аксессу XP  
access10path = oShell.RegRead("HKLM\Software\Microsoft\Office\10.0\Common\InstallRoot\Path")  
If Err.Number <> 0 Then MsgBox "На данном компьютере установлены не все необходимые компоненты (MsAccess 2002-XP) " , , "Ошибка при установке"  
 
on error goto 0  
if not openedbefore then  
   'Запускаем  
   oShell.Run """" & access10path & "MSACCESS.EXE" & """ " & DestPath & StartupParams  
else  
   'Если файл загружен то просто максимизировать окно без обновления.  
   Set ACC = GetObject( DestPath)  
   ACC.application.docmd.RunCommand 10  
end if  
 
end sub  
 

Скрипт проверяет что установлен MSAccess XP (он же 2002, он же Aксесс10)  
Если приложение не загружено то обновляет его новой версией с сервера, в случае, если дата-время изменения файла на сервере отличны от последней скопированной версии.  
Если загружено, то просто максимизирует окно приложения.  


Создание ярлыка на скрипт обновления. 
(может быть частью setup-файла)
 
Код создания ярлыка на рабочем столе пользователя:  

Set oShell = CreateObject("WScript.Shell")  
strDesktop = oShell.SpecialFolders("Desktop")  
Set oShellLink = oShell.CreateShortcut(strDesktop & "\Составление_бюджета.lnk")  
oShellLink.TargetPath = "\\dataserver\partners\Files\update.vbs"  
oShellLink.WindowStyle = 3  
oShellLink.Hotkey = "CTRL+SHIFT+P"  
oShellLink.IconLocation = access10path & "MSACCESS.EXE , 0"  
oShellLink.Description = "Составление бюджета"  
oShellLink.WorkingDirectory = strDesktop  
oShellLink.Save  

 
 
Вариант 2
Файлы клиентской части записываются программистом в открытую для совместного доступа   
папку на компьютере клиента.  
Пароль может быть сохранен в файле ADP.  
Удобно использовать при ограниченном числе клиентов или если требуется обновление   
только отдельным клиентам  
 
Программист просто копирует готовый файл Client.adp по сети .   
Для этого удобно вывести ярлыки сетевых папок клиентов в каталог с программой или использовать скрипт для копирования.  
 
 

Const SrcPath = "c:\base\Client.adp"  'это исходное имя файла который будет скопирован   
Const DestPath = "c:\base\TIMESHEET\Client$.adp"  'это рабочее имя файла под которым будет запущено приложение  
Const StartupParams = "" 'дополнителные параметры командной строки  
 
'-----------------------------------------------------------------------------------------------  
'© 2005 Козин А.А. Обновления: http://www.msdatabase.ru   
'-----------------------------------------------------------------------------------------------  
 
'Пробуем скопировать исходый файл под рабочим именем  
Set Fso = CreateObject("Scripting.FileSystemObject")  
set oShell= WScript.CreateObject("WScript.Shell")  
On Error Resume Next  
        call Fso.copyfile (SrcPath , DestPath, True)  
 If Err.Number = 0 Then  
'Если скопировать получилось значит приложение не было открыто ранее  
   openedbefore =false  
 Else  
     openedbefore =true  
 End If  
 err.clear  
 
'Ищем путь к аксессу XP  
 access10path = oShell.RegRead("HKLM\Software\Microsoft\Office\10.0\Common\InstallRoot\Path")  
 If Err.Number <> 0 Then MsgBox "На данном компьютере установлены не все необходимые компоненты (MsAccess 2002-XP) " & vbCrLf & "Обратитесь в службу технической поддержки"  
on error goto 0  
 if not openedbefore then  
   'Запускаем файл  
   oShell.Run """" & access10path & "MSACCESS.EXE" & """ " &  DestPath & StartupParams  
 else  
   'Если файл загружен то просто максимизировать окно без обновления.  
   Set ACC = GetObject( DestPath)  
   ACC.application.docmd.RunCommand 10  
 end if  
 
 
. . .
. . .
© 2000 - 2009 Алексей Козин эта вебстраница является зеркалом сайта www.msdatabase.ru Рейтинг@Mail.ru
Hosted by uCoz