ACCESS超初心者のものです。
ACCESS97を使用しています。
設計していると、ファイルの大きさがどんどん大きくなってしまい
平気で5M位になってしまいます。
みなさんはどのように対処しているのでしょうか?

[ツール][データベース ユーティリティ][最適化]をすると
1/5位になるので、メニューフォームに閉じるボタンを作り
それを押すと、最適化してDBを終了するようなことはできるのでしょうか?

教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

私が対応している方法をお知らせします。


1.最適化するためのmdbを作成して対応
 自分自身を最適化出来ないので、他のmdbから最適化する為に
 最適化したいmdbのあるパスとmdbを指定すれば最適化してくれる
 最適化のmdbを作りました。そのmdbを自動で起動するように
 終了の際にマクロで指定しています。

2.フリーソフトを使う
 VECTERのHPで見つけたフリーソフトを使っています。
 最適化、BACKUPを行ってくれるソフトで、前記の1と同様に終了時に
 そのフリーソフトが起動するようにしています。VB5で作られています。
 マクロで最適化するmdbを指定してしまうので、ユーザは最適化している
 事を意識せずにすむので使い勝手はいいです。

どちらの場合もアプリケーションで最適化のプログラムを起動しますので
マシンのインストールの状況に合わせてマクロを修正するか、インストール場所を
限定しなくてはならないという制限があります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
>自分自身を最適化出来ないので、他のmdbから最適化する為に・・・
そうなんですか。
ですから、皆さんバッチファイルとかを使用しているのですね。
フリーソフト探したけれど見つかりませんでした。
教えていただけると助かります。

お礼日時:2001/05/11 14:24

Ryokuchaさんのご指摘通り起動しているMDBは最適化することが出来ません。


/compactはAccessの起動時に使うオプションで最適化しなさいというコマンドになります。
ヘルプでは"Startup コマンド ライン オプション"と検索すれば説明が見れます。
以下超荒技の最適化方法を提示します。(バッチファイル版)
CD "MDBが有るフォルダ"
FOR %%FN IN (*.MDB) DO
start /w "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" "%%FN" /Compact
このバッチは指定されているフォルダにある全てのMDBファイルを最適化します。
    • good
    • 0

設計をなさっている、ということはフォームやレポート等の作成・修正がまだまだ続くんですね。



この場合に、「テーブルなどデータ部」と「フォームやレポートなどのコード部」を分けると便利です。

テーブルを「リンクテーブル」にしておくんです。(別MDBの参照)

こうするとバックアップ作成など、楽になりますよ。
    • good
    • 0
この回答へのお礼

なるほどですね。ありがとうございます。
最適化はどうでしょうか?

お礼日時:2001/05/11 13:59

ちょっと前に同じような質問が有りますのでこちらを参照して下さい。


キーワードはcompact、バッチファイルです。

参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=72903
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
>キーワードはcompact、バッチファイルです。
ごめんなさい。バッチファイルはわかりますが、compactの使い方が
ヘルプを見たのですけれどよくわかりません。
イベントプロシージャでどのように書くのでしょうか?

お礼日時:2001/05/11 13:58

私の場合は、別のMDBでVBAからそのMDBを最適化しています。

このときにバックアップも自動でとるようにしていますので、一日の業務の終わりには毎回実行してもらっています。

Access2000だと閉じるときに最適化というオプションがあります。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
他のMDBではなく、そのMDB自身でできないでしょうか?

お礼日時:2001/05/11 13:55

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

Q[Oracle][IBM DB2][SQL Server]の違いと適性

現在、Accessで業務アプリケーションを作成しているのですが、そろそろパフォーマンス的にも限界で、というかC/S環境でAccessを使っていること自体危険ですね…

ここでデータベースをグレードアップしようと思っています。
しかし、データベースと言ってもたくさんあり、どれがいいのか
迷っています。

現在、商用RDBMSでは[Oracle][IBM DB2][SQL Server]がメインとの
ことですが、これらの違いが分かりせん。

うちの規模は社員数が40人程度です
Oracleは大規模システム向けと聞いた事があるのですが、
それであれば、IBM DB2かSQL Serverなのでしょうか

御教授宜しくお願いします。

Aベストアンサー

SEじゃないですけど、現状でどの辺りがボトルネックになっているかまず分析する必要がありますよ、案外ハード(サーバー本体)の方がいっぱいいっぱいてこともありますから、仮にHDDのディスクアクセスの場合シリコンディスクに置き換える、メインメモリの増設などがあります。逆にソフト側(MSアクセス)で同時接続多・同時更新多・データ肥大化の場合はやはりDBエンジンを変更するしかないでしょう。自社で開発するなら(情報量の多い)SQLServer。外注の場合は先方によって得手不得手がありますので一概には言えませんがオラクルでしょうこれしかないです(規模は関係なし)。DB2は使ったことがありません。他にもたくさんデータベースエンジンがありますので・・・

参考URL:http://ja.wikipedia.org/wiki/関係データベース管理システム

QAccess97で自動で最適化するには…

起動していて、終わるとき右上の×マークをクリックしたとき最適化をして閉じたいのですがそんなことできますか?初心者なので、できれば詳しく手取り足取り教えてもらえたら光栄です。よろしくお願いします。

Aベストアンサー

すでに回答が出ているとおり、Access97は終了時に最適化を行ってくれません。
私が業務で開発するMDBは以下のようにして実現しています。

A.mdb ---- いわゆる普通のDB
B.mdb ---- 最適化ユーティリティMDB
これらを同じフォルダに入れておく。
A.mdb内に作ったメニューフォームの[終了]ボタンを押すとB.mdbが起動した後A.mdbが終了。
B.mdbは同じフォルダ内にあるA.mdbを最適化する。

--------
1. A.mdbの[終了]ボタン クリックイベント

2. CurrentDB.Name でA.mdbのフルパスを取得
例: strFullPath = CurrentDb.Name

3. (2)のフルパスからファイル名を取り除いたパスを取得

4. SysCmd(acSysCmdAccessDir) でAccess.exeのパスを取得

5. (4)Access.exeのパスと(3)のパスと「B.mdb」を連結してShell関数にてB.mdbを起動する。
例:RetVal = Shell(strAccPath & "MsAccess.exe " & myParentPath & "B.mdb", vbMinimizedNoFocus)

6. A.mdbを終了。「DoCmd.Quit acQuitSaveNone」
--------

B.mdbの標準モジュールにPublic Subプロシージャを作成し、以下の処理を書く。
--------
1. 念のためForステートメントで空ループして時間を稼ぐ。
例:
For i = 1 To 5000
DoEvents
Next i

2. B.mdbのフルパスを取得。※A.mdbの(2)と同じ処理

3. (2)のフルパスからファイル名を除いたパスを取得。

4. Access.exeのフルパスを取得

5. 別名保存のための一時的なファイル名を作成する。

6. データベースを圧縮する。
例:
DBEngine.CompactDatabase myParentPath & "A.mdb", myParentPath & myTmpFileName, dbLangJapanese

7. A.mdbを削除する。
例: Kill myParentPath & "A.mdb"

8. 圧縮後のMDBをA.mdbにリネームする。
例: Name myParentPath & myTmpFile As myParentPath & "A.mdb"

9. B.mdbを閉じる
--------

なお、B.mdbで「マクロ」を作成し、アクション「プロシージャの実行」で対象を先ほどのプロシージャにします。
このマクロの名前を「AutoExec」としてください。起動すると自動実行されます。

以上のようにするわけですが、PCのスペックによっては失敗する可能性もあります。(今のところそういった報告は受けてませんが)

すでに回答が出ているとおり、Access97は終了時に最適化を行ってくれません。
私が業務で開発するMDBは以下のようにして実現しています。

A.mdb ---- いわゆる普通のDB
B.mdb ---- 最適化ユーティリティMDB
これらを同じフォルダに入れておく。
A.mdb内に作ったメニューフォームの[終了]ボタンを押すとB.mdbが起動した後A.mdbが終了。
B.mdbは同じフォルダ内にあるA.mdbを最適化する。

--------
1. A.mdbの[終了]ボタン クリックイベント

2. CurrentDB.Name でA.mdbのフルパスを取得
例: strFull...続きを読む

Q[ACCESS][レポート]2列に印刷がしたい

ACCESSのレポートで、ひとつのテーブルの内容を、2列に印刷することは可能でしょうか?
たとえばA4ヨコの用紙で、印刷する項目が3つしかなかった場合、右に余白ができてしまうので、印刷する項目が用紙の下までいったら、次に右上からもう一列印刷をする、というようなことを実現したいのです。

Aベストアンサー

先日同じ質問に回答しました。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=250509

Q「[Microsoft][ODBC SQL Server Driver]COUNT フィールドが正しくありません。」えらーについて

おせわになります、

JavaからMSDEに対してSELECT UPDATE等の処理を行っているのですが。以下のSQLエラーが出てしまいます。
どのような意味なのでしょうか?
雰囲気としてはUPDATE文でおこっているような感じなのですが…

----エラーメッセージ------
[Microsoft][ODBC SQL Server Driver]COUNT フィールドが正しくありません。

よろしくお願いします。

Aベストアンサー

こんな情報がありましたという報告です。

「COUNT フィールドが正しくありません。」
で、検索をしたら同じような事例がありました。

2件ほどヒットしたのですが、どちらもテーブルのフィールド名を英数字にすることで解決しているようでした。

何故かというのは私にもわかりません。
お役に立つと良いのですが・・・

ちなみにヒットしたのは、「Goo」と「Google」です。
一度調べてみてください。(個人の情報っぽいのでURLは載せません。)

Q[Access2003]クエリのカスタム書式

◎クエリのカスタム書式が分からないです。
参考書(下記のフィールド名や入力データ名や書式プロパティは、著作権の関係もあり、名前を変えてあります。)
●例えば、「氏名」フィールドのセレクタをクリック→プロパティをクリック→書式プロパティ:「@\殿」と設定します。例えば、「東京太郎」と入力したものが…..→「東京太郎殿」の表示結果になります。
☆殿の前の「@」や「\」は、何でつける必要があり、「@」や「\」は、それぞれ、何を表してしますか?

*Access初心者なので簡潔に教えてくださったら助かります。

Aベストアンサー

対象がフォームかクエリかの違いはありますが、内容としては以下の質問と
かぶりますので、同時に説明させていただきます:
(私の説明で理解できましたら、そちらの質問は削除依頼を出して戴けたら
 と思います:
 もちろん、納得できなかった場合は、その限りではありません(汗))
http://oshiete1.goo.ne.jp/qa4899074.html


◎「\」および「"」について:

> \ 次の文字をそのまま表示します。文字をニ重引用符で囲んでも同じです。
(http://office.microsoft.com/ja-jp/access/HA012327501041.aspx
 から抜粋。フォームなどのプロパティシートの『書式』にカーソルをおいた
 状態でF1キーを押してヘルプを表示させても同様の内容が見られます)

つまり、『書式』プロパティでの「\殿」或いは「"殿"」という指定は、ともに
『「殿」という字をそのまま表示させる』、という意味になります。
(但し、「\」は後続文字が1文字の場合、「"」(二重引用符)は複数文字に対応し、
 Access2003では文字数に合わせて自動的に「\」と「"」が変換されるようです)


◎「@」について:

> @ 文字が存在する場合はその文字を、文字が存在しない場合は空白を表示します。
(http://office.microsoft.com/ja-jp/access/HA012327471041.aspx)

・・・と説明されていますが、では実際に『書式』プロパティに「@」なしで
「\殿」にしたら、フィールドやテキストボックスの値が表示されず「殿」だけに
なるかと思ってやってみると、そうはなりませんでした(汗)
(記録されたデータのみが表示され、「殿」の字は出てこない)

どちらかというと、「@」は、「記録されているデータと、書式で追加する
文字との、位置関係を指定するための記号」と言った方が実情に合っている
ように思います。

つまり、「佐藤」というデータが入っている状態で、書式プロパティが
「@\殿」なら「佐藤殿」となり、同じく「\殿@」なら「殿佐藤」になる、
ということです。



・・・以上、簡潔ではありませんが(汗)、参考まで。

対象がフォームかクエリかの違いはありますが、内容としては以下の質問と
かぶりますので、同時に説明させていただきます:
(私の説明で理解できましたら、そちらの質問は削除依頼を出して戴けたら
 と思います:
 もちろん、納得できなかった場合は、その限りではありません(汗))
http://oshiete1.goo.ne.jp/qa4899074.html


◎「\」および「"」について:

> \ 次の文字をそのまま表示します。文字をニ重引用符で囲んでも同じです。
(http://office.microsoft.com/ja-jp/access/HA012327501041.as...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報