5

背景: MS Access ADP フロントエンドを備えた古い (しかしビジネスに不可欠な) SQL Server データベースがあります。これはもともと、一連の Access データベースから SQL Server にアップサイズされたものです。

このデータベースは、お客様のために危険物を追跡し、多数の画像を保存します。これらの画像は MS Access から挿入され、OLE オブジェクトとしてデータベースに入れられます。

問題は次のとおりです。

  • これらは Access/Office 以外で読むのが面倒です
  • 大規模なストレージ オーバーヘッドがあります - 10 GB までの画像が 600 GB 以上のストレージ スペースを占有します (!)

私の質問は次のとおりです。これらの肥大化したオブジェクトを単純な JPEG に戻すには、どのような方法をお勧めしますか? これを行うと、最終的にフロントエンドを Access から単純な Web ベースのシステムに移行できるようになり、バックアップ時間が再び管理しやすくなります!

4

4 に答える 4

5

ここから *.bas ファイルを取得します http:http://stackoverflow.com/Content/img/wmd/ul.png//www.access-im-unternehmen.de/index1.php?BeitragID=337&id=300 (残念ながらドイツ語です)。

MS の GDI+ ライブラリ (Win の標準インストールに含まれています) を使用して、Access OLE との間で写真をインポート/エクスポートします。

インターフェイスの大まかな翻訳:

  • IsGDIPInstalled: GDI+ のインストールを確認します
  • InitGDIP: GDI+ の初期化。
  • ShutDownGDIP: GDI+ の Deinit (使用することが重要です!)
  • LoadPictureGDIP: StdPicture オブジェクト (bmp、gif、jp(e)g、tif、png、wmf、emf、ico) に pic を読み込みます。
  • ResampleGDIP: pic を新しい寸法にスケーリングし、必要に応じてシャープにします。
  • MakeThumbGDIP: サムネイルを作成し、境界線を色で塗りつぶします。
  • GetDimensionsGDIP: TSize-Struktur の寸法をピクセル単位で取得します。
  • SavePicGDIPlus: 画像オブジェクトを BMP、GIF、PNG、または JPG (指定された品質の jpg) としてファイルに保存します。
  • ArrayFromPicture: picutre のバイト配列を返し、pic をテーブルの OLE フィールドに入れます
  • ArrayToPicture: ピクチャを含むテーブルの OLE フィールドのバイト配列を作成します
于 2008-09-22T11:42:27.917 に答える
1

Access MVP Stephen Lebans ExtractInventoryOLEツールを使用して、テーブルからOLEオブジェクトを抽出してファイルを分離します。

http://www.lebans.com/oletodisk.htm

Lebansによると:「オブジェクトを挿入するためにOLEサーバーとして機能した元のアプリケーションは必要ありません。すべてのMS Officeドキュメント、PDF、MS Photo Editor、MS Paint、およびPaintShopProによって挿入されたすべての画像をサポートします。元のファイル名を含むPACKAGEクラス。」

また、Access 2007はOLEオブジェクトを以前のバージョンの従来のBMP形式よりもはるかに効率的に保存するため、SQLServerの600GB以上のストレージからAccessに変換した場合、ストレージスペースが小さくなり、Accessアプリを保持できます。 2007accdb形式。バックアップ時間は管理可能であり、AccessフロントエンドをWebフロントエンドに変換するために時間を費やす必要はありません。

于 2008-09-22T11:59:22.867 に答える
1

ここに再びリンクがあります: http://www.access-im-unternehmen.de/index1.php?BeitragID=337&id=300

于 2008-09-22T11:44:10.563 に答える
0

データベースが非常に肥大化する理由は、JPEG が挿入された方法に応じて、JPG も「OLE オブジェクト」構造内にビットマップとして格納されているためだと思います。

これは最適ではありませんが、データベース内のすべての画像に対して、画像だけを含むダミーの .doc をプログラムで作成し、それを OpenOffice 変換に渡し、生成された OpenOffice ドキュメントの images サブフォルダーから JPEG を抽出します (これはZIP ファイル)。

次に、データベース内の OLE ドキュメントを生の JPEG データに置き換えますが、それをカスタム アプリケーションで簡単に表示する方法はありません (Web アプリでない限り)。

于 2008-09-22T11:41:15.843 に答える