![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Упаковка базы Ассеss 2000 [D5, Access]
YPS © (2002-04-17 16:15:00)Господа ,может кто решал подобную проблему ?
MDE формат не хочу создавать , а MDB с каждой сессией увеличивается на 2 мега (с обновлением,но без добавления данных)
Как эффективно упаковывать и восстанавливать базу ???
Спасибо.
andrucco (2002-04-26 05:19:00) [1]Я делаю примерно так:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
OD1: TOpenDialog;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const
ODBC_ADD_DSN = 1;
implementation
{$R *.DFM}
function SQLConfigDataSource(
hwndParent: HWND;
fRequest: Word;
lpszDriver: LPCStr;
lpszAttributes: LPCStr): Boolean; stdcall; external "ODBCcp32.dll"{"ODBCINST.dll"} name "SQLConfigDataSource";
procedure TForm1.Button1Click(Sender: TObject);
var szDriver: LPCStr;
szAttributes: LPCStr;
begin
Label1.Caption := "Start: "+ DateTimeToStr(Now) + Chr(13);
if OD1.Execute then
begin
Label1.Caption := Label1.Caption + "File to compact: " + OD1.FileName + Chr(13);
szDriver := "Microsoft Access Driver (*.mdb)";
szAttributes := PCHar("COMPACT_DB="+OD1.FileName + " " + OD1.FileName{c:\cbr1\cb.mdb c:\cbr1\cb.mdb General"}+Chr(0)+ Chr(0));
if SQLConfigDataSource(0, ODBC_ADD_DSN, szDriver, szAttributes) then
Label1.Caption := Label1.Caption + "Ok" + Chr(13)
else
Label1.Caption := Label1.Caption + "Error" + Chr(13);;
end;
Label1.Caption := Label1.Caption + "End: " + DateTimeToStr(Now) + Chr(13);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption := "";
end;
end.
Только не должно быть подцепленных клиентов с полным доступом
sniknik (2002-04-25 23:15:00) [2]код без сомнений рабочий, может у тебя этот обект не установлен? не знаю к чему относится (чем его проинсталировать можно) но можеш проверить посмотри в реестре (regedit) есть такой путь к классу? (хоть какой нибудь?)
HKEY_CLASSES_ROOT\JRO.JetEngine
HKEY_CLASSES_ROOT\JRO.JetEngine.2.5
HKEY_CLASSES_ROOT\JRO.JetEngine.2.6
если есть должно работать.
завтра могу пример скинуть если у тебя не получится. (для шестого дельфи, или exe этот точно должен)
а ошибку синтаксиса какую дает?
SelfDestructor (2002-04-25 19:42:00) [3]нет, так она вообще на синтаксис ругается.
в первом случае в момент выполнения возникало исключение типа EOLESysError с текстом "Ошибка"
Базу перед этим закрывал.
sniknik (2002-04-25 17:47:00) [4]перевод с бейсика, попробуй так
var je: Variant;
begin
je:=CreateOleObject("JRO.JetEngine");
je.CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source=D:\Base.mdb",
"Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source=D:\Compressed.mdb;"+
"Jet OLEDB:Encrypt Database=True");
.....
SelfDestructor (2002-04-25 15:58:00) [5]sniknik, попробовал я так - вылетает в процессе работы с сообщением "Ошибка" на OleFunction
sniknik (2002-04-17 16:58:00) [6]Variant je=CreateOleObject("JRO.JetEngine");
je.OleFunction("CompactDatabase","Provider=Microsoft.Jet.OLEDB.4.0;"
"Data Source=С:\\NonCompressed.mdb",
"Provider=Microsoft.Jet.OLEDB.4.0;"
"Data Source=C:\\Compressed.mdb;"
"Jet OLEDB:Encrypt Database=True");
Wasp (2002-04-17 16:46:00) [7]Могу посоветовать использовать бесплатный компонент KADao, у которого есть методы CompactAccessDatabase(TableName)и RepairAccessDatabase(TableName).
Взять его можно на http://www.delphi.pari.bg/
Wasp (2002-04-17 16:45:00) [8]Могу посоветовать использовать бесплатный компонент KADao, у которого есть методы CompactAccessDatabase(TableName)и RepairAccessDatabase(TableName).
Взять его можно на http://www.delphi.pari.bg/
Wasp (2002-04-17 16:44:00) [9]Могу посоветовать использовать бесплатный компонент KADao, у которого есть методы CompactAccessDatabase(TableName)и RepairAccessDatabase(TableName).
Взять его можно на http://www.delphi.pari.bg/
Wasp (2002-04-17 16:44:00) [10]Могу посоветовать использовать бесплатный компонент KADao, у которого есть методы CompactAccessDatabase(TableName)и RepairAccessDatabase(TableName).
Взять его можно на http://www.delphi.pari.bg/
Wasp (2002-04-17 16:43:00) [11]Могу посоветовать использовать бесплатный компонент KADao, у которого есть методы CompactAccessDatabase(TableName) и RepairAccessDatabase(TableName).
Взять его можно на http://www.delphi.pari.bg/