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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Замена файла рабочих групп (mdw). Можно?
 
 автор: SergioVB   (14.11.2006 в 09:13)
 
 

Можно ли во время работы пользователей заменить файл рабочих групп (mdw)? Файл такой-же, но допустим, с добавленным пользователем.

  Ответить  
 
 автор: osmor   (14.11.2006 в 09:22)   личное сообщение
 
 

что мешает взять и попробовать?

  Ответить  
 
 автор: SergioVB   (14.11.2006 в 09:35)
 
 

Много пользователей, и важный проект. Вдруг чего. Я подозреваю что заменить как-бы можно, но если в этот момент происходит вход юзера, по идее просто не пустит. Короче всё догадки. Знать бы наверняка.

  Ответить  
 
 автор: osmor   (14.11.2006 в 09:44)   личное сообщение
 
 

а у себя на машине попробовать
создать файл MDW
запустить с ним ACCESS
заменить файл MDW другим

А зачем эта подмена вообще нужна?

  Ответить  
 
 автор: SergioVB   (14.11.2006 в 09:58)
 
 

Физически файл меняется без проблем, так можно и саму базу заменить :) Я как то не смог дождаться выхода юзеров и заменил. Пришлось базу восстанавливать. А замена вот зачем:
Компания крупная, свои требования безопасности, а именно: разработчик не должен иметь доступа в среду где работают пользователи (дабы чего-то там не испортить), мне необходимо добавить пользователя - я даю запрос на перенос файла рабочих групп в доступную мне среду, добавляю и по запросу файл тащится обратно (уже не мной). Вот здесь и подходим к первоначальному вопросу.

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

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

  Ответить  
 
 автор: SergioVB   (14.11.2006 в 10:35)
 
 

Да экзотика. Форма тоже вариант. Но так можно и без работы остаться :(

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

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

  Ответить  
 
 автор: ГлазастыйМышь   (14.11.2006 в 10:57)   личное сообщение
 
 

А что мешает подключиться к данному mdw из-под другой базы и делать необходимые изменения.

Я пользую такой вариант:
создал VBS скрипт в котором прописан какой файл базы и какой файл рабочих групп запускать. При некритических изменениях базы (подправить дизайн и т.д.) выкладываю новые файлы с другими именами и правлю скрипт. Таким образом ранее вошедшие пользователи работаю в старой версии, а новые в новой базе.

  Ответить  
 
 автор: SergioVB   (14.11.2006 в 11:16)
 
 

Схема такая: Есть папка А, я не имею к неё доступа, работают только юзера,в ней лежат три файла MDW, MDB c формами отчетами и т.д. и MDB с таблицами (пользовательские данные).
Есть папка В: имею полный доступ только я, те-же файлы.
Задача №1:Добавить пользователя в базу который работает в А.
Реализация: Копируется админом MDW из А в В, я захожу в MDB добавляю юзера, админ копирует MDW из В в А.
Всё скопируется, но не будет ли проблем?
Задача №2: Изменить интерфейс. Копировать уже надо интерфейсный MDB :(

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

ну по идее интерфейсная часть должна быть у каждого пользователя на компе, тогда формы не будут по сети гоняться, тогда и подмену делать проще.
а иначе придется ждать когда все из интерфейсной базы выйдут, иначе никак не подменишь.
либо подмену нужно делать скриптом с правами того у кого есть доступ к обеим папкам в то время когда заведомо никто не работает.
т.е. идея такова
VBS скрипт (или .BAT) запускается по рассписанию сервером в то время когда никто не работает (или если сервер выключается при старте системы), запускается с павами того кто имеет доступ и к папке А и к папке B. Проверяет наличие новой версии интерфейса (и MDW) в папке B и копирует их в папку А, предварительно скопировав старые версии в папку С (к которой вообще ни у кого кроме админа прав нет)
Такой скрипт пишется за 5 минут

  Ответить  
 
 автор: SergioVB   (14.11.2006 в 12:16)
 
 

Роль этого VBS скрипта у на выполняет тетя :)

  Ответить  
 
 автор: Explorer   (14.11.2006 в 12:50)   личное сообщение
 
 

а если сохранять из БД - из OLE поля таблицы

  Ответить  
 
 автор: osmor   (14.11.2006 в 12:58)   личное сообщение
 
 

написать скрип, тетю в запас, ЗП разделить между сервером (на новые мозги) и программистом (на пиво)

  Ответить  
 
 автор: ГлазастыйМышь   (14.11.2006 в 11:36)   личное сообщение
 
 

По проблемам при копировании ничего сказать не могу, да и практические испытания тоже не помогут (если только под большой нагрузкой)
Лично у меня бывали ситуации когда при копировании MDB иногда ломалась база (и никакими средствами востановить не получалось), а чаше все происходило нормально (даже если с ней работали люди)
Т.К. приложение запускается через Citrix, то сделал скрипт
SelectVersion.vbs
Set WSHNetwork = WScript.CreateObject("WScript.Network")
Set WshShell = WScript.CreateObject("WScript.Shell")

dbPath = "путь в корневой каталог"

dbPathWorkGroup = dbPath & "knowledge.mdw"
dbPathBaseOLD = dbPath & "Знания.mdb"
dbPathBaseNEW = dbPath & "RO_(3-0)_1.mdb"
dbPathAccess = "D:\Program Files\Microsoft Office\Office11\MSACCESS.EXE" 

bntNum = WshShell.Popup ("Запустить новую версию программы ?"_
    & Chr(10) & Chr(13) & Chr(10) & Chr(13) _
    & Chr(10) & Chr(13) & Chr(10) & Chr(13) _ 
    & Chr(10) & Chr(13) & Chr(10) & Chr(13) _ 
    & "______________________________________________________ " _
    & Chr(10) & Chr(13) _
    & "При ответе 'ДА' или при отсутствии ответа в течение 15 секунд будет " _
    & "запущена новая версия программы." , 15 ,"Выберите версию программы", _
    vbDefaultButton1 + vbQuestion + vbYesNo)

select case bntNum
    'нажата кнопка НЕТ
    case 7  
        dbPathBase = dbPathBaseOLD
    case Else
        dbPathBase = dbPathBaseNEW
end select

If dbPathBase <> "" Then

    WshShell.Run """" & dbPathAccess & """" & " " & """" & dbPathBase & """" & " /WrkGrp " & """" & dbPathWorkGroup & """  /User " & Ucase(WSHNetwork.UserName) & " /pwd " 
End If
WScript.Quit

соответственно при обновлениях по необходимости меняю переменные dbPathWorkGroup, dbPathBaseNEW в соответствии с новыми именами файлов (да и версионность таким образом неплохо отслеживать)

ЗЫ. Не иначе в банке работаешь, обычно там такие процедуры.
ЗЫ. Да и процедура добавления нового юзера не дела разработчика, а отдела сопровождения (вот и сделай приблуду для них )

  Ответить  
 
 автор: SergioVB   (14.11.2006 в 12:13)
 
 

Спасибо, но помоему не юзер должен выбирать с какой версией ему работать.

  Ответить  
 
 автор: ГлазастыйМышь   (14.11.2006 в 12:36)   личное сообщение
 
 

Да нет здесь имеется просто два разных интерфейса к базе, вот пользователь и выбирает с каким работать
а так выложил файл NewVersion.mdb
dbPathBaseNEW = dbPath & "NewVersion.mdb"

  Ответить  
 
 автор: Explorer   (14.11.2006 в 10:22)   личное сообщение
 
 

>А зачем эта подмена вообще нужна?

хм... что-то в этом есть

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