Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Монопольный доступ к базе данных 
:(
    Опции темы
AntonStr
Дата 11.6.2008, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



Добрый день. 
Делаю сжатие данных Access вот так:

Код

Procedure CompactDatabase_JRO(DatabaseName:String;DestDatabaseName:String='';Password:String='');

Const

  Provider = 'Provider=Microsoft.Jet.OLEDB.4.0;';

Var

TempName : Array[0..MAX_PATH] of Char; // имя временного файла

TempPath : String; // путь до него

Name : String;

Src,Dest : WideString;

V : Variant;

begin

  try

      Src := Provider + 'Data Source=' + DatabaseName;

      if DestDatabaseName<>'' then 

          Name:=DestDatabaseName

      else begin

          // выходная база не указана - используем временный файл

          // получаем путь для временного файла

          TempPath:=ExtractFilePath(DatabaseName);

          if TempPath='' Then TempPath:=GetCurrentDir;

          //получаем имя временного файла

          GetTempFileName(PChar(TempPath),'mdb',0,TempName);

          Name:=StrPas(TempName);

      end;

      DeleteFile(PChar(Name));// этого файла не должно существовать :))

      Dest := Provider + 'Data Source=' + Name;

      if Password<>'' then begin

          Src := Src + ';Jet OLEDB:Database Password=' + Password;

          Dest := Dest + ';Jet OLEDB:Database Password=' + Password;

      end;

 

      V:=CreateOleObject('jro.JetEngine');

      try

          V.CompactDatabase(Src,Dest);// сжимаем

      finally

          V:=0;

      end;

      if DestDatabaseName='' then begin // т.к. выходная база не указана 

          DeleteFile(PChar(DatabaseName)); //то удаляем не упакованную базу

          RenameFile(Name,DatabaseName); // и переименовываем упакованную базу

      end;

  except

   // выдаем сообщение об исключительной ситуации

   on E: Exception do ShowMessage(e.message);

  end;

end; 

и выполняю по нажатию на кнопку:
Код

CompactDatabase_JRO('D:\...\...\база.mdb','D:\Archiv\база.mdb');


Выдает такую ошибку: "Попытка открыть базу данных, открытую пользователем '...' на машине '...' для монопольного доступа. Повторите попытку когда БД освободится. 

В чем дело, что за ошибка? 
Если ставлю в Access монопольный доступ к БД, такая же ошибка. 
Подскажите, пожалуйста, как исправить?
PM MAIL   Вверх
pseud
Дата 13.6.2008, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(AntonStr @  11.6.2008,  21:29 Найти цитируемый пост)
Выдает такую ошибку: "Попытка открыть базу данных, открытую пользователем '...' на машине '...' для монопольного доступа. Повторите попытку когда БД освободится. 

1. Значит база тобой уже где-то открыта.
2. Если базу могут юзать по сети. То предположу, что юзер работает с данными, а ты пытаешься упаковать базу. Для упаковки базы ИМХО ей требуется монопольный доступ.


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
SanyStation
Дата 16.12.2009, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.12.2009

Репутация: нет
Всего: нет



у меня таже проблема. Дело в том, что БД используется самим приложением, и процесс с БД не снимается до тех пор, пока приложение не будет закрыто. Пока что сам не знаю как решить проблему.
PM MAIL   Вверх
Данкинг
Дата 16.12.2009, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(SanyStation @  16.12.2009,  18:45 Найти цитируемый пост)
Пока что сам не знаю как решить проблему. 

А закрывать AdoConnection пробовал? smile 
Код

AdoConnection.Close;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
SanyStation
Дата 19.12.2009, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.12.2009

Репутация: нет
Всего: нет



Цитата(Данкинг @ 16.12.2009,  19:09)
Цитата(SanyStation @  16.12.2009,  18:45 Найти цитируемый пост)
Пока что сам не знаю как решить проблему. 

А закрывать AdoConnection пробовал? smile 
Код

AdoConnection.Close;

ADOConnection1.Close; не помогает если соединение с БД было произведено до начала компиляции. Так что проблему решил. Спасибо.

Это сообщение отредактировал(а) SanyStation - 19.12.2009, 23:12
PM MAIL   Вверх
Данкинг
Дата 19.12.2009, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(SanyStation @  19.12.2009,  23:10 Найти цитируемый пост)
если соединение с БД было произведено до начала компиляции. 

Так не забудь перед окончательным релизом своей проги отключиться от БД. А то на другом компьютере ошибка вылезет.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0783 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.