ここから本文です

ACCESSのテーブルのファイルサイズを調べる方法

aon********さん

2015/9/1910:55:00

ACCESSのテーブルのファイルサイズを調べる方法

ACCESSのファイルサイズが増え続けて2GBに近づいているのでファイルの分割を考えていますが、40ものテーブルがあり、どのテーブルを分離していいものかと困っています。
レコード数とフィールド数は調べられたのですが、書き込まれているのがメモ形式の文字データでその文量が不均一なので、レコード数とフィールド数が多いほうがファイルサイズが大きいとは一概には言えず、実際、どう見てもレコード数とフィールド数が少ないほうがファイルサイズが大きいものがいくつかあるのが明らかな状態です。
そこでテーブルそのもののファイルサイズを調べたいのですが、そのようなVBAの方法はないでしょうか。

閲覧数:
4,242
回答数:
3
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

bj2********さん

2015/9/2517:48:05

こんな方法でテーブルのバイト数が求められると思います。

テキスト型とメモ型の場合は、LenBで各フィールドの内容をバイト数に変えて累積し、数値型や日付/時刻型は既定のバイト数を足して、全レコード分を足し終えたらテーブル名と共に、イミディエイト欄に表示しています。

Public Sub Table_Byte_List()

Dim DB1 As Database
Dim TD1 As TableDef
Dim RS1 As Recordset
Dim FD1 As Field
Dim Byte_Su As Long

Set DB1 = CurrentDb()
For Each TD1 In DB1.TableDefs

Byte_Su = 0

If TD1.Attributes = 0 Then

Set RS1 = DB1.OpenRecordset(TD1.NAME)
Do Until RS1.EOF

For Each FD1 In RS1.Fields

Select Case FD1.Type

Case dbText, dbMemo
Byte_Su = Byte_Su + LenB(Nz(RS1(FD1.NAME), ""))

Case dbByte
Byte_Su = Byte_Su + 1

Case dbInteger
Byte_Su = Byte_Su + 2

Case dbSingle, dbDate, dbLong
Byte_Su = Byte_Su + 4

Case dbDouble
Byte_Su = Byte_Su + 8

'他のデータタイプは省略


End Select
Next

RS1.MoveNext
DoEvents
Loop

RS1.Close
Debug.Print TD1.NAME, Byte_Su

End If

Next
DB1.Close

End Sub

質問した人からのコメント

2015/9/26 22:23:29

この方法で試してみます。ありがとうございます。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

rou********さん

2015/9/2023:52:24

どのような運用かわかりませんが、通常、日常運用しているのであれば
テーブルを正規化しても、どんどんデータは増えていきますよね。
つまり、いつ2GBの壁を越えてもおかしくないです。

これを機にMySQLなどのDBに切り替えてみるのを検討してみるのはいかがでしょうか?
ただ、MySQL、Postgress等もクセがあるので、細かく調べなければいけないです。

glo********さん

2015/9/1915:26:45

ありません。

概算でなら
↓各フィールドの使用バイト数
https://support.office.com/ja-jp/article/%E3%83%95%E3%82%A3%E3%83%B...
https://support.microsoft.com/ja-jp/kb/824263
等を参照し概算します。
メモ型やOLE型とかがあったら想定できる平均値で超概算算出するしかありません。
それ以外にもインデックス情報を記憶する部分もあるでしょう。
ACCESSのシステムが使用する作業用領域などもあるでしょう。

ともかく
テーブルがいくらあったとしてもSEと呼べる人がいたら、どのテーブルが容量が大きく使用頻度が高いか分かるはずです。
それでも最大容量2GBに不安があるのでしたら、ACCESSにしたのはDBの選択ミスと言わざるをえません。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる