• 締切済み

ACCESSのフィールドサイズについて

ACCESSのフィールドにOLEオブジェクト形式で写真データを格納しているのですが、この写真のサイズ(KB)を取得できるのでしょうか?

みんなの回答

noname#185804
noname#185804
回答No.3

環境の違いか私が間違えてるだけなのか分かりませんが O_cyanさんの記載方法ではACCESSマクロでファイルサイズが 取得出来なかったので訂正させて頂きます。 Dim Fso As New FileSystemObject Dim MyFile As File Dim MySize As Long  'ファイルサイズがバイト単位で返るのでIntegerでなくてLongに。 Set MyFile = Fso.GetFile(ファイルのフルパス) MySize = MyFile.Size 'ファイルサイズがバイト単位で返ります Set Fso = Nothing '注*1 注1:Set Fso = Nothing が無くても コード終了時に自動的にNothingされるが 私は念の為に付けるようにしています。 尚、FileSystemObjectを使用する場合はマクロの参照設定で Microsoft Scripting Runtimeにチェックを入れて下さい。 他にFileLen関数を使用しても可能かと Dim MySize As Long MySize = FileLen("C:\My Documents\db1.mdb") 'ファイルサイズがバイト単位で返ります また、APIのGetFileSize等でもファイルサイズを取得出来ますが FileSystemObjectやFileLen関数の方がコードが短く簡単です。

kurimame
質問者

お礼

ありがというございます。 参考になりました。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>OLEオブジェクト形式で写真データを格納しているのですがこの写真のサイズ(KB)を取得できるのでしょうか OLEオブジェクトではその写真のバイナリデータを格納しているのでその中からでは出来ません。 VBで通常はFileSystemObject等を使って写真のファイルサイズなどを取得します。 Dim Fso As New FileSystemObject Dim MyFile As File Dim MySize As integer MyFile = Fso.GetFile("写真のフルパスとファイ名.拡張子") MySize = FsoFile.Size こんな感じで取得するようになります。

kurimame
質問者

お礼

ありがというございます。 参考になりました。

noname#182251
noname#182251
回答No.1

できないと思いますが、この点に自信はありません(^^; で、代案として 1.格納時に元データのサイズを取得し記録しておく 2.OLEオブジェクト形式をやめ元データを特定のフォルダに格納すると共に、そのファイルパスをデータベースで管理する 特に、2.の方法がお勧めです。現在約8千枚(将来は数万枚)の画像を管理していますがOLEオブジェクト形式は何かと不便です。たとえばファイルパス方式ならば、1ドライブに格納しきれない大量のデータを複数ドライブに分散できるなど。またレタッチ時にオリジナルデータを残す操作なども簡単にできます。

kurimame
質問者

お礼

ありがとうございます。 参考になりました。

関連するQ&A

  • ACCESS97のファイルサイズ

    OLEオブジェクト型の4つのフィールドに写真をそれぞれ登録(1つは10KB程度)、その他いくつかのフィールドは日付、テキスト型のフールドでデータを登録しています。 わずか20件程入力したところで、最適化後にファイルサイズを確認すると、10MBです。と言うことは、単純計算で1レコード当たり500KBです。何かサイズを小さくする方法はあるでしょうか? 因みに、テーブルのみのサイズです。 宜しくお願いします。

  • 写真付きのデータベース構築について(Access97)

    Access97を利用しています。 アクセスにはあまり詳しくないのですが、写真付きの商品台帳を作ろうとしています。 写真は1枚60kb程度で商品も200点ほどなのですが、 入力用フォームでOLEオブジェクト型の所にコピー&ペーストで貼りつけて 入るのですが、データーベース自体のファイルが100MB以上の大容量になってしまいます。  1枚60KB×200枚で12MB前後のファイルサイズを想像していたので驚いています。 写真を簡単に貼りつけ出来て、ファイルがあまり大きくならないようなやり方があるのでしょうか? 現在のやり方はテーブルで ・商品マスタ ID 主キー設定 商品番号  テキスト形式 商品名   テキスト形式 写真    OLEオブジェクト型 を作り、フォームでウィザードの単表形式で作ったものを呼び出して、 写真をコピペしています。

  • Accessの日付フィールドデータの取得について。

    VbScriptでオブジェクトに、Accessの日付フィールドデータを取得するのですが、その際、 "YYYY/MM/DD HH:MM:SS" の形式で取得するにはどのようにしたらよいのでしょうか。 よろしくお願いします。

  • Access OLEオブジェクト型のフィールドをエクスポートしたい

    Access2002でテーブルのエクスポート/インポート機能を追加しようと考えています。 テーブルにはOLEオブジェクト型のフィールドがあります。 これをExcelにエクスポートしたいのですが、TransferSpreadsheetだと OLEフィールドは空白となってしまいます。 また、ファイルメニューから手動でエクスポートしても同じ結果となります。 OLEオブジェクトはエクスポート(インポート)できないのでしょうか。 「テーブルに画像を保存するのは・・・」とのご意見もあると思いますが、 現在の仕様で変更できないので、それは別としてお願いします。

  • AccessのOLEオブジェクトについて

    いつも大変お世話になっております。m(_ _)m Accessで以下のようなDBを作りました。 (1)Access2003で、OLEオブジェクト型のフィールドを作る。 (2)OLEオブジェクト型のフィールドプロパティは以下のように設定  1)OLEサイズ・・・クリップ  2)OLE表示の種類・・・アイコン  3)OLE更新設定・・・自動  4)作成可能OLE・・・リンク (3)このフィールドには、TIFファイルを挿入していきます。  (2)の設定により、オブジェクトの挿入時は  指定したパスにあるファイルをリンクで結び、  アイコンが表示されます。 Access2003のPCで設定したオブジェクトは、どのバージョンのPCからも閲覧できます。しかし、Access2000のPCで同じことをやろうとすると、オブジェクトの挿入はでき、2000のパソコンではダブルクリックで閲覧可能ですが、2000で設定したオブジェクトを2003で見ようとすると 「OLEサーバーが登録されていません」 「OLEサーバーを再セットアップしてください」 と出て開くことができません。 これはどういうことなのでしょうか? まとめます。 ・2003で挿入したオブジェクトは、  2003でも2000でも閲覧可能。 ・2000で挿入したオブジェクトは、  2000では見れるが、2003では見られない。 ・エラー内容は、「OLEサーバーが登録されていません」です。 どうしたらいいのか教えてください。 よろしくお願いします。

  • Accessのフィールドサイズ

    Access2000を使用していますが、テーブル作成時に 「テキスト型」でフィールドサイズを「10」に設定して データを入力すると、半角でも全角でも「10桁」までの入力に なりますが、フィールドサイズは半角も全角も関係ないのでしょうか? 「テキスト型」の最大フィールドサイズは「半角255文字」と 思っていたのですが、全角でも255文字入力できました。

  • アクセス:名簿データベースにjpeg写真を貼り付けたい

    お世話になります。 アクセス初心者です。教えてください。 ◆(やりたいこと) アクセスのテーブルに名簿データベースがあります。 その中に「写真」フィールドにjpegの写真を貼り付けて印刷をしたいのですが、やり方がわかりません。 ◆(やってみたこと) (1)「写真」フィールドのデータ型を「OLEオブジェクト型」にして、それぞれの写真欄に「オブジェクトの挿入」→「ファイルから」でjpeg写真を挿入 (2) オートレポートで単票型を作成してみたが、写真が表示されない。 業務で急いでいます。お助けをください。ご指導お願いいたします。

  • Access  フィールドサイズ

    ExcelからAccessへインポートする際にテキスト型のフィールドサイズは255となりますが、複数のフィールドを一度に同じサイズにする方法はありますでしょうか? 基本的なことかと思いますがよろしくお願いします。

  • アクセスでフィールド入替えのVisualBasic

    アクセス2000で作成したテーブルに現在「場所」というフィールドがあります。 このフィールドのデータ型を「OLEオブジェクト」から「テキスト型」に変える「VisualBasic」の書き方を教えてください。 [現在ある"場所"を削除してから・・・ tbl.Columns.Append colAdo Set colAdo = New ADOX.Column With colAdo .Name = "場所" .Type = adVarWChar .Attributes = adColNullable End With 上記を追加する形になるのでしょうか? お願いいたします。

  • Access2003にてあるフィールドのデータ型を

    Access2003にてあるフィールドのデータ型を 『数値型:単精度浮動小数点型』にして書式を『固定(0.00)』 にしてデータ格納しているのですがExcelVBAでSQL(SELECT文)を使って抽出すると すごい桁数(小数点以下)で出てきます どのようにすれば小数点以下2桁でデータ取得できますか?