Привет всем !
Есть программа, сделана на C63 ABC, БД TopSpeed - нужно предусмотреть в ней режим работы с БД "только просмотр".
Например при запуске с CD / DVD или с сетевого диска с правом только на чтение.
C помощью GlobalErrors.RemoveError(Msg:AccessDenied) можно выключить все сообщения об ошибках (они выдаются
когда нет прав на запись). А есть ли возможность также одной командой "выключить" все операторы Access:File.Insert() и Access:File.Update() ? Конечно можно вручную отработать и отключить все операции попытки изменения БД - но хотелось бы как-то этот процесс автоматизировать ...
Заранее спасибо за любые идеи.
Режим ReadOnly .... ?
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 8033
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
Re: Режим ReadOnly .... ?
если ABC модель - Поробуй написать класс наследик от FileManager и в нем отключить все ненужные методы. В APP в закладке Global Propirties->Classes->File Management подключаешь свой класс.
Re: Режим ReadOnly .... ?
В своё время я работал в конторе, которая выпускала программы на компактах
Там при запуске программы сначала определялся адрес CD-ROM дисковода (или дисководов)
LOOP I#=0 TO 25
LOC:CdDir=CHR( VAL('A') + I# ) & ':\'
IF GETDRIVETYPE(LOC:CdDir)=5
CDQ:Drive=Loc:CdDir[1]
Add(CdQ)
END
End
Внутри FileManager.Open для базы сначала запрашивается имя каталога, где она живёт, потом выделяется имя
дисковода и проверяется, входит ли дисковод в список сетевых. Если это так, выполняется Self.SetOpenMode(ReadOnly)
Там при запуске программы сначала определялся адрес CD-ROM дисковода (или дисководов)
LOOP I#=0 TO 25
LOC:CdDir=CHR( VAL('A') + I# ) & ':\'
IF GETDRIVETYPE(LOC:CdDir)=5
CDQ:Drive=Loc:CdDir[1]
Add(CdQ)
END
End
Внутри FileManager.Open для базы сначала запрашивается имя каталога, где она живёт, потом выделяется имя
дисковода и проверяется, входит ли дисковод в список сетевых. Если это так, выполняется Self.SetOpenMode(ReadOnly)