![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как заблокировать локальную всю БАЗУ данных [D5, Paradox]
Num Lock © (2003-02-14 08:45:00)Я делаю так:
Database.Exclusive:= True;
Database.Open;
, но другие пользователи и приложения всё равно могут открывать таблицы.
Num Lock (2003-02-19 16:08:00) [1]
> Anatoly Podgoretsky © (17.02.03 09:38)
- Я думаю что под "базой данных" в общем случае понимается совокупность таблиц входящих в неё.
- а финт с переименованием - это круто! Это именно то, что нужно.
1. Пытаюсь переименовать папку
2. Если получается, то делаю то, что мне нужно, и переименовываю обратно.
3. Если при открытии программы оригинальная папка не существует, а существует только временная, то переименовываю её взад, даже можно попробовать повторить выполнение операции
Reindeer Moss Eater (2003-02-17 12:30:00) [2]MsGuns ©
Имелось ввиду то, что для блокирование всей базы данных необходимо открыть монопольно все таблицы.
Вот и все.
MsGuns (2003-02-17 12:28:00) [3]>Reindeer Moss Eater (17.02.03 12:23)
>//Открыть все таблицы БД.
Ну и что, после этого другие не смогут получить доступ к таблицам ?
ИМХО, надо в цикле ВСЕ таблицы ДО открытия перевести в экслюзив в защищенном блоке. Если хоть одна попытка не удастся, все остальные разблокировать и дать соотв. сообщение, после чего вообще закрыть БД (убрать за собой все следы в .lck)
Reindeer Moss Eater (2003-02-17 12:23:00) [4]Database1.Exclusive:=True;
//Открыть все таблицы БД.
for i:=0 to Pred(.....) do ....
Anatoly Podgoretsky (2003-02-17 12:15:00) [5]Ухи будем отрывать программисту за финт
MsGuns (2003-02-17 12:12:00) [6]>Anatoly Podgoretsky © (17.02.03 09:38)
Это совет - шутка ?
Если после "финта ушами", т.е. переименования, прога не сможет завершиться нормально, то, похоже, чел останется вовсе без ушей (без БД) ;)))
Anatoly Podgoretsky (2003-02-17 09:38:00) [7]Базой данных для Парадокса является папка (каталог), и естественно ни о каком монопольном доступе и речи быть не может, в то же время далее ты говоришь уже не про базу, а про таблицы.
Можно конечно сделать финт ушами, временно переименовать папку.
Num Lock (2003-02-17 09:24:00) [8]Спасибо!
roadrunner (2003-02-14 15:59:00) [9]если програ подключается через BDE,можно посмотреть через функцию
DbiOpenUserList.В helpe по BDE есть пример.Функция делает таблицу в памяти, где будет список пользователейт пользующихся данной БД(директорией где она хранится)
Num Lock (2003-02-14 15:08:00) [10]У меня в программе есть процедура проверки таблиц на целостность индексов, и заголовков, и на время выполнения этой процедуры необходимо запрещать другим пользователям доступ к таблицам, поэтому Ваш способ не подойдет. Если в таблице есть повреждение, то Dataset даже не откроется. И это долго - переоткрывать все таблицы (несколько сотен мегабайт). И как в общем случае проверить, что кто то уже подключен к Базе?
VAleksey (2003-02-14 11:43:00) [11]Назначь Exclusive = true всем DataSet - ам