OleVariantで立ち上げた Accessのちらつき解消

解決


笹団子  2012-05-29 05:44:00  No: 42356

AccessをADO接続して利用しています。
長く使っているうちに、DBサイズが肥大してきますので、最適化を組み込みました。
最適化処理そのものはうまくいっているのですが、Quit処理で一瞬Accessが表示されてすぐ閉じるため、画面がちらついたように見えます。回避する方法がありましたら教えてください。

procedure TForm1.ActionCompactExecute(Sender: TObject);
var
  AccessVariant : OleVariant;
  DBName, tmpDBName, Ext : string;
begin
  Screen.Cursor := crSQLWait;
  AccessVariant := CreateOleObject('Access.Application');
  DBName :=  'Testdb.mdb';
  // get new name
  Ext := ExtractFileExt(DBName);
  tmpDBName := ChangeFileExt(DBName, '');
  tmpDBName := tmpDBName + ' ' + FormatDateTime('MMDDYY',Date) + Ext;
  try
    // call compact function
    AccessVariant.DBEngine.CompactDatabase(DBName, tmpDBName);
    //original 仮セーブ
    RenameFile(DBName, '_tempBackUp.mdb');
    // copy newly compacted db
    CopyFile(PChar(tmpDBName), PChar(DBName), false);
    // delete temp file db
    DeleteFile(PChar(tmpDBName));
    // delete original db
    DeleteFile('_tempBackUp.mdb');
    if Active then MessageDlg('最適化を完了しました.', mtInformation, [mbOK], 0);
  except
    MessageDlg('最適化に失敗しました!' + #13#10 +
               '他のパソコンで使用中と考えられます', mtWarning, [mbOK], 0);
  end;
  AccessVariant.Quit;  //ここで一瞬Accessが立ち上がって閉じるためにちらつきが出る
  Screen.Cursor := crDefault;
end;


takana  2012-05-29 06:23:19  No: 42357

最後の3行を以下にしてみれば?

CloseWindow(AccessVariant.hWndAccessApp); //Accessをアイコン化する
AccessVariant.Quit;  //ここで一瞬Accessが立ち上がって閉じるためにちらつきが出る
Screen.Cursor := crDefault;


笹団子  2012-05-29 14:26:51  No: 42358

うまくいきました  )^o^(
takanaさんありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加