Конференция "KOL" » сжатие mdb [Delphi, Windows]
 
  • Dy1 (07.09.09 13:15) [0]
    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;

  • MTsv DN (07.09.09 15:13) [1]
    Тестовый проект? Я, например, не работаю с БД.
  • Dy1 (07.09.09 17:55) [2]
    это практически тестовый проект :\ Только ещё модуль KOLComObj;
    переизвращался с примера на VCL
  • Dy1 (07.09.09 18:25) [3]
    www.dy.cdrrhq.ru/t1.rar
  • MTsv DN (07.09.09 19:18) [4]
    Во-первых:
    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..."
  • MTsv DN (07.09.09 19:19) [5]
    Наверное, это из-за того, что у меня Access не установлен...
  • Dy1 (07.09.09 20:04) [6]
    на V.CompactDatabase(Src, Dest); эксепшен oleaut32.dll
    И err вроде бы не нужен. По крайней мере ошибка та же.
    Спасибо за OleInit
  • MTsv DN (07.09.09 20:09) [7]
    > И err вроде бы не нужен.
    ERR нужен ВСЕГДА, когда используешь try...except (finally)...endl; А ошибка та же, т.к. вылет похоже в системной библе.

    Повторяю:

    > А во-вторых. Вы уверены, что у Вас V.CompactDatabase вообще
    > работает...у меня, таки нет. Попробуйте-ка проверить: http:
    > //support.microsoft.com/default.aspx?scid=kb;en-us;295334
    > . У меня "Error compressing database..."
  • Dy1 (07.09.09 20:41) [8]
    ещё не так давно err нужен был для try...except и не нужен для try...finally.
    Работает, сжимает.
    Кстати, когда меня заставляли писать на шарпе, проверяли - JET4.x есть даже в "чистой" ХР (и в Висте)
  • MTsv DN (07.09.09 20:54) [9]

    > ещё не так давно 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. Поправьте меня...
  • MTsv DN (07.09.09 20:56) [10]
    Сам нашел. Действительно, поведение правильное. А для моего понимая надо использовать:
    Try
     Try
       ...
     Except
       ...
     End;
    Finally
     ...
    End;

  • Dy1 (08.09.09 11:50) [11]
    CreateOleObject не работает даже VCLьный
  • Vladimir Kladov © (09.09.09 22:39) [12]
    Dy1, я тоже недавно пробовал на шарпе. Если прога на шарпе идет в системе ХП, то это уже не "чистая", там как минимум .net Framework накатан, а в него уже невесть что входит, заодно и доступ к БД.
  • Dy1 (10.09.09 19:41) [13]
    поставил на виртуалку ХР СП3 - нужные провайдеры там уже есть.
    Нарыл JRO_TLB(без репликации) и ADO_TLB (под VCL наконец-то заработало), но как конвертировать?..
    Меня пока что устраивает KOLEdb, только к нему бы сжатие приКОЛоть...
  • Dy1 (13.09.09 18:30) [14]
    помогла древняя TLB2KOL.exe
 
Конференция "KOL" » сжатие mdb [Delphi, Windows]
Есть новые Нет новых   [134431   +11][b:0][p:0.001]