|
▼小僧 さん:
こちらにも丁寧なご回答ありがとうございます。
>ワークテーブル、クエリについて
>いくつか疑問やご質問をされていましたが、
>その前に少し説明させて下さい。
>
>
>ツールバーの [ツール] ⇒ [オプション] ⇒ [表示]タブに
>
>システムオブジェクト というチェックボックスがあるので、
>それにチェックをつけて、データベースウィンドウのテーブル欄をご覧になって下さい。
>MSys〜 というテーブルが出現したかと思われます。
>
>その中のMSysObjects というテーブルを開いてみると
>各種オブジェクトが格納されています。
>
>Name と Type から色々推測できると思いますが、
>例えば Type=1 はテーブル、Type=-32768 はフォームのようですね。
>
>さて、Type=5 に関してなのですが、
>通常のクエリの他 ~TMP から始まるものがありませんでしょうか。
>
>クエリの実態として存在していなくても
>例えばコンボボックスの値集合ソースなどにSQL文を選択すると
>Access上では名前をつけてクエリとして管理しています。
>
>
>VBAにてアクションクエリやテーブル定義クエリを発行する分には
>こちらに登録される事はないかと思われます。
ご提示通りやってみました。
~sq_cから始まるものは多かったのですが、 ~TMP はないようです。コンボボックスでSQLは使用しているのですが・・。
でも以前作ったデータベースからコードやクエリをコピーして変更し利用したりが多いせいか、このデータベースにはありえない名前のクエリがあったりします。。
きちんと作らないとだめですねー。
>
>またもう1点、はっきりと確証がある話ではないので申し訳ないのですが
>大量のデータを持つテーブルを削除してもMDBの容量があまり変わらず、
>最適化をするとファイルサイズが小さくなる事を体験された事はありませんか?
>
>こちらについてはユーザには見えない「削除FLG」みたいなものが存在し
>MDBの最適化をするタイミングで削除FLGの立っているレコードを
>消去しているのではないかと思われます。
>> テーブル作成クエリを走らせようと思ってます。
>
>この様な仕様ですと、R_紹介状 が開かれるたびに
>同じ名前のテーブルが削除 ⇒ 作成される事になり
>また上記の推測から最適化されていない状態ですと
>同一のName、Typeを持つレコードが
>システムテーブル:MsysObjects上にいくつも存在する事になります。
>
>これが原因なのかははっきりとは解りませんが
>同一の名前のオブジェクトを何回も作ったり消したりしていると
>MDBファイル自体の破損に繋がる可能性が高いです。
よく破損するのですが、ここらへんが原因でしょうか・・。
>
>
>今回の様な場合は R_紹介状 を開くたびに
>ワークテーブルのフィールド名が変わる事はなさそうですので
>あらかじめ WT_紹介状用 を用意しておき、
>
>WT_紹介状用 の 全レコード削除 ⇒ 必要なデータの挿入
>
>の方が安定した運用ができるかと思われます。
アドバイス参考にします!
>
>
>番号以外のデータをいったん WT_紹介状用 に格納し、
>(その際にオートナンバーでも良いので主キーをかならず設定して下さい)
>
>社員コードでソートしたレコードセットを Loop で回しながら
>番号を更新していく方法もあります。
Loop・・・これはまだ使ったことのないテクニックです。
勉強しなくては・・。
>
>> できればあまりクエリを増やしたくないなーと思いまして・・。
>> わけがわからなくなってくるので。
>
>今回、便宜上 SQL文の中でクエリ名を指定してしまいましたが、
>これもクエリのパフォーマンスを落とす原因になってるかもしれません。
>
>MSサポートオンライン
>Access 2000 でクエリを最適化する方法
>h tp://support.microsoft.com/kb/209126/ja
>
>正直、難しいことも多々書いてありますが
>「クエリのパフォーマンスを改善するためのヒント」 あたりが
>ご参考になるかと思われます。
いろいろと教えていただきありがとうございます。
参考にします。
って、む、難しいのですか・・!?
ちょっと理解力に難ありのわたしですが・・。がんばります。
|
|