![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сжатие mdb [Delphi, Windows]
Dy1 © (2009-09-07 13:15:00)KOLnMCK 2.88, ревизия вроде 17я.
Как правильно сжать?
procedure CompactDB(DatabaseName: string; DestDatabaseName: string);
var
Name: string;
Src, Dest: WideString;
V: Variant;
begin
Src := Provider + 'Data Source=' + DatabaseName;
Name := DestDatabaseName;
DeleteFile(PChar(Name));
Dest := Provider + 'Data Source=' + Name;
//OleInit; //нужен? Ошибка в dll-ке
V := CreateOleObject('jro.JetEngine');
try
V.CompactDatabase(Src, Dest); // исключение. С OleInit досюда не доходит
finally
V := 0;
end;
end;
Dy1 (2009-09-13 18:30:00) [1]помогла древняя TLB2KOL.exe
Dy1 (2009-09-10 19:41:00) [2]поставил на виртуалку ХР СП3 - нужные провайдеры там уже есть.
Нарыл JRO_TLB(без репликации) и ADO_TLB (под VCL наконец-то заработало), но как конвертировать?..
Меня пока что устраивает KOLEdb, только к нему бы сжатие приКОЛоть...
Vladimir Kladov (2009-09-09 22:39:00) [3]Dy1, я тоже недавно пробовал на шарпе. Если прога на шарпе идет в системе ХП, то это уже не "чистая", там как минимум .net Framework накатан, а в него уже невесть что входит, заодно и доступ к БД.
Dy1 (2009-09-08 11:50:00) [4]CreateOleObject не работает даже VCLьный
MTsv DN (2009-09-07 20:56:00) [5]Сам нашел. Действительно, поведение правильное. А для моего понимая надо использовать:
Try
Try
...
Except
...
End;
Finally
...
End;
MTsv DN (2009-09-07 20:54:00) [6]
> ещё не так давно err нужен был для try...except и не нужен
> для try...finally.
В общем, как показала практика.
1. err не подключен. try...except -> исключение -> вылет /сист.сообщение/
2. err подключен. try...except -> исключение -> нормальная работа программы
3. err не подключен. try...finally -> исключение -> вылет /сист.сообщение/
4. err подключен. try...finally -> исключение -> вылет /расширенное сист.сообщение/
Расширенное сист.сообщение - т.е. при делении на ноль выдало не "Error 200", а "Divide by zero".
...Один хрен не легче. Разве такова работа try...finally должна быть? Я всегда думал, что блок finally срабатывает в любом случае, но при исключении вылета нет как при except. Поправьте меня...
Dy1 (2009-09-07 20:41:00) [7]ещё не так давно err нужен был для try...except и не нужен для try...finally.
Работает, сжимает.
Кстати, когда меня заставляли писать на шарпе, проверяли - JET4.x есть даже в "чистой" ХР (и в Висте)
MTsv DN (2009-09-07 20:09:00) [8]> И err вроде бы не нужен.
ERR нужен ВСЕГДА, когда используешь try...except (finally)...endl; А ошибка та же, т.к. вылет похоже в системной библе.
Повторяю:
> А во-вторых. Вы уверены, что у Вас V.CompactDatabase вообще
> работает...у меня, таки нет. Попробуйте-ка проверить: http:
> //support.microsoft.com/default.aspx?scid=kb;en-us;295334
> . У меня "Error compressing database..."
Dy1 (2009-09-07 20:04:00) [9]на V.CompactDatabase(Src, Dest); эксепшен oleaut32.dll
И err вроде бы не нужен. По крайней мере ошибка та же.
Спасибо за OleInit
MTsv DN (2009-09-07 19:19:00) [10]Наверное, это из-за того, что у меня Access не установлен...
MTsv DN (2009-09-07 19:18:00) [11]Во-первых:
uses ..., err,...
.
.
.
KOL.OleInit;
try
V := CreateOleObject('jro.JetEngine');
if @V <> nil then
V.CompactDatabase(Src, Dest);
finally
V := 0;
end;
KOL.OleUnInit;
Так будет правильнее код.
А во-вторых. Вы уверены, что у Вас V.CompactDatabaseвообще работает...у меня, таки нет. Попробуйте-ка проверить: http://support.microsoft.com/default.aspx?scid=kb;en-us;295334. У меня "Error compressing database..."
Dy1 (2009-09-07 18:25:00) [12]www.dy.cdrrhq.ru/t1.rar
Dy1 (2009-09-07 17:55:00) [13]это практически тестовый проект :\ Только ещё модуль KOLComObj;
переизвращался с примера на VCL
MTsv DN (2009-09-07 15:13:00) [14]Тестовый проект? Я, например, не работаю с БД.