<?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=40998&amp;view=findpost&amp;p=266003</guid>
        <pubDate>Thu, 18 Dec 2003 14:52:57 +0000</pubDate>
        <title>как программно можно сжать базу Access97/Jet?</title>
        <link>https://forum.sources.ru/index.php?showtopic=40998&amp;view=findpost&amp;p=266003</link>
        <description><![CDATA[Vit:  <!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1-->procedure CompactDatabase_JRO&#40;DatabaseName&#58;string;DestDatabaseName&#58;string=&#39;&#39;;Password&#58;string=&#39;&#39;&#41;;<br>const<br>&nbsp; &nbsp;Provider = &#39;Provider=Microsoft.Jet.OLEDB.4.0;&#39;;<br>var<br>&nbsp; TempName &#58; array&#91;0..MAX_PATH&#93; of Char; // имя временного файла<br>&nbsp; TempPath &#58; string; // путь до него<br>&nbsp; Name &#58; string;<br>&nbsp; Src,Dest &#58; WideString;<br>&nbsp; V &#58; Variant;<br>begin<br>&nbsp; &nbsp;try<br>&nbsp; &nbsp; &nbsp; &nbsp;Src &#58;= Provider + &#39;Data Source=&#39; + DatabaseName;<br>&nbsp; &nbsp; &nbsp; &nbsp;if DestDatabaseName&#60;&#62;&#39;&#39; then<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name&#58;=DestDatabaseName<br>&nbsp; &nbsp; &nbsp; &nbsp;else begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// выходная база не указана - используем временный файл<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// получаем путь для временного файла<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TempPath&#58;=ExtractFilePath&#40;DatabaseName&#41;;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if TempPath=&#39;&#39; Then TempPath&#58;=GetCurrentDir;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//получаем имя временного файла<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GetTempFileName&#40;PChar&#40;TempPath&#41;,&#39;mdb&#39;,0,TempName&#41;;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Name&#58;=StrPas&#40;TempName&#41;;<br>&nbsp; &nbsp; &nbsp; &nbsp;end;<br>&nbsp; &nbsp; &nbsp; &nbsp;DeleteFile&#40;PChar&#40;Name&#41;&#41;;// этого файла не должно существовать &#58;&#41;&#41;<br>&nbsp; &nbsp; &nbsp; &nbsp;Dest &#58;= Provider + &#39;Data Source=&#39; + Name;<br>&nbsp; &nbsp; &nbsp; &nbsp;if Password&#60;&#62;&#39;&#39; then begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Src &#58;= Src + &#39;;Jet OLEDB&#58;Database Password=&#39; + Password;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Dest &#58;= Dest + &#39;;Jet OLEDB&#58;Database Password=&#39; + Password;<br>&nbsp; &nbsp; &nbsp; &nbsp;end;<br><br>&nbsp; &nbsp; &nbsp; &nbsp;V&#58;=CreateOleObject&#40;&#39;jro.JetEngine&#39;&#41;;<br>&nbsp; &nbsp; &nbsp; &nbsp;try<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;V.CompactDatabase&#40;Src,Dest&#41;;// сжимаем<br>&nbsp; &nbsp; &nbsp; &nbsp;finally<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;V&#58;=0;<br>&nbsp; &nbsp; &nbsp; &nbsp;end;<br>&nbsp; &nbsp; &nbsp; &nbsp;if DestDatabaseName=&#39;&#39; then begin // т.к. выходная база не указана <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DeleteFile&#40;PChar&#40;DatabaseName&#41;&#41;; //то удаляем не упакованную базу<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RenameFile&#40;Name,DatabaseName&#41;; // и переименовываем упакованную базу<br>&nbsp; &nbsp; &nbsp; &nbsp;end;<br>&nbsp; &nbsp;except<br>&nbsp; &nbsp; // выдаем сообщение об исключительной ситуации<br>&nbsp; &nbsp; on E&#58; Exception do ShowMessage&#40;e.message&#41;;<br>&nbsp; &nbsp;end;<br>end;<!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br>не помню где эту процедурку взял - так что без копирайта<br> <br><br><span style='color:gray'><b>Добавлено в</b> <time class="tag-mergetime" datetime="2003-12-18T13:17:52+03:00">18.12.03, 10:17</time></span><br> а ну да, сам вызов примерно такой:<br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1-->CompactDatabase_JRO&#40;&#39;C&#58;&#092;MyDataBase&#092;base.mdb&#39;,&#39;&#39;,&#39;123&#39;&#41;;<!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br><br>Автор: ZEE<br><br><br>Ещё вариант: Пакет компонентов kaDAO - там эта функция встроена <br><br>Автор: Vit ]]></description>
        <author>Vit</author>
        <category>Базы данных, репортинг, печать</category>
      </item>
	
      </channel>
      </rss>
	