accdbファイルを成績データベースとして,入力インターフェイスにExcelをもちいてデータベースシステムを運用しています.
ユーザーがaccdbファイルに接続する時間は1秒未満になるようにしたり,ユーザーがデータベースに書き込みするときは排他接続するなどして,複数ユーザーが直列処理になるようにしています.これで同時利用者が数十名でもファイルは壊れませんでした.
ですが,ファイルが肥大化して,年度初め10MBだったのが学期末には40M近くになっていました.バックアップ世代をとっていることもあり,ちょっと困るなと思い,手動でAccessアプリケーションによる最適化を行いました.
システムはADOで作っているので各ユーザーの入力作業ではAccessアプリケーションは基本的に使いません.ただ,学期末処理をする際にExcelからAccessアプリケーションを呼び出してある資料をレポート出力します.
そこで質問です.accdbファイルをAccessアプリケーションで開いてオプションで「閉じるときに最適化する」にチェックしておけば,ExcelVBAからaccdbファイルを開いて閉じたときに自動的に最適化されるのですか.
No.3ベストアンサー
- 回答日時:
「入力インターフェイスにExcel」
「同時利用者が数十名」
「ADO」で接続してデータ操作
「閉じるときに最適化する」にチェックしておいて、
「ExcelからAccessアプリケーションを呼び出してある資料をレポート出力」
という運用を考えているのですね。
No1、No2の回答でも言われてますが、ADOで接続して接続を閉じただけでは最適化されませんし、CreateObject で Access を起動しているのなら、Accessオブジェクトを閉じた時に最適化されます。
ただし、このような運用は、非常に危険だと思います。
例えば、誰かが ADOで接続してデータ操作しているときに、別のユーザーがレポートを印刷して閉じて最適化されたら、どうなるのか。
あるいは、二人がほとんど同時にレポートを開き印刷後閉じて、同時に最適化が始まったら、どうなるのか。
accdbファイルが破損する危険性が非常に高い運用だと思います。
最適化に失敗してデータファイルが消滅したという報告をまれにWEBでみることもあります。
レポートを印刷するたびに最適化を繰り返すというのはやはり破損の危険性を高めます。
No1の回答で紹介されているリンク先
http://office.microsoft.com/ja-jp/access-help/HA …
でも、
> ネットワーク上で複数のユーザーが単一のデータベース ファイルを共有する場合を除き、最適化と修復を自動で行うようにデータベースを設定します。
というようにファイルを共有している場合は、最適化を自動で行うのは推奨していません。
accdbファイルを置いているサーバーが常時電源オンになっているなら、深夜など誰も使用していない時に、あるいは毎朝、電源を入れるならPC起動時に、自動で最適化するようにするのがいいかと思います。
安全性を重視するなら、バックアップをとってから最適化するようにするのがよりいいでしょう。Accessにおいては定期的なバックアップは必須です。
具体的な方法としては、Windowsのタスクで、上記のリンク先の最適化ショートカットのコマンドを実行させるようにします。
No.2
- 回答日時:
> そこで質問です.accdbファイルをAccessアプリケーションで開いてオプションで「閉じるときに最適化する」にチェックしておけば,ExcelVBAからaccdbファイルを開いて閉じたときに自動的に最適化されるのですか.
> ただ,学期末処理をする際にExcelからAccessアプリケーションを呼び出してある資料をレポート出力します.
CreateObject で Access を起動し、
OpenCurrentDatabase で accdb を開いてレポートを印刷する、
ということなら 最適化されます。
簡単なテストで確認できます。
参考まで。
オートナンバー型のフィールドを含む 「テーブル1」 を作成し、
データを数件入力します。
全件削除し、
再び入力し、オートナンバーが削除前の続きになることを確認します。
さらに数件入力してデータベースを閉じます。
Excel VBA で、次のコードを実行します。
Sub test()
Dim appAcc As Object
Dim strSQL As String
Set appAcc = CreateObject("Access.Application")
appAcc.OpenCurrentDatabase ThisWorkbook.Path & "\Sample.accdb"
appAcc.Visible = True
strSQL = "DELETE FROM テーブル1"
appAcc.DoCmd.RunSQL strSQL
appAcc.Quit
End Sub
Sample.accdb に テーブル1 があり
同じフォルダに Excel ファイルがある場合の例です。
環境にあわせて書き換えてください。
実行後に DB を開き、
テーブル1 のデータが削除されていることを確認、
データを入力すると、オートナンバーが リセットされていることが確認できます。
これは 「最適化」 の効果によるものです。
No.1
- 回答日時:
>accdbファイルをAccessアプリケーションで開いてオプションで
>「閉じるときに最適化する」にチェックしておけば,
>ExcelVBAからaccdbファイルを開いて閉じたときに自動的に最適化されるのですか?
ADOで接続して・・でしたら最適化は行われません。絶対に。
最適化を行っているのはMSACCESS.EXEです。
ExcelからADOで接続しているだけでしたらAccessは蚊帳の外です。
Access がインストールされているのなら、
起動オプションの Compact で済ませる手もあるかも知れません。
http://office.microsoft.com/ja-jp/access-help/HA …
の最後の方。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- その他(Microsoft Office) こんにちは。Windows10でaccess(拡張子accdb)を右クリックし、プロパティ→全般タブ 1 2023/02/03 19:14
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- グループウェア Macでオープンオフィスが開きません 1 2023/01/14 14:22
- Excel(エクセル) Excel使用前提 同じフォルダ内にあるファイルの集約等をマクロでできますか 4 2022/09/06 19:03
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
badファイルの内容を知る方法
-
バッチでAccessのmdbファイルを...
-
mysqlへアップするデータ容量は...
-
SQLServer2005 セカンダリファ...
-
mysqlをバックアップして違うサ...
-
sqlファイルを分割するソフトは...
-
SQLServerのselect文でデータ数...
-
あるDBから別のDBのテーブルをs...
-
PL/SQLをWindowsのBATファイル...
-
html上でMySQLにアクセス(Java...
-
sql*loader 数値のロード
-
データベースの複製の仕方(mysql)
-
mySQLのデータベースにhtmlのコ...
-
二重に記載されてしまう
-
数字で「そ」と「り」
-
この場合 JOIN . SELECTはでき...
-
MySQL 192.168.0.1の端末から 1...
-
csv形式のファイルをダウンロー...
-
AVGのインストールができません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースファイル(.db)を開...
-
同じSQL文で極端に検索が遅くな...
-
DBファイルの中身を直接見れな...
-
Access2010でアクセス制限をしたい
-
ODBCを使用する場合のファイルD...
-
サーバーに接続できない
-
htmlフォームから受け取ったフ...
-
sqlファイルを分割するソフトは...
-
パラメータファイルが壊れたと...
-
バッチでAccessのmdbファイルを...
-
badファイルの内容を知る方法
-
SQL*Loaderで桁数チェック
-
ダンプファイルから特定のテー...
-
batでsqlplusによる前月データ...
-
こんにちは。Access上でExcelデ...
-
SQLデータベースへのリンクがあ...
-
accdbファイルの最適化
-
mysqlのcsvファイル出力について
-
rmanで別ホストへリストアする...
-
Notesの「notes.ini」内の環境...
おすすめ情報