<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=122006&amp;view=findpost&amp;p=1263374</guid>
        <pubDate>Wed, 13 Sep 2006 18:12:19 +0000</pubDate>
        <title>Сжимаем базы Access&amp;#39;а</title>
        <link>https://forum.sources.ru/index.php?showtopic=122006&amp;view=findpost&amp;p=1263374</link>
        <description><![CDATA[Gonarh: да все работает, только при одном условии, <br>что база в монопольном режиме,<br>т.е. нету больше подключений, сам сталкивался  :(]]></description>
        <author>Gonarh</author>
        <category>Базы данных, репортинг, печать</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=122006&amp;view=findpost&amp;p=917549</guid>
        <pubDate>Wed, 16 Nov 2005 03:49:05 +0000</pubDate>
        <title>Сжимаем базы Access&amp;#39;а</title>
        <link>https://forum.sources.ru/index.php?showtopic=122006&amp;view=findpost&amp;p=917549</link>
        <description><![CDATA[NadZ: Долго искал нечто, что могло бы пуржить акцессовские базы.<br>
Не нашел.<br>
Зато откопал вот эту процедуру по сжатию оных БД.<br>
<br>
Предлагаю запихать в ФАК -&gt; Базы данных -&gt; ADO<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">{****************************************************</div><div class="code_line">&#62;&#62; Программное сжатие базы данных Access используя JRO (Jet Replication Objects)</div><div class="code_line">&nbsp;</div><div class="code_line">Процедура позволяет сжать базу данных в формате Access, используя JRO (Jet Replication Objects). Действие аналогичное пункту меню в Access &quot;Сервис -&#62; Служебные программы -&#62; Сжать и восстановить базу данных&quot;.</div><div class="code_line">Параметры:</div><div class="code_line">* DatabaseName - путь к исходной (не сжатой) базе данных</div><div class="code_line">* DestDatabaseName - путь к сжатой базе данных (по умолчанию пустой - в этом случае исходная база заменяется сжатой)</div><div class="code_line">* Password - пароль базы данных (по умолчанию пустой)</div><div class="code_line">&nbsp;</div><div class="code_line">PS. этот код был написан в связи с тем что аналогичная процедура через DAO у многих не работала (по пока неизвестным для меня причинам)</div><div class="code_line">&nbsp;</div><div class="code_line">Зависимости: windows,SysUtils,ComObj,Dialogs (Dialogs можно исключить используя MessageBox для вывода сообщения исключительной ситуации)</div><div class="code_line">&nbsp;</div><div class="code_line">Автор: &nbsp; &nbsp; &nbsp;savva, savva@nm.ru, ICQ:126578975, Орел</div><div class="code_line">Copyright: &nbsp;Сапронов Алексей (Savva)</div><div class="code_line">Дата: &nbsp; &nbsp; &nbsp; &nbsp;9 сентября 2002 г.</div><div class="code_line">**************************************************** }</div><div class="code_line">&nbsp;</div><div class="code_line">Procedure CompactDatabase_JRO(DatabaseName:String;DestDatabaseName:String=&#39;&#39;;Password:String=&#39;&#39;);</div><div class="code_line">Const</div><div class="code_line">&nbsp;&nbsp;Provider = &#39;Provider=Microsoft.Jet.OLEDB.4.0;&#39;;</div><div class="code_line">Var</div><div class="code_line">&nbsp;&nbsp;TempName : Array[0..MAX_PATH] of Char; // имя временного файла</div><div class="code_line">&nbsp;&nbsp;TempPath : String; // путь до него</div><div class="code_line">&nbsp;&nbsp;Name : String;</div><div class="code_line">&nbsp;&nbsp;Src,Dest : WideString;</div><div class="code_line">&nbsp;&nbsp;V : Variant;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Src := Provider + &#39;Data Source=&#39; + DatabaseName;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if DestDatabaseName&#60;&#62;&#39;&#39; then </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name:=DestDatabaseName</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;else begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// выходная база не указана - используем временный файл</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// получаем путь для временного файла</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TempPath:=ExtractFilePath(DatabaseName);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if TempPath=&#39;&#39; Then TempPath:=GetCurrentDir;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//получаем имя временного файла</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GetTempFileName(PChar(TempPath),&#39;mdb&#39;,0,TempName);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name:=StrPas(TempName);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;DeleteFile(PChar(Name));// этого файла не должно существовать :))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Dest := Provider + &#39;Data Source=&#39; + Name;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if Password&#60;&#62;&#39;&#39; then begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Src := Src + &#39;;Jet OLEDB:Database Password=&#39; + Password;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Dest := Dest + &#39;;Jet OLEDB:Database Password=&#39; + Password;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;V:=CreateOleObject(&#39;jro.JetEngine&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;V.CompactDatabase(Src,Dest);// сжимаем</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;V:=0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if DestDatabaseName=&#39;&#39; then begin // т.к. выходная база не указана </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DeleteFile(PChar(DatabaseName)); //то удаляем не упакованную базу</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RenameFile(Name,DatabaseName); // и переименовываем упакованную базу</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;except</div><div class="code_line">&nbsp;&nbsp; &nbsp;// выдаем сообщение об исключительной ситуации</div><div class="code_line">&nbsp;&nbsp; &nbsp;on E: Exception do ShowMessage(e.message);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script> <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2005-11-16T03:57:19+00:00">16.11.05, 03:57</time></span></span><br>
Данный код работает на &quot;УРА&#33;&quot;.<br>
Лично попользовано в <a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=96525' target='_blank'>BARDAK&#39;е</a> (Пока еще новую версию с этим кодом не выложил, но все равно все заечательно работает.]]></description>
        <author>NadZ</author>
        <category>Базы данных, репортинг, печать</category>
      </item>
	
      </channel>
      </rss>
	